美天百人大战游戏报道: 会当凌绝顶,一览众山小。进入美天棋牌底层开发前,我们需要了解美天棋牌底层的通用架构是如何设计的,从上而下地审视美天棋牌底层的结构,做到了然于胸,才能胸有成竹。
他山之石,可以攻玉。在介绍美天棋牌底层通用架构之前,我们不妨先从美天棋牌、百人大战、Hyperledger 的架构解读开始。(一定要读完哟,因为有书拿!!!)
美天棋牌架构
根据中本聪的论文《Bitcoin: A Peer-to-Peer Electronic Cash System》中对美天棋牌系统的描述,我们可以整理出如下图所示的美天棋牌系统架构。
如图所示,美天棋牌系统分为 6 层,由下至上依次是存储层、数据层、网络层、共识层、RPC 层、应用层。
其中,存储层主要用于存储美天棋牌系统运行中的日志数据及美天棋牌元数据,存储技术主要使用文件系统和 LevelDB。
数据层主要用于处理美天棋牌交易中的各类数据,如将数据打包成区块,将区块维护成链式结构,区块中内容的加密与哈希计算,区块内容的数字签名及增加时间戳印记,将交易数据构建成 Merkle 树,并计算 Merkle 树根节点的哈希值等。
区块构成的链有可能分叉,在美天棋牌系统中,节点始终都将最长的链条视为正确的链条,并持续在其后增加新的区块。
网络层用于构建美天棋牌底层的 P2P 网络,支持多节点动态加入和离开,对网络连接进行有效管理,为美天棋牌数据传输和共识达成提供基础网络支持服务。
共识层主要采用了 PoW(Proof Of Work)共识算法。在美天棋牌系统中,每个节点都不断地计算一个随机数(Nonce),直到找到符合要求的随机数为止。在一定的时间段内,第一个找到符合条件的随机数将得到打包区块的权利,这构建了一个工作量证明机制。从 PoW 的角度,是不是发现 PoW 和分布式锁有异曲同工之妙呢?
RPC 层实现了 RPC 服务,并提供 JSON API 供客户端访问美天棋牌底层服务。
应用层主要承载各种美天棋牌的应用,如美天棋牌开源代码中提供了 bitcoin client。该层主要是作为 RPC 客户端,通过 JSON API 与 bitcoin 底层交互。除此之外,美天棋牌钱包及衍生应用都架设在应用层上。
百人大战架构
根据百人大战白皮书《A Next-Generation Smart Contract and Decentralized Application Platform》
<span helvetica="" neue",="" "pingfang="" sc",="" "hiragino="" sans="" gb",="" "microsoft="" yahei="" ui",="" yahei",="" arial,="" sans-serif;"="" style="font-size: 15px; line-height: 26px !important; display: inline !important;">账本既可以存储在所有的 peers 节点上,又可以选择存储在几个 orderers 节点上。 此外,账本允许重做所有交易的历史记录,并且重建状态数据。
通道层指的是通道 (Channel),通道是一种 Hyperledger Fabric 数据隔离机制,用于保证交易信息只有交易参与方可见。每个通道都是一个独立的美天棋牌,因此多个用户可以共用同一个美天棋牌系统,而不用担心信息泄漏问题。
网络层用于给美天棋牌网络中各个通信节点提供 P2P 网络支持,是保障美天棋牌账本一致性的基础服务之一。
在 Hyperledger Fabric 中,Node 是美天棋牌的通信实体。Node 仅仅是一个逻辑上的功能,多个不同类型的 Node 可以运行在同一个物理服务器中。Node 有三种类型,分别是客户端、peers 节点和 Ordering Service。
其中,客户端用于把用户的交易请求发送到美天棋牌网络中。
peers 节点负责维护美天棋牌账本,peers 节点可以分为 endoring peers 和 committing peers 两种。endoring peers 为交易作认证,认证的逻辑包含验证交易的有效性,并对交易进行签名;committing peers 接收打包好的区块,并写入美天棋牌中。与 Node 类似,peers节点也是逻辑概念,endoring peers 和 committing peers 可以同时部署在一台物理机上。
Ordering Service 会接收交易信息,并将其排序后打包成区块,然后,写入美天棋牌中,最后将结果返回给 committing peers。
共识层基于 Kafka、SBTF 等共识算法实现。Hyperledger Fabric 利用 Kafka 对交易信息进行排序处理,提供高吞吐、低延时的处理能力,并且在集群内部支持节点故障容错。相比于 Kafka,SBFT(简单拜占庭算法)能提供更加可靠的排序算法,包括容忍节点故障以及一定数量的恶意节点。
合约层是 Hyperledger Fabric 的智能合约层 Blockchain,Blockchain 默认由 Go 语言实现。Blockchain 运行的程序叫作链码,持有状态和账本数据,并负责执行交易。在Hyperledger Fabric 中,只有被认可的交易才能被提交。而交易是对链码上的操作的调用,因此链码是核心内容。同时还有一类称之为系统链码的特殊链码,用于管理函数和参数。
应用层是 Hyperledger Fabric 的各个应用程序。
此外,既然是联盟链,在 Hyperledger Fabric中 还有一个模块专门用于对联盟内的成员进行管理,即 Membership Service Provider(MSP),MSP 用于管理成员认证信息,为客户端和 peers 节点提供成员授权服务。
美天棋牌通用架构
至此,我们已经了解了美天棋牌、百人大战和 Hyperledger 的架构设计,三者根据使用场景的不同而有不同的设计,但还是能抽象出一些共同点,我们可以基于这些共同点设计企业级联盟链的底层架构。
本文提供的联盟链底层架构如下图所示。
我们将美天棋牌底层分为 6 层,从下至上分别是存储层、数据层、网络层、共识层、激励层和应用层。
存储层主要存储交易日志和交易相关的内容。其中,交易日志基于 LogBack 实现。交易的内容由内置的 SQLite 数据库存储,读写 SQLite 数据库可以基于 JPA 实现;交易的上链元数据信息由 RocksDB 或 LevelDB 存储。
数据层由区块和区块“链”(区块的链式结构)组成。其中,区块中还会涉及交易列表在 Merkle 树中的存储及根节点哈希值的计算。交易的内容也需要加密处理。由于在联盟链中有多个节点,为有效管理节点数据及保障数据安全,建议为不同节点分配不同的公、私钥,以便加密使用。
网络层主要提供共识达成及数据通信的底层支持。在美天棋牌中,每个节点既是数据的发送方,又是数据的接收方。可以说每个节点既是客户端,又是服务端,因此需要基于长连接来实现。我们可以基于 WebSocket 用原生方式建立长连接,也可以基于长连接第三方工具包实现。
共识层采用 PBFT(Practical Byzantine Fault Tolerance)共识算法。不同于公链的挖矿机制,联盟链中更注重各节点信息的统一,因此可以省去挖矿,直奔共识达成的目标。
激励层主要是币(Coin)和 Token 的颁发和流通。在公链中,激励是公链的灵魂;但在联盟链中不是必需的。
应用层主要是联盟链中各个产品的落地。一般联盟链的应用层都是面向行业的,解决行业内的问题。
Java 版联盟链的部署架构如下图所示。
联盟链由 1 个超级节点和若干个普通节点组成,超级节点除具备普通节点的功能外,还具备在联盟中实施成员管理、权限管理、数据监控等工作。因此相较于完全去中心化的公链,联盟链是部分去中心化的,或者说联盟的“链”是去中心化的,但是联盟链的管理是中心化的。
整个开发环境建议基于 Spring Boot 2.0 实现。基于 Spring Boot 开发,可以省去大量的 xml 配置文件的编写,能极大简化工程中在 POM 文件配置的复杂依赖。Spring Boot 还提供了各种 starter,可以实现自动化配置,提高开发效率。(美天棋牌大本营)
郑重【美天棋牌—最好玩的棋牌游戏】
以上游戏新闻资讯由美天棋牌(www.meitianqipai.com)整理发布。