二维码

12.1 整体架构概览 - 数据结构 - 机器学习

1096 人阅读 | 时间:2021年01月15日 01:18
12.1 整体架构概览 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

12.1 整体架构概览

1229 人参与  2018年09月29日 14:34  分类 : 区块链精品文章  评论

超级账本Fabric自诞生以来已经先后发布了两个大的版本,0.6实验版本(2016年9月)和1.0正式版本 (2017年7月)。0.6版本实现了带有初步功能的分布式账本。基于这一版本,超级账本Fabric项目收集了大量在实际应用中的反馈建议,主要集中在 性能、安全、可扩展性等方面。社区在此基础上,重新设计了整体架构,推出了焕然一新的1.0版本,重点在可扩展性和安全性上进行了改善,同时消除了网络原 有的性能瓶颈。

12.1.1 核心特性

目前,超级账本Fabric架构的核心特性主要包括:

·解耦了原子排序环节与其他复杂处理环节,消除了网络处理瓶颈,提高可扩展性;

·解耦交易处理节点的逻辑角色为背书节点(Endorser)、确认节点(Committer),可以根据负载进行灵活部署;

·加强了身份证书管理服务,作为单独的Fabric CA项目,提供更多功能;

·支持多通道特性,不同通道之间的数据彼此隔离,提高隔离安全性;

·支持可拔插的架构,包括共识、权限管理、加解密、账本机制等模块,支持多种类型;

·引入系统链码来实现区块链系统的处理,支持可编程和第三方实现。

12.1.2 整体架构

超级账本Fabric的整体架构如图12-1所示。

12.1 整体架构概览 - 数据结构 - 机器学习

图12-1 Fabric整体架构

Fabric为应用提供了gRPC API,以及封装API的SDK供应用调用。应用可以通过SDK访问Fabric网络中的多种资源,包括账本、交易、链码、事件、权限管理等。应用开发者 只需要跟这些资源打交道即可,无需关心如何实现。其中,账本是最核心的结构,负责记录应用信息,应用则通过发起交易来向账本中记录数据。交易执行的逻辑通 过链码来承载。整个网络运行中发生的事件可以被应用访问,以触发外部流程甚至其他系统。权限管理则负责整个过程中的访问控制。

账本和交易进一步地依赖核心的区块链结构、数据库、共识机制等技术;链码则依赖容器、状态机等技术;权限管理利用了已有的PKI体系、数字证书、加解密算法等诸多安全技术。

底层由多个节点组成P2P网络,通过gRPC通道进行交互,利用Gossip协议进行同步。

层次化结构提高了架构的可扩展和可插拔性,方便开发者以模块为单位进行开发。

12.1.3 典型工作流程

对于常见的公有区块链,用户只需要将交易通过服务接口直接发送到区块链网络中,网络中的对等节点负责完成所有的共识和处理过程。对于联盟链场景,要更多地考虑权限管理相关的功能需求。比如哪些身份可以向网络中发送交易?哪些交易可以发送到网络中?

超级账本Fabric根据交易过程中不同环节的功能,在逻辑上将节点角色解耦为Endorser和Committer,让不同类型节点可以处理不同类型的工作负载。

典型的交易处理过程示例如图12-2所示。

12.1 整体架构概览 - 数据结构 - 机器学习

图12-2 示例交易处理过程

在整个交易过程中,各个组件的主要功能如下:

·客户端(App):客户端应用使用SDK来跟Fabric网络打交道。首先,客户端从CA获取合法的身份证书来加入 网络内的应用通道。发起正式交易前,需要先构造交易提案(Proposal)提交给Endorser进行背书(通过EndorserClient提供的 ProcessProposal(ctx context.Context,signedProp*pb.SignedProposal) (*pb.ProposalResponse,error)接口);客户端收集到足够(背书策略决定)的背书支持后可以利用背书构造一个合法的交易请求, 发给Orderer进行排序(通过BroadcastClient提供的Send(env*cb.Envelope)error接口)处理。客户端还可以 通过事件机制来监听网络中消息,获知交易是否被成功接收。命令行客户端的主要实现代码在peer/chaincode目录下。

·Endorser节点:主要提供ProcessProposal(ctx context.Context,signedProp*pb.Signed-Proposal) (*pb.ProposalResponse,error)方法(代码在core/endorser/endorser.go文件)供客户端调用,完成对 交易提案的背书(目前主要是签名)处理。收到来自客户端的交易提案后,首先进行合法性和ACL权限检查,检查通过则模拟运行交易,对交易导致的状态变化 (以读写集形式记录,包括所读状态的键和版本,所写状态的键值)进行背书并返回结果给客户端。注意网络中可以只有部分节点担任Endorser角色。主要 代码在core/endorser目录下。

·Committer节点:负责维护区块链和账本结构(包括状态DB、历史DB、索引DB等)。该节点会定期地从 Orderer获取排序后的批量交易区块结构,对这些交易进行落盘前的最终检查(包括交易消息结构、签名完整性、是否重复、读写集合版本是否匹配等)。检 查通过后执行合法的交易,将结果写入账本,同时构造新的区块,更新区块中BlockMetadata[2](TRANSACTIONS_FILTER)记 录交易是否合法等信息。同一个物理节点可以仅作为Committer角色运行,也可以同时担任Endorser和Committer这两种角色。主要实现 代码在core/committer目录下;

·Orderer:仅负责排序。为网络中所有合法交易进行全局排序,并将一批排序后的交易组合生成区块结构。 Orderer一般不需要跟账本和交易内容直接打交道。主要实现代码在orderer目录下。对外主要提供Broadcast(srv ab.AtomicBroadcast_BroadcastServer)error和Deliver(srv ab.AtomicBroadcast_DeliverServer)error两个RPC方法(代码在orderer/server.go文件)。

·CA:负责网络中所有证书的管理(分发、撤销等),实现标准的PKI架构。主要代码在单独的fabric-ca项目中。CA在签发证书后,自身不参与网络中的交易过程。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=905

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×