DeFiBus(Decentralized Financial Message Bus) -- 分布式金融级消息总线
DeFiBus=RPC+MQ,是基于开源消息中间件打造的安全可控的分布式金融级消息总线。DeFiBus不仅提供了RPC同步调用,还提供了MQ的异步事件通知、事件组播和广播等常用服务调用和消息模式,同时增加了应用多中心多活、服务就近、灰度发布等分布式场景下的高可用能力。在对于机器故障的容错能力方面的增强,也让消息总线的服务更加稳定可靠,为业务提供7x24的服务。
分布式架构
名词解释 DCN:Data Center Node(数据中心单元化节点)
系统架构
DeFiBus主要包括以下几个组件(模块):
-
Broker:通过轻量级的Topic和Queue机制提供消息存储功能。Broker定期将Topic信息上报到NameServer中,同集群中的Broker实例上报的NameServer必须保持一致,避免路由信息不一致。
-
NameServer:NameServer提供Topic的发现和路由,每一个NameServer接受Broker上报的Topic信息,并维护Topic的路由信息供客户端查询。
-
GSL:全局服务定位(Global Service Location)服务提供服务级别的路由发现。服务可以部署在不同的区域(比如不同的数据中心、逻辑分区等),服务请求方在请求某一个具体服务时,无需关注服务部署的区域,GSL能够根据服务发现规则自动定位到具体的服务,将服务信息返回给客户端。
-
EventMesh:服务代理提供TCP/HTTP接入方式,同时允许按照协议规范开发的C、GO、Python等其他语言客户端的接入。
-
ConfigCenter(CC):配置中心,提供HTTP接入方式,比如Namesrv的寻址以及其他配置。
-
ACL:访问控制服务,TOPIC级别的IP访问控制,提供黑白名单功能。
-
SGS:服务治理系统(Service Government System),用于管理服务、服务请求、服务响应、服务路由、ACL等流程和数据。
特性列表:
- RPC调用:即“Request-Reply”模式,支持系统间的同步调用
- 消息发布/订阅:消息的发布和订阅
- 灰度发布:服务级别的灰度发布
- 熔断机制:应用实例级别的熔断
- 流量控制:队列级别的限流
- 服务就近:就近进行服务的请求和响应,减少跨区调用
- 应用多活:应用多中心多活
- 动态扩缩队列 :自适应应用实例数量,动态调整队列个数
- 访问控制表:优化负载均衡时时重复消费的情况
- 容错机制:故障和错误隔离
- 服务代理:云原生多语言的代理EventMesh
- 服务治理:服务元数据的管理(待开源)
- 服务路由和定位:动态路由及定位(待开源)
- 平滑升级:平滑升级、平滑扩容(待开源)
Quick Start
DeFiBus的安装部署流程请参考:《DeFiBus使用指引》
examples模块中提供了最佳实践样例:defibus-examples
License
DeFiBus is licensed under Apache License.
非常感谢以下项目对开源做出的贡献
动态
Contacts
微信/QQ群: