For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
单体架构和微服务架构都是程序员在开发软件的时候会经常用到的一些架构方法,下面我们就通过案例分析来简单了解一下,微服务架构数据管理方法都有哪些。
在单体架构中,查询不同的实体非常方便,因为是由单个数据库来管理数据,这会很简单。多表关联查询也很简单。对数据的任何修改都会一起更新,或是一起回滚。关系型数据库具有严格的一致性,有ACID事务保证,所以管理和查询数据都很容易。
但在微服务架构中,当我们使用“混合持久化”时,这意味着每个微服务都有不同的数据库,包括关系型数据库和NoSQL数据库,我们应该制定一个策略,在进行用户交互时管理好这些数据。
因此,这意味着我们在处理微服务之间的数据交互时有几种模式和做法,我们将在本节中学习这些模式和原则。
微服务是独立的,只执行特定的功能要求。在我们的电子商务应用中,我们有产品、购物车、折扣、订单等微服务,它们需要彼此交互来满足客户的要求。这意味着它们需要频繁地交互。而这些交互大多是查询每个服务的数据以进行聚合或执行逻辑。
CQRS设计模式
CQRS是跨微服务查询的重要模式之一。我们可以使用CQRS设计模式,以避免复杂的查询,摆脱低效的连接。CQRS是命令和查询责任隔离的意思。本质上,这种模式实现了数据库读取和更新操作的分离。
为了隔离命令和查询,好的做法是用2个数据库物理地分离读和写数据库。此时,如果我们的应用程序是读密集型的,也就是读比写多,我们就可以通过定义自定义数据模式来优化查询。
物化视图模式是实现读数据库的一个很好的例子。因为通过这种方式,我们可以用预定义的细粒度数据来避免复杂的连接和映射,进行查询操作。
通过这种隔离,对于读数据库和写数据库,我们甚至可以使用不同的数据库类型,如使用NoSQL文档数据库进行读取,使用关系数据库进行CRUD操作。
事件源模式
我们已经学习了CQRS模式,该模式主要是与事件源模式一起使用。当搭配使用CQRS与事件源模式时,主要的理念是将事件存储到写数据库中,这将是作为真相来源的事件数据库。
之后,CQRS设计模式的读数据库通过非规范化表提供数据的物化视图。当然,这个物化视图的读数据库消费了来自写数据库的事件,并将它们转换为非规范化的视图。
事件源模式改变了数据保存至数据库的操作。它不是将数据的新状态保存到数据库,而是将所有事件按数据事件发生的顺序保存到数据库。这个事件数据库称为事件存储。
它不更新数据记录的状态,而是将每个修改追加到一个事件的顺序表中。因此,事件存储成为数据的真实来源。之后,这些事件存储通过物化视图转换为读数据库。这种转换操作可以通过发布/订阅模式来处理,实现方式是用消息代理系统发布事件。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。