【转】 微服务架构之事件驱动架构

原文:https://blog.csdn.net/jacks_sure/article/details/52537886

 

 

事件源方法有如下的优点: 
- 事件即状态,发布事件就是在更新状态,因此天然具有原子性,并且不会出错 
- 由于存储的是事件,而不是域对象,因此避免了对象关系抗阻不匹配的问题(object‑relational impedance mismatch problem) 
- 由于存储了所有的业务状态更新事件,因此可以通过事件回放推断出任一时间点的业务实体状态

事件源方法也有以下这些缺点: 
- 要实现一个可靠和高性能的事件仓库并不是一件容易的事情 
- 应用代码需要根据事件仓库的 API 进行重写 
- 事件仓库只直接支持通过主键查询业务实体,因此对于复杂视图的查询比较困难(可以通过CQRS方法解决,具体参见下文)

 

命令操作仍然通过各服务的 API 以更新事件列表的方式进行,而查询操作则通过一个统一的视图查询服务(View Query Service)完成。

根据存储在事件仓库中的事件集合,可以计算得到每个业务实体的状态,这些状态以物化视图(Materialized View)的方式存储在一个数据库中。当有新的事件产生时,也同样会自动更新视图。这样,视图查询服务就可以像查询普通的数据库数据一样实现各种查询场景。具体的设计可参考下图所示:

结论

在微服务架构中,每个微服务都有其私有数据存储,不同的微服务可能使用不同的数据库。这种架构带来便利的同时,也给分布式数据管理带来挑战,其中最大的挑战就是在实现跨服务的业务逻辑时,如何保持服务之间的数据一致性。

转载于:https://www.cnblogs.com/danni505/p/9211053.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值