Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

RSocket Broker Clusters

linux_china edited this page Nov 6, 2020 · 3 revisions

在实际的业务场景下,我们可能出现多个RSocket Broker集群的部署情况,如你的核心业务部署在中国的一个数据中心, 考虑到拓展海外业务的需求,你有可能在北美和欧洲的数据中心部署一些业务系统,这个时候就需要在各个数据中心进行服务通讯, 也就是各个独立Broker集群之间的相互通讯。

独立集群间的相互通讯通常有两种拓扑结构:

环状对等通讯的集群管理

也就是不同的集群之间建立连接,然后相互通讯。

  • 延迟低
  • 网络结构复杂,发现机制、循环依赖问题等

自上而下的树状集群管理

也就是确定一个集群为中心集群,然后其他集群都连接到该中心集群,中心集群负责完成集群间请求的路由转发。

  • 网络要求低,部署结构简单
  • 存在一定的时延,需要中心转发

综合考虑下来,这种树状结构更简单,实际操作性好,结构图如下:

rsocket-broker-clusters

Upstream Cluster设置

在树状的多集群结构中,我们需要设置upstream.clusters信息,这个和rsocket.brokers设置差不多,但是这样还有一些问题:

upstream集群的负载均衡

upstream.clusters中有多个IP,所以复用LoadBalancedRSocket就可以。

服务暴露

各个子集群需要向中心集群注册自己能提供的服务。 子集群本身就维护着非常多的服务,并不是所有的服务都要向中心注册, 只有那些包含global的label的服务才会向中心注册,通过监听服务上下线时间,然后向upstream clusters发送ServicesExposedEvent时间就可以。

RSocket

Network Protocol

  • Binary: byte stream
  • Async message
  • Multi transports
  • Reactive Semantics

Symmetric interactions

  • request/response
  • request/stream
  • fire-and-forget
  • channel

Transports

  • TCP+TLS
  • WebSocket+TLS
  • UDP(Aeron)
  • RDMA

Polyglot

Clone this wiki locally