同步:实时响应一一像打电话。
同步带来的问题:
1. 吞吐量。由系统中最慢的决定。
2. 资源。因等待而消耗调用方资源。
3. 一对一。
4. 被调用方宕机可能导致调用方宕机。
异步:非实时响应一一像发邮件。
异步通讯三种方式:
1. 请求响应式一一依赖状态。
发送方发送请求,接收方收到后立即回复“正在处理”。对于返回结果:发送方轮循,查看执行结果;或发送方发送请求时将自己的url发送给接收方,接收方处理完成后回调。
2. 订阅的方式一一依赖事件。
接收方订阅发送方的消息,发送方将内容放到接收方订阅的消息队列中。
3. Broker
该中间件(服务总线)必须是高可用、高性能、可水平扩展、持久化不丢数据。
事件驱动优与劣
优:避免服务间依赖、开发 测试 运维 故障处理流程高度隔离、服务间不会相互Block、易维护(加熔断、降级、限流、版本等)、解开服务间的吞吐
劣:业务流程复杂、事件可能乱序、事务处理复杂。
异步通讯设计重点:
·解耦服务
·隔离性
·服务间的性能互不影响
·利用Broker削峰
·部署、扩容、运维方便
注意事项:
·Broker高可用
·事件顺序可打乱
·业务处理流程不直观
·总控方监控业务流程状态变更逻辑