在微服务架构中,有事件(EventBus等)和HTTP请求(API Gateway) 两种方式调用service。请问一下:1.事件和HTTP 请求有什么区别? 2.有了HTTP请求,为何还需要事件呢?
他俩可以认为没有什么直接的关系。作为Web服务对外暴露HTTP API,这个很容易理解。而EventBus消息总线,他的目的是进行服务内部的消息(广播)通信,可以达到解耦的目的。基本都会使用MQ消息队列来进行处理。比如:用户服务,发生了用户注册事件,就可发送如下广播{ "event": "userRegister", "ext": { "id": "123123123", "nickname": "sg" }, "ts": "2023-03-15 22:48:58" }一些对注册事件感兴趣的服务,就可订阅该事件。比如邮件服务,当有用户注册时需要发送欢迎邮件,账户服务需要初始化账户等。当然也可通过RPC(HTTP)的方式进行调用触发相应的动作,但会增加复杂性,同时也会增加系统间的耦合性。总之,消息总线可以认为是一种思想,或者一种设计模式?解决某一类问题的方案。本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
他俩可以认为没有什么直接的关系。
作为Web服务对外暴露
HTTP API
,这个很容易理解。而
EventBus
消息总线,他的目的是进行服务内部的消息(广播)通信,可以达到解耦的目的。基本都会使用MQ消息队列来进行处理。比如:用户服务,发生了
用户注册
事件,就可发送如下广播一些对注册事件感兴趣的服务,就可订阅该事件。比如邮件服务,当有用户注册时需要发送欢迎邮件,账户服务需要初始化账户等。
当然也可通过RPC(HTTP)的方式进行调用触发相应的动作,但会增加复杂性,同时也会增加系统间的耦合性。
总之,消息总线可以认为是一种思想,或者一种设计模式?解决某一类问题的方案。