假设
- 我正在构建一个无状态微服务,它公开了一些简单的 API 端点(例如,一个通读缓存,将一个条目保存到数据库),
- 我正在使用非阻塞数据库客户端,例如mysql或redis和
- 我总是希望我的微服务通过 HTTP 相互通信(通过将 EC2 实例放在负载均衡器后面)
问题
- 我什么时候要使用超过 1 个标准 Verticle(即,将整个微服务编写为单个 Verticle 并部署它的 n 个实例(n = 事件循环线程数))?添加更多的verticles不会增加序列化和上下文切换的成本吗?
- 假设我将微服务拆分为多个标准 Verticle(无论出于何种原因)。与部署不同比例的实例相比,部署每个实例的 n(n = 事件循环线程数)不会总是提供更好的性能。由于每个 Verticle 只是一个地址上的侦听器,这意味着每个事件循环线程都可以处理各种消息,并且它们已经是负载平衡的。
- 我什么时候想在集群模式下运行我的应用程序?根据文档,我觉得集群模式只有在您有多个 Verticle 时才有意义,并且当您有一个实际的集群用例时也是如此,例如,不同的 EC2 实例处理不同用户的请求以帮助处理数据局部性(比如使用点燃)
PS,即使您可以回答上述问题之一,也请提供帮助。