【发布时间】:2020-09-12 07:00:28
【问题描述】:
我正在设计一个反应式微服务系统,其中服务之间的通信——请求处理管道——是异步的(使用 kafka)。系统将管理虚拟机集群。平移以使用 Spring WebFlux 作为框架。
例如,创建新 VM 的请求可能如下所示:
- API 网关
- 安全验证
- 在用户空间创建虚拟机
- 为 VM 计划资源
- 成功/失败后向用户发送通知
感谢卡夫卡,所有步骤都是顺序的,但异步的。步骤由单独的微服务处理。
除此之外,客户端将(可能)想要发出 GET 请求,例如获取 VM 列表或有关集群状态的信息。我只是不知道怎么做。 我可以想到以下解决方案:
- 从 API 网关向其他服务发出(同步)GET 请求,聚合数据并返回。
- 向用户发出的通知已经包含所有必需的数据,因此我可以在专用服务中聚合所有用户可查询的数据(保存到数据库中)并从那里的 API 网关转发 GET 请求。
【问题讨论】:
标签: asynchronous apache-kafka architecture microservices reactive-programming