微服务与系统架构全解析
1. CQRS 架构通信机制
在系统设计中,命令和查询端不一定要存在于两个或多个独立的应用程序中。只要功能仅通过事件存储发布的事件进行通信,它们可以存在于同一个应用程序内。例如,这可能会形成一个兼具服务员和厨师功能的单一应用程序,并且还能实现水平扩展。如果不需要分别扩展读写端,这是一种合理的权衡。
构建 CQRS 系统是实现异步、最终一致性通信的一种方法。通信形式有同步和异步之分。为了实现可扩展的应用程序,分布式系统不应依赖涉及多个系统的同步通信,因为这会导致分布式事务。
实现可扩展性的一种方法是对逻辑上的异步过程进行建模,例如使用 HTTP 等通信协议触发异步处理,同时调用者立即返回。这引入了最终一致性,但使系统能够扩展。
CQRS 通过为客户端提供外部接口(如 HTTP),而服务之间通过事件存储进行通信。一般来说,在设计分布式系统时,建议优先考虑可用性(即可扩展性)而非一致性。CQRS 就是将异步通信与事件溯源相结合的一种方法。
2. 企业中的数据和技术共享问题
企业中常见的做法是共享和重用技术以及常用数据。多个构成企业系统的应用程序通常使用相似的技术,这自然会引发共享技术的想法,比如使用共享模型。然而,共享数据库与分布式系统的理念相悖。常用数据库会紧密耦合相关应用程序,架构或技术的更改会将应用程序和项目的生命周期捆绑在一起,还会阻止应用程序进行扩展,这违背了分布式系统的初衷。
共享技术也存在类似问题。常用模块和依赖项会在实现中引入技术约束,限制应用程序的独立性。从系统的领域知识和责任角度来看,共享数据和技术意义不大。建议选择潜在的重复和独立性,而非技术上的耦合。 </
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



