1

设想

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

问题

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

方法

  1. 为每种类型编写一个verticle,由一个事件总线消费者消费和处理这种类型。将处理后的数据发送到“external-service-call”地址。
  2. 只写一个 verticle - eventbus handler 可以根据消息的类型决定并调用适当的方法,最后将其发布到“external-service-call”地址。

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

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

4

2 回答 2

1

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

  1. 做更少的检查 => 更少的 CPU 时间 => 更多的并发
  2. 每个verticle中的代码更少=>更易于维护

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

于 2019-08-30T17:57:19.627 回答
0

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

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

我可能会选择方法1。

于 2020-04-26T18:46:40.393 回答