微服务同步通信 - 服务或消息代理服务

时间:2018-06-16 16:26:32

标签: spring spring-boot apache-kafka microservices

我正在使用Spring Boot和Kafka开发一系列微服务。对于异步通信,我使用的Kafka运行良好。

我有一个用例,我需要两个微服务之间的同步通信(用户通过用户配置文件服务注册一个配置文件,需要在auth微服务中创建一个auth帐户)。

我应该直接调用auth服务(服务通信服务)还是应该使用Kafka?

任何示例或最佳实践建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

有多种因素可以推动您的决定:

  • 是否需要您的Auth服务确认?
    如果是的话:

    • 要立即确认,请使用http
    • 对于不那么立即的确认,可以实现回调模式。 在您的情况下,用户配置文件通过Kafka向auth服务发送请求并进行调用 用户配置文件的端点,用于报告作业的状态。

    如果没有:
    使用队列1可以获得更好的弹性。

  • 错误处理
    想想auth服务失败?用户服务的反应应该是什么?

    • 如果在授权服务失败时,用户服务也应该失败 使用http
    • 如果在授权服务失败时,用户服务不应该失败 使用队列

答案 1 :(得分:1)

理想情况下,在用户创建和身份验证中,实时响应将提供给客户端,但如果涉及复杂的流程或任务,则应首选用户创建队列。

对于多个微服务同步交互并处理其API响应,您可以构建聚合器服务,该服务可以充当不同服务之间的通信媒介,并与您的kafka队列消费者服务一起工作。