美文网首页
《微服务架构设计模式》读书笔记---第七章:在微服架构中实现查询

《微服务架构设计模式》读书笔记---第七章:在微服架构中实现查询

作者: 白板时钟 | 来源:发表于2020-05-25 00:45 被阅读0次

    在微服务中实现查询操作有两种不同的模式:API组合模式命令查询职责隔离(CQRS)模式

    API组合模式

    这个模式通过调用拥有数据的服务并组合结果来实现查询操作。有两种类型的参与者:

    • API组合器
    • 数据提供方服务

    由谁来担任API组合器

    • 客户端,例如前端
    • API Gateway
    • 将API组合器实现为独立的服务

    优势和劣势

    这种模式的优势是,实现简单。
    劣势:
    增加了额外的开销:要么组合数据,要么多次调用。例如前端的列表,需要多次调用或者自己组合
    带来可用性降低的风险:解决方式可以使用缓存,缓存数据提供方的数据,或者在数据提供方不可用时,返回不完整的数据
    缺乏事务数据一致性:两个数据提供方的数据,可能不一致。

    命令查询职责隔离(CQRS)模式

    命令查询职责隔离(Command Query Responsibility Segregation, CQRS)模式,将持久化数据模型和使用数据的模块分为两个部分:命令端和查询端。

    命令端模块和数据模型实现创建、更新和删除操作。
    查询端模块和数据模型实现查询。

    CQRS不仅可以在服务中应用,还可以以此模式定义查询服务

    查询服务通过订阅由一个或多个服务发布的时间,来确保它的数据是最新的。

    优势和劣势

    优势:
    在微服务架构中高效的实现查询
    支持多种不同的查询类型,可以定义特定的视图,帮助高效查询
    隔离命令端和查询端

    弊端:
    结构复杂
    数据复制有延迟。 可以提供版本信息,进行解决方案。

    设计CQRS视图

    设计CQRS视图,需要考虑一下几个问题

    • 底层数据库的选择
    • 数据访问模块,需要是幂等的,支持并发更新。可以使用乐观锁获者悲观锁,保证并发处理。
    • 实现新视图或更改时,需要考虑构建或重建视图。可以使用归档事件恢复视图,或者使用快照的方式,短期备份。
    • 应对复制延迟

    相关文章

      网友评论

          本文标题:《微服务架构设计模式》读书笔记---第七章:在微服架构中实现查询

          本文链接:https://www.haomeiwen.com/subject/prxeahtx.html