4月10-12日 QCon 北京,与全球 140+ 顶尖工程师共同解构 AI 时代的技术浪潮! 了解详情
写点什么

在 Windows Azure 中使用 CQRS

  • 2012-04-12
  • 本文字数:657 字

    阅读完需:约 2 分钟

CQRS 作为一种模式,适合需要高可伸缩性和性能的应用程序,它近来变得越来越流行。Mark Seemann 在文章《 CQRS On Windows Azure 》中,使用示例探究了如何在 Windows Azure 平台中使用这种模式。

CQRS 的意思是命令查询责任分离(Command Query Responsibility Segregation),这个模式所基于的想法是,你能够使用与读取信息不同的模型来更新信息。这让你可以对读取和写入操作区别对待,可能会使用不同的数据访问技术访问不同的数据库,甚至使用其他架构模式像 Eventual consistency Event Sourcing 。文中的一些关键点如下:

  • 总是要假设显示的数据是过期的,并使用 UI 正确地设置期望值(因为屏幕上当前数据无法提供任何保证)。
  • 当从 UI 处理请求的时候,创建一个命令,尽快发送(到队列中)并返回。在 Windows Azure 上,这可以通过在存储队列(Storage queues)上实现一个频道(Channel)做到。
  • 分离工作者的角色,它们可以选取从 UI 发送过来的命令消息并对其进行处理。
  • 让写入操作是幂等的(Idempotent),从而多次重新传送消息,而不会导致数据问题。
  • 使用乐观并发机制——在 Windows Azure 中,这可以通过使用 Etags(CloudBlob.Properties.ETag)做到。
  • 更新视图数据可以在另一个频道(Channel)中异步发生——然后就可以被控制器查询到。
  • 以非规范的方式读取数据,以提升读取的性能。

从总体上了解更多 CQRS 信息的好地方是 Rinat Abdullin 的 CQRS 开始页面。你还可以阅读 Martin Fowler关于这个主题的文章,或者阅读InfoQ 上Arunava Chatterji 写的最新文章《健康的架构

查看英文原文: CQRS With Windows Azure

2012-04-12 09:301539
用户头像

发布了 340 篇内容, 共 134.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

10分钟打造基于ChatGPT的Markdown智能文档

俞凡

人工智能

C++ STL容器和算法:详解和实例演示

小万哥

c++ 容器 算法 后端 stl

Django笔记十九之manager用法介绍

Hunter熊

Python django Manager

为什么说:Linux中一切皆文件?

wljslmz

Linux 三周年连更

什么是 RUM JavaScript

汪子熙

JavaScript 前端开发 三周年连更

算法题每日一练:螺旋矩阵 II

知心宝贝

数据结构 算法 前端 后端 三周年连更

面对“失业焦虑”我们可以做些什么?| 社区征文

莪是男神

三周年征文

技术分享:如何将JSON中的日期格式字符串替换为占位符

IT蜗壳-Tango

三周年连更

Windows下 IDE工具常见编译错误FAQ下

鸿蒙之旅

OpenHarmony 三周年连更

KubeShark: Kubernetes的Wireshark

俞凡

Kubernetes 云原生

音视频八股文(9)-- flv的h264六层结构和aac六层结构

福大大架构师每日一题

音视频 ffmpeg 福大大

深入理解vue2.x中Object.defineproperty()和vue3.x中Proxy

不叫猫先生

Vue 三周年连更

Prometheus监控神器-自动发现篇

乌龟哥哥

三周年连更

vue2.x中keep-alive源码解析以及LRU缓存策略使用

不叫猫先生

缓存 Vue LRU keep-alive实现原理 三周年连更

1500字讲懂单体架构和微服务架构的区别

Java架构历程

三周年连更

OpenGL入门一:基础知识及概念

轻口味

opengl 图形图像 三周年连更

什么是软件开发领域的 obsolete 或者 deprecated 含义

汪子熙

软件工程 软件开发 三周年连更

如何实现网站访问量的统计?

海拥(haiyong.site)

三周年连更

Django笔记二十之手动编写migration文件

Hunter熊

Python django migration

算法题每日一练:无重复字符的最长子串

知心宝贝

数据结构 算法 前端 后端 三周年连更

为什么老有人想让我们“程序员”失业? | 社区征文

se7en

三周年征文

2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109

福大大架构师每日一题

golang 算法 rust 福大大

重磅!算能公司算丰SG2042斩获第六届数字中国建设峰会“十大硬核科技”

Geek_2d6073

设计一个即时群聊天系统软件(采用华为云ECS服务器作为云服务端 )

DS小龙哥

三周年连更

为什么 Go for-range 的 value 值地址每次都一样?

AlwaysBeta

Go 面试

这 30 个工具和服务可以更好地监控和管理 Linux 服务器,很全面!

wljslmz

三周年连更

粉丝提问:区块链与大数据开发读研方向怎么选?

千与编程

区块链、 大数据 开源

如何进一步提高AI输出质量?

石云升

AI ChatGPT 三周年连更

Qz学算法-数据结构篇(顺序存储二叉树、线索化+遍历)

浅辄

数据结构 三周年连更

【程序猿未来之路】作为互联网技术人的“我们”该如何破局 | 社区征文

码界西柚

4月日更 AIGC 三周年征文 三周年连更 生存指南

一文了解Spring Framework 5 新 Web 框架:Spring WebFlux

Java架构历程

三周年连更

在Windows Azure中使用CQRS_.NET_Roopesh Shenoy_InfoQ精选文章