组件
组件是各个微服务的实现。
每个组件单独一个代码仓库,仓库名称以微服务名称开头,下划线后接用于标识不同实现的名称。
构建物使用微服务名称,以便于相互替换。
比如network_zenoh
,是基于zenoh
实现的Network
微服务,其构建物为可执行文件network
。
组件分为两类:
- 原厂组件,即
CITA-Cloud
自带的组件。 - 第三方组件。
组件还有以下一些指标: 1. 组件的成熟度:1-5,1表示仅实现必要的功能的最小实现,5表示非常成熟的实现。 2. 组件的状态:开发中,维护中,废弃。 3. 组件的授权状态:商业,或者开源。
原厂组件
network_zenoh
介绍: 基于网络库zenoh实现。
特点:
* 基于QUIC网络协议,弱网络下更稳定,延迟更低。
* 支持TLS
,通信加密保证安全。
* 支持Pub/Sub
模式,提供更高层的接口,提供与底层网络连接无关的节点标识。
* 支持消息送达保证,更加稳定可靠。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
storage_opendal
介绍: 基于opendal的实现。
特点: * 冷热数据分离。热数据存在本地,冷数据存到云存储,可以使得本地存储数据量较小且相对固定。 * 共享第三层。多个节点共享第三层云存储,新节点无需恢复大量的冷数据,而只需通过恢复热数据即可快速加入。
第二层存储为rocksdb
,特点:
* 高效,KV
数据库,读写效率高。
* 可靠,多数区块链项目都使用rocksdb
作为存储引擎,稳定性好。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
crypto_sm
介绍:国密算法的实现,使用sm2
签名算法和sm3
哈希算法。
特点:
* 符合中国国家密码标准。
* 高效,纯Rust
实现,采用多种优化技术。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
crypto_eth
介绍: 兼容以太坊算法的实现,使用secp256k1
签名算法和keccak
哈希算法。
特点: * 兼容以太坊。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
executor_evm
介绍: 基于以太坊的EVM
实现。
特点: * 兼容以太坊的智能合约生态。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
consensus_raft
介绍: 基于Raft实现。
特点: * 非拜占庭容错。 * 成熟实现,稳定可靠。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
consensus_overlord
介绍: 基于overlord实现。
特点: * 拜占庭容错。 * 成熟实现。 * 线性消息复杂度。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
controller
介绍: 目前唯一的Controller
实现。
特点:
* 先共识后执行。
* 高性能,流水线式并行。
* utxo
模型的系统配置管理。
* 丰富的治理功能。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
废弃组件
consensus_bft
介绍: 基于CITA-BFT实现。
特点: * 拜占庭容错。 * 线性消息复杂度。
成熟度: 4
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被consensus_overlord
替代。两者同为BFT类算法,但是overlord
在性能方面更有优势。
network_direct
介绍: 基于tokio
网络库的实现。
特点: * 网络直连,简单可靠 * 无通信加密
成熟度: 3
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被network_tls
替代。因为区块链的去中心化属性,网络通信加密是比较基础的需求。
network_p2p
介绍: 基于网络库tentacle实现。
特点:
* 支持secio,通信加密保证安全。
* 支持多路复用(yamux
),可以自定义协议。
* 支持节点发现,节点之间会自动交换连接的节点信息。
成熟度: 4
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被network_zenoh
替代。
network_tls
介绍: 基于tokio-rustls实现。
特点:
* 支持TLS1.3
,通信加密保证安全。
* 使用标准的x509
证书,方便复用已有的基础设施。
* 支持白名单,便于权限管理。
成熟度: 4
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被network_zenoh
替代。
network_quic
介绍: 基于QUIC网络协议的实现。
特点:
* 高效,基于UDP
协议,开销更小。
* 安全,默认支持TLS
,通信加密。
* 可靠,弱网络下效果更高。
成熟度: 2
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被network_zenoh
替代。
storage_rocksdb
介绍: 基于rocksdb的实现。
特点:
* 高效,KV
数据库,读写效率高。
* 可靠,多数区块链项目都使用rocksdb
作为存储引擎,稳定性好。
成熟度: 4
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被storage_opendal
替代,storage_opendal
提供更全面的功能,rocksdb
仍作为其中的第二层存储。
storage_sqlite
介绍: 基于sqlite的实现。
特点:
* 轻量,嵌入式数据库,开销小。
* 功能丰富,完整支持SQL
。
成熟度: 3
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被storage_rocksdb
替代。目前区块链的实现中主要还是以KV
存储为主,SQL
数据库的优势发挥不出来,反而性能上不如KV
数据库。也许将来对链上数据分析有更多需求的时候可以切换至SQL
数据库。
storage_tikv
介绍: 基于tikv的实现。
特点:
* 扩展能力强,分布式KV
数据库。
* 稳定可靠,支持分布式事务操作,得到广泛应用。
成熟度: 2
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:这个组件主要就是验证使用分布式KV
数据库的可行性。但是目前数据量还没有到这个程度,所以暂时搁置。
executor_chaincode
介绍: 实验性兼容Fabric Chaincode
实现。
特点:
* 兼容Fabric
的智能合约生态。
成熟度: 1
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:本身就是实验性质的组件,为了验证框架有足够的灵活性。后期有相关需求之后完善之后成为executor_chaincode_ext
。
第三方组件
废弃组件
executor_chaincode_ext
介绍: 增强型兼容Fabric Chaincode
实现。
特点:
* 兼容chaincode
合约。
* 支持了CouchDB
。
* 增加了chaincode
事件相关功能。
代码仓库: 无
镜像仓库: 无
成熟度: 3
状态: 废弃
授权: 商业
废弃原因:专门为某个商业项目定制,后续没有类似的需求。
kms_sdibc
介绍: 基于高性能国密算法实现。
特点: * 性能好。
代码仓库: 无
镜像仓库: 无
成熟度: 4
状态: 废弃
授权: 商业
废弃原因:专门为某个商业项目定制,后续没有类似的需求。