组件
组件是各个微服务的实现。
每个组件单独一个代码仓库,仓库名称以微服务名称开头,下划线后接用于标识不同实现的名称。
构建物使用微服务名称,以便于相互替换。
比如network_zenoh
,是基于zenoh
实现的Network
微服务,其构建物为可执行文件network
。
组件分为两类:
- 原厂组件,即
CITA-Cloud
自带的组件。 - 第三方组件。
组件还有以下一些指标:
- 组件的成熟度:1-5,1表示仅实现必要的功能的最小实现,5表示非常成熟的实现。
- 组件的状态:开发中,维护中,废弃。
- 组件的授权状态:商业,或者开源。
原厂组件
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_hsm
介绍: 基于状态机的Controller
实现。
特点:
- 代码结构清晰。
- 无中间状态。
成熟度: 4
状态: 维护中
授权: 开源,Apache-2.0 License
废弃组件
controller
介绍:原 Controller
唯一的实现。
成熟度: 4
状态: 废弃
授权: 开源,Apache-2.0 License
废弃原因:被controller_hsm
替代。
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
仍作为其中的第二层存储。
ksm_sm
介绍: 基于国密算法的kms
微服务实现。
废弃原因:被crypto_sm
替换。参见rfc 0005。
ksm_eth
介绍: 基于以太坊算法的kms
微服务实现。
废弃原因:被crypto_eth
替换。参见rfc 0005。
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
状态: 废弃
授权: 商业
废弃原因:专门为某个商业项目定制,后续没有类似的需求。