顶点 - 用于事件处理的多个顶点与单个顶点



场景

我在 Vertx 事件总线中的特定"地址"中收到一条消息 - 该消息可以是四种类型。处理程序应处理消息并将结果发送到另一个事件总线"地址",其处理程序将其发布到外部服务 API。

问题

如何为此设计顶点?我在下面描述了两种方法 - 考虑到这将部署在 Kubernetes 中,哪种方法高效、更快且能够很好地扩展。工人顶点怎么样?我缺少其他有效的方法吗?

A. 方法

  1. 为每个类型编写一个顶点,事件总线使用者使用和处理此类型。将处理后的数据发送到"外部服务呼叫"地址。
  2. 只写一个顶点 - eventbus 处理程序可以根据消息的类型决定和调用适当的方法,最后将其发布到"外部服务调用"地址。

据我了解,我可以通过部署该椎点的多个实例来扩展第二种方法。通过扩展,我的意思是这可以同时接受和处理大量数据?第一种方法怎么样?

你认为我应该知道的其他方法?

第一种方法稍微更可取一些,原因有两个:

  1. 执行更少的检查 => 更少的 CPU 时间 => 更高的并发性
  2. 每个顶点中的代码更少 => 更易于维护

话虽如此,这不是你应该关心的事情。您的external-service-call将比 EventBus 上的任何微优化慢一个数量级。

方法 1: a. 更清洁。事件总线设计用于在同一 Vertx 实例的顶点之间或群集顶点内进行通信。 b. 性能 - 由于顶点位于同一主机上,因此没有网络 IO,对性能影响不大。

方法2: 一个。不太干净,但将获得非常少量的性能改进,与外部服务调用相比可以忽略不计 b.从可维护性的角度来看并不好。

我可能会选择方法1。

最新更新