微服务中有了HTTP请求,为何还需要事件呢?

在微服务架构中,有事件(EventBus等)和HTTP请求(API Gateway) 两种方式调用service。

image.png

请问一下:
1.事件和HTTP 请求有什么区别?
2.有了HTTP请求,为何还需要事件呢?

阅读 1.7k
1 个回答

他俩可以认为没有什么直接的关系。

作为Web服务对外暴露HTTP API,这个很容易理解。

EventBus消息总线,他的目的是进行服务内部的消息(广播)通信,可以达到解耦的目的。基本都会使用MQ消息队列来进行处理。

比如:用户服务,发生了用户注册事件,就可发送如下广播

{
    "event": "userRegister",
    "ext": {
        "id": "123123123",
        "nickname": "sg"
    },
    "ts": "2023-03-15 22:48:58"
}

一些对注册事件感兴趣的服务,就可订阅该事件。比如邮件服务,当有用户注册时需要发送欢迎邮件,账户服务需要初始化账户等。

当然也可通过RPC(HTTP)的方式进行调用触发相应的动作,但会增加复杂性,同时也会增加系统间的耦合性。

总之,消息总线可以认为是一种思想,或者一种设计模式?解决某一类问题的方案。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进