fabric v1.4版本是Fabric的第一个长期支持版本(LTS)
新特性
1. 新增Raft排序服务
Raft
是一个基于etcd协议实现的崩溃容错的排序服务。Raft
遵循“leader 和 followers”模型,当一个领导者被选择的时候,它的决定会复制给所有的跟随者。Raft
排序服务比起基于Kafka
的排序服务更加容易启动和管理,同时,Raft
的设计模式允许世界上的所有组织为去中心化的排序服务贡献自己的节点。
2. 可维护性和运营的改进
目前越来越多的fabric联盟网络被用在了生产环境中,因此fabric的可维护性和可操作性变得更加重要,因此在1.4版本中对日志记录、运行状态检查和操作指标方面都做了对应改进。所以,1.4版本也是推荐在生产环境中使用的fabric发行版本。
操作服务:新的RESTful操作服务为操作者提供了三个服务,用于监控和管理peer节点和orderer节点操作:
2.1 日志相关/logspec
/logspec
端点允许操作者动态获取或者设置peer和orderer节点的日志等级,该端点就是传统的REST
资源支持GET
和PUT
;
当操作服务接收到Get /logspec
请求的时候,服务会响应一个包含当前日志说明的JSON
内容:
1 | {"spec":"info"} |
当操作服务接收到Put /logspec
请求的时候,服务将会读取请求主体作为JSON
内容。该内容必须包含一个名为spec
的单一属性:
1 | {"spec":"chaincode=debug:info"} |
如果spec
被成功激活,服务将会响应 204 “No Content”。如果出错,服务响应 400 “Bad Request”和错误内容:
1 | {"error":"error message"} |
2.2 健康监控 /healthz
/healthz
端点允许操作者和容器编排服务检查peer和orderer节点的存活和健康状态,该端点就是传统的REST
资源支持GET
请求。该实现主要为了与Kubernetes
的存活探测模型所兼容,但可以在其它场景中使用。
当接收到一个Get /healthz
请求的时候,操作服务会调用所有为该流程注册过的检查器(checker),当所有检查器成功返回,操作服务才会响应 200 “OK” 和一个JSON
主体:
1 | { |
如果存在一个或者多个健康检查器返回错误,则操作服务将响应 503 “Service Unavailable”和一个包含具体哪些健康检查器出错信息的JSON
主体
1 | { |
在当前版本,注册的健康检查只是针对Docker
,其它健康检查会在后续版本增强。
2.3 指标 metrics
metrics
端点允许操作者利用Prometheus
从peer
节点和orderer
节点拉取操作指标。指标也可以被推送到StatsD
。
peer
和orderer
中的一些构件会公开一些指标来帮助观察系统的行为。使得操作者和管理员可以更好了解系统是如何随着时间推移而执行的。
Fabric提供两种公开指标的方式: 基于”Prometheus”的拉取(pull
)模型和基于”StatsD”的推送(push
)模型
2.3.1 Prometheus
典型的Prometheus部署通过从由检测目标公开的HTTP端点请求它们来获取指标。由于Prometheus负责请求度量指标,因此它被认为是一个拉取系统。
peer
节点通过配置公开/metrics
端点。通过在core.yaml
中的metrics
部分设置metrics provider
为prometheus
。1
2metrics:
provider: prometheusorderer
节点通过配置公开/metrics
端点。通过在orderer.yaml
中的Metrics
部分设置metrics provider
为prometheus
。1
2Metrics:
Provider: prometheus2.3.2 StatsD
StatsD是一个简单的统计数据聚合守护进程。指标被发送到statsd守护进程,在那里它们被收集、聚合并推送到后端以进行可视化和警报。由于该模型要求被检测的进程将指标数据发送到StatsD,因此这被认为是一个推送系统。
peer
通过在core.yaml
文件中的metrics
部分将metrics provider
设置为statsd
,将指标发送给StatsD
。statsd
子部分必须配置StatsD
进程的地址,使用的网络类型tcp
或者udp
,发送指标的频率。可以指定一个可选前缀,以帮助区分指标的来源–例如,区分来自独立peer节点的指标–这些指标将被添加到所有生成的指标中。1
2
3
4
5
6
7metrics:
provider: statsd
statsd:
network: udp
address: 127.0.0.1:8125
writeInterval: 10s
prefix: peer-0orderer
通过在orderer.yaml
文件中的Metrics
部分将metrics provider
设置为statsd
,将指标发送给StatsD
。Statsd
子部分必须配置StatsD
进程的地址,使用的网络类型tcp
或者udp
,发送指标的频率。可以指定一个可选前缀,以帮助区分指标的来源。1
2
3
4
5
6
7Metrics:
Provider: statsd
Statsd:
Network: udp
Address: 127.0.0.1:8125
WriteInterval: 30s
Prefix: org-orderer
现有可以获取的指标以及含义可以参考指标附录
3. 私有数据加强
私有数据特性是从Fabric1.2版本开始出现的,1.4版本首次出现2个新特性:
Reconciliation
(这个不知道用中文要怎么翻译,原本意思是“和解”,但放这里不太对的样子):允许添加到私有数据集的组织成员获取他们现在有权获得的以前交易的私有数据。
客户端访问控制
可以根据客户端组织集合成员资格自动在链码中强制执行访问控制,而不必编写特定的链码逻辑。
4. 节点组织单元(Node OU)支持
从v1.4.3开始,现在支持将节点OU用于admin
和orderer
身份分类(扩展了对client
和peer
的现有节点OU支持)。这些“组织单元”允许组织根据其x509证书的OU将身份进一步分类为管理员和订购者。
最后更新: 2019年11月03日 18:28
原始链接: https://silence-linhl.github.io/blog/2019/11/03/fabric-newfeature/