9.3. 迁移集群
确定您的代码库的迁移策略非常重要。这是因为您无法在单个集群中将 Eclipse Vert.x 3.x 节点和 Eclipse Vert.x 4 节点添加到单个集群中,原因如下:
- 集群管理器升级 - 集群管理器中的 Major 版本升级会阻止向后兼容性。
- 订阅数据更改 - Eclipse Vert.x 更改了存储在集群管理器中的 EventBus 订阅数据的格式。
- 传输协议更改 - Eclipse Vert.x 已更改了集群中消息传输协议中的一些字段。
如果您的 Eclipse Vert.x 集群用于单个应用程序或某些密切相关的微服务,您可以一次将整个代码库迁移到新集群中。
但是,如果您无法一次性迁移代码库,请使用本节中的建议将 Eclipse Vert.x 3.x 代码库迁移到 Eclipse Vert.x 4。
9.3.1. 分割集群
如果您的集群已为其应用程序部署了不同的团队,您可以考虑将 Eclipse Vert.x 3.x 集群拆分为较小的集群。请注意,在分割集群后,独立的组件将无法使用集群功能进行通信。您可以使用以下组件分离集群:
- EventBus 请求和回复 - HTTP 或 RESTful Web 服务, gRPC
-
EventBus 发送并发布 - Messaging 系统 Postgres
LISTEN
和NOTIFY
、Red Hat Redis Pub 和 Sub - 共享数据 - Redis、Infinispan
在分割集群后,每个团队在就绪或者需要时可以移至 Eclipse Vert.x 4。
9.3.2. Using Eclipse Vert.x EventBus Link
如果您无法分割集群,则使用 Vert.x EventBus Link 逐步迁移您的代码库。
Vert.x EventBus Link 是一个将 Eclipse Vert.x 3.x 集群事件Bus 连接到 Eclipse Vert.x 4 集群事件Bus 的工具。
不支持迁移共享数据 API,即、映射、计数器和锁定。
该工具创建一个实现 EventBusLink
接口的 EventBus
Link 对象。在每个集群至少一个节点上创建了一个 EventBusLink
实例。该实例通过提供一组地址及其行为取决于消息模式:
- 触发并忘记 请求和回复 - 邮件发送到远程集群。
- publish - 消息发送到此集群和远程集群。
Eclipse Vert.x EventBus Link 创建一个 WebSocket 服务器来接收消息,并使用 WebSocket 客户端来发送它们。