如何解决您如何从反应式微服务系统获取数据?
我正在设计一个反应微服务系统,其中服务之间的通信(请求处理管道)是异步的(使用kafka)。系统将管理VM集群。平移以将Spring WebFlux用作框架。
例如,创建新VM的请求可能如下所示:
- API网关
- 安全验证
- 在用户空间中创建VM
- 虚拟机的计划资源
- 成功/失败后发送通知给用户
感谢kafka,所有步骤都是连续的,但又是异步的。步骤由单独的微服务处理。
此外,客户端将(可能)想要发出GET请求,例如获取VM列表或有关群集状态的信息。我只是不知道如何。 我可以想到以下解决方案:
- 从API网关向其他服务发出(同步)GET请求,汇总数据并返回。
- 向用户的通知已经具有所有必需的数据,因此我可以将所有用户可查询的数据聚合到专用服务中(保存到数据库中),然后从那里转发来自API Gateway的GET请求。
解决方法
实际上,我建议不要在跨此类服务的服务中使用管道,而要有一个管理此传奇并跟踪传奇状态的服务。
- API网关将请求转发到传奇管理服务
- Saga管理服务通知安全验证服务
- 安全验证服务发布事件
- 基于事件3,传奇管理可能会通知VM创建服务
- VM创建服务在用户空间中创建VM,发布事件
- 基于事件5,事件管理可以通知资源调度程序服务
- 资源调度程序服务调度资源,发布事件
- 基于事件7的佐贺管理发送通知
传奇管理器可以响应故障(例如,如果无法调度资源,则通过回滚VM创建,或者通过拨叫服务来确定将其视为无效的服务),并有效地解释事物以为其他事件发布更丰富的事件服务(例如,可以列出VM的服务可能对涉及VM创建和资源调度的事件感兴趣,而不仅仅是通知),并响应交互式请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。