为什么选择事件驱动的微服务架构?( 二 )


(1)发布事件:上游服务或事件生成器生成事件以响应系统内的特定操作或更改 。这些事件代表必须传达给其他服务的状态更改或重要事件 。事件制作者将这些事件发布到事件经纪人或日志,并将其传播给感兴趣的各方 。
(2)将事件转换为命令:消息处理程序或中间服务接收到事件后,它们通常会转换为命令 。命令代表需要由下游服务执行的操作 。此转换过程通常涉及从事件有效负载中提取相关数据、验证数据并将其映射到适当的命令结构 。
(3)向下游服务发布命令:消息处理程序或中间服务将事件转换为命令后,将命令发布到下游服务或命令使用者 。这些服务负责执行命令中指定的操作、处理数据,并在必要时生成新事件以通知其他服务结果 。
事件驱动系统中的消息驱动通信具有以下几个优点:
(1)异步交互:通过事件和命令进行通信,服务可以异步交互,而无需等待立即响应 。这种方法可以减少系统延迟,实现更好的并行性并增强响应能力 。
(2)解耦服务:使用事件和命令作为服务之间通信的主要方式可以促进松散耦合,因为服务不需要了解彼此的内部实现或 API 。这种解耦简化了开发并允许服务独立发展 。
(3)可扩展性和弹性:消息驱动的通信可以实现更好的负载平衡和资源利用率,因为服务可以独立扩展并适应不断变化的工作负载 。此外 , 这种通信模式还提高了容错能力,因为一项服务的故障不会立即影响整个系统 。
总之,事件驱动系统中的消息驱动通信对于促进松散耦合、异步处理和可扩展性至关重要 。通过从上游服务发布事件,将其转换为命令,并将这些命令发布到下游服务 , 事件驱动系统可以有效地处理复杂的工作负载并适应现代应用程序不断变化的需求 。
3、过渡到异步事件驱动架构:从经验中学习开发人员和团队通常习惯于同步通信模式,因为他们从面向对象或函数式编程的经验中熟悉且直观 。在这些范例中,对象调用其他对象或同步调用其他函数的函数上的方法 。这种熟悉通常导致在分布式系统中的微服务之间采用同步通信模式 。
然而,由于以下几个原因 , 同步处理流程可能不太适合分布式处理环境:
(1)耦合:同步通信导致服务之间的紧密耦合,因为它们需要了解彼此的 API 和实现细节 。这种耦合使得独立发展、扩展或维护服务变得困难 。
(2)延迟:当服务同步通信时 , 它们必须等待响应才能继续,这会增加系统延迟并降低响应能力,特别是在处理复杂的工作流程或高工作负载时 。
(3)容错能力降低:同步通信可能导致级联故障,其中一项服务中的问题可以快速传播到其他服务,从而导致系统范围内的不稳定 。
(4)可扩展性有限:同步通信模式限制了系统水平扩展的能力 。服务必须始终可用且能够响应来处理传入请求,这在高流量场景或繁重工作负载下可能具有挑战性 。
当开发人员遇到生产稳定性问题并认识到脆弱的同步处理模式的局限性时,他们开始认识到异步事件驱动架构的优点 。这些架构具有以下几个优点:
(1)松散耦合:异步事件驱动架构使用消息驱动通信 , 这可以解耦服务并允许它们独立发展,从而促进更高的模块化和可维护性 。
(2)提高响应能力:异步处理使服务能够继续处理其他任务,而无需等待响应 , 从而减少系统延迟并增强响应能力 。
(3)增强的容错能力:异步通信有助于遏制单个服务内的故障,防止级联故障并提高整体系统的弹性 。
(4)可扩展性:异步事件驱动的系统可以更有效地水平扩展,因为服务可以并发且独立地处理事件,而不会被同步调用阻塞 。
通过采用异步事件驱动架构,开发人员可以解决同步通信模式的局限性,并构建更具可扩展性、弹性和高效的分布式系统 。从经验中学习,他们可以创建更强大、更可维护的微服务应用程序 , 更好地适应现代软件开发不断变化的需求 。
4、总结采用事件驱动的微服务是一项战略举措,它改变了企业和开发人员进行软件设计和管理的方式 。正如这里所指出的,开发人员在时间、资源和高质量代码方面的好处是巨大的 。除了简单的商业利益之外 , 还可以为各个行业带来显着的好处 。考虑在医疗保健领域,事件驱动的架构如何使医院网络能够实时监控患者的健康数据,并在检测到异常情况时向医疗保健专业人员发出警报 。这可以通过确保在危急情况下立即采取行动来拯救生命 。


推荐阅读