Eri*_*ric 53 architecture design-patterns cqrs
我和我的团队一直在讨论使用CQRS(Command Query Responsibility Segregation)设计模式,我们仍在努力评估使用它的优缺点.根据:http://martinfowler.com/bliki/CQRS.html
我们还没有看到CQRS在该领域的足够用途,但仍然有信心我们理解其优缺点
那么你们怎么想?问题什么时候需要使用CQRS呢?
Den*_*aub 55
CQRS不是涵盖整个应用程序的模式.
它是一个基于域驱动设计(DDD)的概念.DDD的一个重要战略概念就是所谓的有界背景.
在典型的应用程序中,有多个有界上下文,其中任何一个都可以按照它有意义的方式实现.例如
这可能无法解答您的问题,但可能会更深入地了解该主题.老实说,如果不考虑项目的具体细节,我认为根本不能回答,即便如此,很少有类似于最佳实践的东西.
Mai*_*kov 30
CQRL评论家可能会说CQRS很复杂,可能也是如此.
当然,它增加了开发CQRS样式的简单CRUD应用程序的开销,因此我只考虑在以下情况下使用CQRS:
Hen*_*rik 13
当您拥有复杂或困难的业务域时:
或者您有需要对公共数据采取行动的用户:
或者您有可扩展性要求:
或者你有性能问题(可伸缩性的另一面):
或者你有一个物理分离的团队:
这不是CQRS过于复杂,而是计算机.
何时使用CQRS设计模式?
当难以从存储库查询用户需要查看的所有数据时,可以使用CQRS体系结构模式.当UX设计创建跨越多个聚合类型和实例的数据视图时尤其如此.您的域越复杂,这往往越真实.
当它不适合在UX设计上妥协时,使用CQRS会尝试减轻与其他解决方案相关的问题,例如:
总结一下:当难以从存储库中查询数据用户需要查看时使用CQRS,这往往会发生您的域越复杂.
在现实场景中,当您的前端/Web 服务客户端需要来自多个域的大量数据并且从数据库检索这些数据需要很长时间时,CQRS 可能会很有用。
在这种情况下,您可能会考虑创建单独的读取模型,该模型的开发速度更快,并且执行时间可能更快。
从我的观点来看,它增加了两个主要的好处.(与其他许多人一样)
小智 5
以下是使用 CQRS 的原因:
好吧,你的问题没有直接的答案,但我想给你一些 关于如何实现 CRQS 的真实示例,这可以帮助你弄清楚如何在你的应用程序中使用它,
1.Instagram
我们经常看到 Instagram 的故事/卷轴等。这些商店是读取密集型的,最好为此类数据建立一个单独的只读数据库。外部世界只能处理特定的数据库来渲染朋友时间线中的故事,这样做系统不需要打扰存储主要业务密集型信息的主数据库。
2.亚马逊
当下订单时,订单服务会发出一个事件,该事件由其他服务订阅,其中可以更新非规范化只读数据库,而其他服务(比如说消息服务)可以简单地获取规范化信息,例如 userId,从只读数据库订购等,并继续进行电子邮件处理以确认订单