微服务架构设计模式 pdf_六种常用的微服务架构设计模式 第四种模式

第四种模式:分层API架构上事件驱动的状态管理

71d45659d48a5aa5413ec8bfa5c787eb.png

事件驱动并不是一个新的设计模式。许多ESB最初的设计模式就是一个事件驱动系统。当在微服务体系上实施事件驱动架构时,它能够提供一些强大的抽象。事件驱动系统通常使用某种类型的队列(类似于面向消息的系统),但是围绕队列所传递内容的设计和行为,强制执行一个标准;具体来说,就是事件。

人们经常将事件驱动模式与其他模式相混淆,因此在事件驱动模式中涵盖了大量的设计。严格地说,事件是关于过去发生的,具有相关代表性状态和时间戳的东西。事件允许接收它的服务通过按顺序重放事件来重建状态的物化视图。然而,在许多实现中,往往将事件(已经发生了的事情)与命令(让某件事情发生)混淆在一起。如果事件和命令不进行区分的话,架构设计的可预测性是有缺陷的。也就是说,不可否认,事件驱动的设计模式优于面向消息的方法(因为事件驱动的设计更为具体);但是由于事件驱动的设计模式缺乏一致性,在实现中往往会出现问题。但是,鼓励并执行一致标准的团队会发现,事件驱动的设计模式能够在微服务体系结构中工作得很好。

问题:

为了确保系统内数据的完整性,需要复制关键业务事件,以便在微服务或数据存储之间进行同步。

解决方案:

使用常见的事件抽象来表示系统中的发生变化的组件。

应用:

当业务发生改变时,将其封装成过去时的事件,并发送给相关方。业务中的更改就是发送和处理这些事件的产物。

1c16fd2d8fd9fec68c390fb7c23e7894.png

影响:

1、增加复杂性,因为这种模式让状态以一种新的方式更改和移动。

2、不提供任何标准模式,实现可能是不一致的,除非建立并实践统一的标准。

3、对于在发生故障时如何处理数据冲突或重建状态,不提供任何具体的解决方案。

目标:

1、内聚性:由于其标准化的特性,事件驱动架构非常容易使用和理解。

2、可伸缩性:事件驱动的设计模式需要更深层次的技术决策(如何发送/处理/存储事件?以及重传?),但是在这种模式下可伸缩性是可实现的。

3、更改的速度:会受到更具内聚性的架构影响,如果没有依赖性分析,管理手段有点过于依赖团队的知识和运气。

b1268b7e95e8926d6185ef9f29cf717f.png

主要特点:

1、异步通信机制将带来高效的IPC(Inter-Process Communication,进程间通信)。

2、丧失了设计的灵活性,取而代之的是可预测的行为。

3、通过特定的一致性模型,提高了数据一致性和状态管理能力;任何给定的状态都是事件的重构4、由于与面向消息设计模式的相似性,在事件与命令混合的地方可能会出现混淆。

5、该模式具备合理的可操作性以及有效的可扩展性。

6、该模式在具备一致性能力时有很强的内聚力,但内聚力往往随时间推移而变弱。

fb756e1a39a7d466b89865a59dab1de7.png

分层API架构上事件驱动的状态管理模式如何与现有系统、SOA或API共存?

事件驱动系统可以与现有系统共存,但这两个系统之间往往需要一个“转换层”,这个“转换层”跨越体系结构中事件驱动部分与非事件驱动部分的边界。本质上,事件驱动系统在其架构内部使用一致的语言,其架构外部的任何内容都需要转换(输入或输出)才能参与进来。分层API架构上事件驱动的状态管理模式提供了一种清晰的方法,将体系结构中的事件驱动部分与传统集成和企业系统分离开来,但这确实意味着,您倾向于使用事件驱动的微服务创建“新”功能,这些微服务可以在其他地方更新,或与边界外的系统和API同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值