深入解析微服务设计模式与实践
1. 服务数据库维护模式
在为每个服务维护数据库时,为克服相关弊端,可采用以下模式:
1.1 Sagas
Sagas 是一系列本地事务的批量序列。批量中的每个条目会更新指定数据库,并通过发布消息或触发事件来促使批量中的下一个条目执行。若批量中的任何条目本地执行失败或违反任何业务规则,Sagas 将执行一系列补偿事务,以补偿或撤销由批量更新所做的更改。
1.2 API 组合
此模式主张由应用程序而非数据库执行连接操作。例如,有一个专门用于查询组合的服务。若要获取每月产品分布信息,首先从产品服务中检索产品,然后查询分销服务以返回所检索产品的分销信息。
1.3 命令查询职责分离(CQRS)
该模式的原则是拥有一个或多个不断演变的视图,这些视图的数据通常来自不同的服务。从根本上讲,它将应用程序分为两部分:命令或操作端以及查询或执行端。这更像是一种发布 - 订阅模式,命令端处理创建、更新和删除请求,并在数据更改时发出事件。执行端监听这些事件,并通过维护视图来处理查询,这些视图会根据命令或操作端发出的事件订阅保持最新状态。
2. 分布式微服务架构的共享问题处理
2.1 外部化配置
应用程序通常会使用一个或多个第三方基础设施服务,如服务注册表、消息代理、服务器、云部署平台等。任何服务都必须能够在多个环境中无修改地运行,并且应具备获取外部配置的能力。此模式建议将所有配置(包括数据库信息、环境信息、网络位置等)外部化,创建一个启动服务来读取这些信息并相应地准备应用程序。有多种实现方式,例如 Node.js 可设
超级会员免费看
订阅专栏 解锁全文
170万+

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



