最近参与公司项目研发,在其中发现对于数据的管理存在一些小问题,根据以往经验,在这里记录下微服务数据设计模式。
乐都网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联建站从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
微服务架构中的服务是松耦合的,可以独立开发、部署和扩展。每个微服务都需要不同类型的数据和存储方式,也因为这样每个微服务都有自己的数据库。
每个微服务都有自己的数据库,可以自由选择如何管理数据。
是否需要为每个服务使用不同的数据库服务器?这不是一个硬性要求。让我们看看我们能做些什么。
需要连接多个数据库的查询 —以下数据模式可以克服这一挑战。
跨多个数据库事务 —为了解决这个问题,我们可以使用Saga 模式。
通过事件溯源,业务实体的状态由一系列状态变化的事件跟踪。每当业务实体的状态发生变化时,都会将新事件添加到事件列表中。由于保存事件是一个单一的操作,它本质上是原子的。通过重放事件,应用程序重建实体的当前状态。
应用程序将事件保存在事件存储中,事件存储是事件数据库。可以使用其 API 从存储中添加和检索事件。事件存储也充当消息代理。服务可以通过其 API 订阅事件。当服务在事件存储中保存一个事件时,它会发送给所有感兴趣的订阅者。当实体有大量事件时,应用程序可以定期保存实体当前状态的快照以优化加载。应用程序查找最近的快照以及自该快照以来发生的事件以重建当前状态。这减少了要重播的事件的数量。
您可以使用 API 组合模式实现从多个服务中检索数据的查询操作。在这个模式中,通过调用拥有数据的服务然后组合结果来实现查询操作。
在微服务架构中查询数据的一种便捷方式。
有时,查询会导致大型数据集的低效内存连接。
RDBMS 通常用作记录事务系统和文本搜索数据库,例如用于文本搜索查询的 Elasticsearch 或 Solr。一些应用程序通过同时写入两者来保持数据库同步。其他人定期将数据从 RDBMS 复制到文本搜索引擎。基于此架构构建的应用程序利用了多个数据库的优势、RDBMS 的事务属性以及文本数据库的查询能力。CQRS 概括了这种架构。
微服务架构在实现查询时面临三个常见挑战。
这三个问题都可以通过使用 CQRS 模式来解决。
CQRS 的主要目标是分离或分离关注点。因此,持久数据模型分为两部分:命令端和查询端。
创建、更新和删除操作由命令端模块和数据模型实现。查询由查询端模块和数据模型实现。通过订阅命令行发布的事件,查询端保持其数据模型与命令端同步
使用 sagas,您可以在不使用分布式事务的情况下保持微服务架构中数据的一致性。您为跨多个服务更新数据的每个命令定义一个 saga。saga 是一系列本地事务。本地事务使用ACID事务框架更新单个服务中的数据。
Sagas 利用补偿事务来回滚更改。假设saga的第n个交易失败。必须撤消前 (n-1) 个事务。结果,总共 (n-1) 个补偿事务将被启动以以相反的顺序回滚更改。
为了实现一个 saga,它需要逻辑来协调其步骤。一旦系统命令启动了一个 saga,协调逻辑必须选择并指示第一个 saga 执行本地事务。一旦该事务完成,编排协调就会选择并调用下一个 saga 参与者。这个过程一直持续到传奇完成。如果本地事务失败,saga 必须以相反的顺序执行补偿事务。
编排 :在saga的参与者之间分配决策和排序。他们主要通过交换事件进行通信。
编排 —一个 saga 的协调逻辑应该集中在一个 saga 编排器类中。在 saga 期间,编排器向参与者发送命令消息,告诉他们应该执行哪些操作。
当前标题:微服务架构的数据设计模式
URL标题:http://www.36103.cn/qtweb/news29/11829.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联