写点什么

在 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:301548
用户头像

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

关注

评论

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

积极重夺制造霸主地位,英特尔不玩“纳米游戏”了

E科讯

SLB 负载均衡实践

若尘

负载均衡 阿里云 弹性负载均衡 8月日更

kubernetes入门:简介与基础操作命令

小鲍侃java

8月日更

手撸二叉树之二叉搜索树的最近公共祖先

HelloWorld杰少

数据结构与算法 8月日更

华为云UGO:醒醒!你的异构数据库迁移难题有救了

华为云开发者联盟

数据库 迁移 华为云 异构数据库 UGO

软件架构模式之微服务架构

架构精进之路

架构 微服务 8月日更

如何在渲染之前等待 Axios 数据?

吴脑的键客

大前端 React axios

架构实战营毕业设计

eoeoeo

架构实战营

这些智能合约漏洞,可能会影响你的账户安全!

华为云开发者联盟

区块链 智能合约 安全 形式化验证 华为区块链服务

容器云平台和Kubernetes之间不得不说的那些事

用友BIP

Kubernetes 容器

十大排序算法--希尔排序

Ayue、

排序算法 8月日更

【Flutter 专题】78 图解 Android Native 集成 FlutterBoost 小尝试 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

netty系列之:netty中的ByteBuf详解

程序那些事

Java Netty nio 程序那些事

ToastUtil实用封装

Changing Lin

8月日更

混合基础设施下,服务网格(Service Mesh)如何对应用进行统一管理

韩陆

我两年的坚持,值了!

程序员鱼皮

Java JavaScript 腾讯 职场 大前端

【LeetCode】有效三角形的个数Java题解

Albert

算法 LeetCode 8月日更

springcloud 微服务日志写入kafka

Rubble

kafka Spring Cloud 8月日更

百度第25季黑客马拉松再秀“技术基因”,累计产生创意超7000个

科技热闻

上K8s,研发团队如何从容一点?

行云创新

容器 k8s

面试官:展开说说,Spring中Bean对象是如何通过注解注入的?

小傅哥

spring 小傅哥 注解注入

企业需要拥有自己特色的DevOps

用友BIP

Docker 容器 DevOps 微服务

Java代码中,如何监控Mysql的binlog?

码农参上

Binlog 实战

CodeDay#8:支付宝都在用的容器技术了解一下

蚂蚁集团移动开发平台 mPaaS

小程序 支付宝小程序 支付宝 移动开发 mPaaS

手把手教你怎么导入Go语言第三方库「让我们一起Golang」

Regan Yue

后端 Go 语言 8月日更

手撕环形队列系列三:多生产者并行写入

实力程序员

程序员 数据结构 C语言 编程开发 环形队列

用微服务架构方式交付云服务产品

用友BIP

容器 微服务 专属云

【Git技术专题】如何使用git中的tag进行版本开发控制?

码界西柚

git 8月日更

经验之谈:程序员应该如何学好大数据技术

博文视点Broadview

JVM

ltc

JVM

LeetCode题解:173. 二叉搜索树迭代器,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

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