事件驱动与请求响应微服务集成的策略与实践
1. 模式优势与弊端
1.1 模式优势
使用特定模式具有诸多好处:
- 能在应用业务逻辑时,将事件处理与请求 - 响应 API 相融合。
- 服务可按需调用所需的外部 API。
- 可通过向端点发送多个非阻塞请求并行处理事件。服务在发送完每个请求后才等待结果,获取结果后更新偏移量并处理下一批事件。不过,并行处理仅适用于队列式流,因为它不保证处理顺序。
1.2 模式弊端
- 向外部服务发送请求会给工作流引入不确定性因素。重新处理事件,即使只是失败的批次,也可能产生与原始处理不同的结果,设计应用时需考虑这一点。
- 当请求 - 响应端点由组织外部的第三方控制时,API 或响应格式的更改可能导致微服务失败。
- 请求频率也是需要考虑的问题。例如,发现微服务中的错误并需要回滚输入流进行重新处理时,事件驱动的微服务通常会尽快处理事件,这可能导致对外部 API 的请求量激增,从而使远程服务失败或阻止来自本 IP 地址的流量,增加响应延迟和应用负载。可使用配额限制消费和处理速率,但也需要处理请求的微服务进行严格的限流。
2. 处理和服务有状态数据
2.1 内部状态存储服务实时请求
微服务可从其内部状态提供结果。客户端请求先到达负载均衡器,再由其路由到微服务实例。若只有一个微服务实例,且它实现了应用的所有状态数据,那么所有应用数据都可在该实例中获取。状态通过消费两个输入事件流(A 和 B)实现,并将变更日志备份到事件代理。
通常需要多个微服务实例来
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



