This repository has been archived by the owner on Jul 16, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 167
RSocket Broker Clusters
linux_china edited this page Nov 6, 2020
·
3 revisions
在实际的业务场景下,我们可能出现多个RSocket Broker集群的部署情况,如你的核心业务部署在中国的一个数据中心, 考虑到拓展海外业务的需求,你有可能在北美和欧洲的数据中心部署一些业务系统,这个时候就需要在各个数据中心进行服务通讯, 也就是各个独立Broker集群之间的相互通讯。
独立集群间的相互通讯通常有两种拓扑结构:
也就是不同的集群之间建立连接,然后相互通讯。
- 延迟低
- 网络结构复杂,发现机制、循环依赖问题等
也就是确定一个集群为中心集群,然后其他集群都连接到该中心集群,中心集群负责完成集群间请求的路由转发。
- 网络要求低,部署结构简单
- 存在一定的时延,需要中心转发
综合考虑下来,这种树状结构更简单,实际操作性好,结构图如下:
在树状的多集群结构中,我们需要设置upstream.clusters信息,这个和rsocket.brokers设置差不多,但是这样还有一些问题:
upstream.clusters中有多个IP,所以复用LoadBalancedRSocket就可以。
各个子集群需要向中心集群注册自己能提供的服务。 子集群本身就维护着非常多的服务,并不是所有的服务都要向中心注册, 只有那些包含global的label的服务才会向中心注册,通过监听服务上下线时间,然后向upstream clusters发送ServicesExposedEvent时间就可以。
- Binary: byte stream
- Async message
- Multi transports
- Reactive Semantics
- request/response
- request/stream
- fire-and-forget
- channel
- TCP+TLS
- WebSocket+TLS
- UDP(Aeron)
- RDMA