微服务架构中的通信、边界与客户端技术解析
1. 异步通信与事件驱动
1.1 事件与异步通信概述
事件代表事后的状态变化,例如 SimpleBank 订单服务可能发出的 OrderCreated、OrderPlaced 和 OrderCanceled 等事件。这种异步通信方式能让系统更流畅地演进,降低服务间的耦合度。不过,它也存在代价:异步交互更难理解,因为系统的整体行为不再明确地编码为线性序列,系统行为会变得越来越具有涌现性,需要投入更多精力进行监控。
1.2 异步通信模式
1.2.1 作业队列(Job Queue)
在作业队列模式中,工作者从队列中获取作业并执行,每个作业仅处理一次,无论有多少工作者实例,这种模式也被称为“胜者全得”。例如市场网关可以采用这种方式,订单服务创建的每个订单会触发 OrderCreated 事件,并排队等待市场网关服务进行处理。该模式适用于事件与响应工作存在 1:1 关系,且工作复杂或耗时的场景。默认情况下,这种方法不需要复杂的事件传递,许多任务队列库可以使用常见的数据存储,如 Redis 或 SQL 数据库。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(订单服务):::process -->|OrderCreated事件| B(事件队列):::process
B -->|作业分配| C(市场网关1):::process
B -->|作业分配| D(市场网关2)::
超级会员免费看
订阅专栏 解锁全文
10万+

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



