惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Cyberwarzone
Cyberwarzone
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
L
LINUX DO - 最新话题
V
Vulnerabilities – Threatpost
T
Troy Hunt's Blog
Cloudbric
Cloudbric
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
H
Heimdal Security Blog
S
Schneier on Security
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Attack and Defense Labs
Attack and Defense Labs
A
Arctic Wolf
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest
AWS News Blog
AWS News Blog
Scott Helme
Scott Helme
W
WeLiveSecurity
S
Secure Thoughts
Y
Y Combinator Blog
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
量子位
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
T
Tenable Blog
The GitHub Blog
The GitHub Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
J
Java Code Geeks
Vercel News
Vercel News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
小众软件
小众软件
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Palo Alto Networks Blog

博客园 - 求知者

更新测试 常用的重试技术—如何优雅的重试 CQRS/ES框架调研 Hibernate Note(Keep update) 毕业了! 皮鞋美容 重装系统后实战EFS解密 巧用饮食缓解春困 [转]安全防御四步 校园网安全经验谈 2006年猪的述职报告 [转] 某大型IT公司招网络工程师认证试题精选(要求:CCNA或 HCNE以上) win2003负载均衡实现 记录一下 第一次参加招聘会 备考有感 实习一瞥 几十年后我死了 我的QQ号怎么办? 网络工程师学习笔记 中秋贺词集锦
【转】 微服务架构之事件驱动架构
求知者 · 2018-06-21 · via 博客园 - 求知者

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

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

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

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

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

结论

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