• CQRS粗浅理解


    CQRS(命令查询责任分离)是一种奇特的模式,表示解耦系统的输入和输出。

    通常情况下,输入端将数据写到数据库,输出端从数据库查询。与读写锁的场景类似,写的过程中不能读。正常情况下没有问题,但是在大规模、高吞吐量和需要对事件进行复杂处理的情况下,每当输入事件来临,读取操作就要等待,是非常致命的。

    CQRS的目的就是解决这一类问题的,以下摘自《Go:构建基于Go和React的云原生Web应用与微服务》,如图:


    我们将接收到的刺激称为command,将读取操作成为query。整个流程如下:

    1.一些外部刺激调用命令处理程序(CommandHandler);

    2.命令处理程序负责创建事件(Event);

    3.事件被存储在事件存储器(Event Store)中;

    4.事件处理器(Event Processor)可以响应接收的入站事件,并且进行必要的聚合和计算,以便创建发往查询处理程序的新数据;

    这些数据本身就是为特定查询量身定制的,本质上是一个通过事件计算出的现实,可用于具体的查询。这不是临时缓存,而是持久化的视图(View)或存储库(Store)。

    5.当请求进入查询处理程序时,它们会向View Store发起及其快速和简单的请求。许多情况下,在View Store和查询处理程序之间可能存在一个缓存层,用来进一步加快查询响应的速度。

  • 相关阅读:
    Android调用浏览器打开网址遇到的问题
    TexturePacker压缩png的命令
    碎碎念
    推荐几款API文档集合工具
    XCode打包脚本
    Android手机提示“未安装应用程序”
    移动环境下DNS解析失败后的优化方案
    7z压缩与解压命令
    Lua的文件操作
    IOS判断用户的网络类型(2/3/4G、wifi)
  • 原文地址:https://www.cnblogs.com/bugutian/p/10081541.html
Copyright © 2020-2023  润新知