我遇到一种情况,我主持一个高RPS高可用性服务,接收请求,即命令。必须将这些命令发送给实际执行它们的N个下游客户端。每个下游客户端都是单独的微服务,并且具有不同的约束,如模式(同步,异步),执行节奏等。
缓慢的下游客户端是否应该构建逻辑来接收所有请求并按需要批量执行它们?或者我的服务应该构建逻辑,通过维护下游客户端的命令状态来与慢速和快速客户端通信。分享您的意见
答案 0 :(得分:0)
没有足够的信息来提供任何说明性建议,但我首先要将任务划分为异步并首先进行同步。这些是两个完全不同的工作负载,很可能需要不同的实现堆栈。我将向您介绍在AWS世界中您可以开始的内容......
不知道异步是什么意思,我默认使用消息总线设置。在这种情况下,您可以使用Amazon Kinesis或Kafka之类的东西进行摄取,并启动Lambda或EC2实例。如果需要向客户端通知已完成的作业,则可以长时间轮询SQS队列,订阅SNS主题,或使用MQTT with websockets进行长时间连接。
同步任务更容易,因为它完全与处理能力有关。只需确保在ALB或API网关后面的自动缩放组中有EC2实例,即可适当地向外扩展。
这是一个非常简单的答案,因为我没有任何细节需要更精确,但这应该让你知道从哪里开始。