• 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和查询处理程序之间可能存在一个缓存层,用来进一步加快查询响应的速度。

  • 相关阅读:
    SpringMVC基础知识
    git pull 和git fetch的区别
    动态规划的原理?
    为什么要使用volatile修饰呢?
    内部类,匿名内部类?
    什么是性能优化?
    如何定位CPU瓶颈?
    什么是程序的耦合?
    什么是性能优化?
    Class类的常用方法?
  • 原文地址:https://www.cnblogs.com/bugutian/p/10081541.html
Copyright © 2020-2023  润新知