微服务同步通信——服务到服务或消息代理
Posted
技术标签:
【中文标题】微服务同步通信——服务到服务或消息代理【英文标题】:Microservice synchronous communication - service to service or message broker 【发布时间】:2018-11-26 03:07:39 【问题描述】:我正在使用 Spring Boot 和 Kafka 开发一系列微服务。对于异步通信,我使用的是运行良好的 Kafka。
我有一个用例,我需要两个微服务之间的同步通信(用户通过用户配置文件服务注册配置文件,需要在身份验证微服务中创建一个身份验证帐户)。
我应该直接调用 auth 服务(服务到服务通信)还是应该使用 Kafka?
任何示例或最佳实践建议将不胜感激。
【问题讨论】:
【参考方案1】:理想情况下,在用户创建和身份验证中,向客户端提供实时响应,但如果涉及复杂的流程或任务,则应首选用户创建队列。
对于多个微服务同步交互并处理它们的 API 响应,您可以构建一个聚合器服务,该服务可以作为不同服务之间的通信媒介,并与您的 kafka 队列消费者服务一起工作。
【讨论】:
谢谢,它只需要调用一个微服务。【参考方案2】:有多种因素可以推动您做出决定:
需要您的身份验证服务的任何确认? 如果是:
要立即确认,请使用 http 对于不那么立即的确认,可以实施回调模式。 在您的情况下,用户配置文件通过 Kafka 向身份验证服务发送请求并调用 用户配置文件的端点以报告作业的状态。如果没有: 使用队列一以获得更好的弹性。
错误处理 想到身份验证服务失败?用户服务应该是什么反应?
如果身份验证服务失败,用户服务也应该失败 使用http 如果身份验证服务失败,用户服务应该不会失败。 使用队列【讨论】:
非常感谢您的回复。我想我会使用 http,因为我需要立即确认,如果身份验证服务失败,用户服务也应该失败(不应该在没有任何身份验证凭据的情况下创建用户)。我还发现了this article,这可能有点矫枉过正。以上是关于微服务同步通信——服务到服务或消息代理的主要内容,如果未能解决你的问题,请参考以下文章