问题 CQRS是在Google App Engine上实施社交应用程序的好方法吗?


在我看来,CQRS(命令和查询责任隔离)方法可能适合在GAE上实现健壮且响应迅速的社交应用服务器,因为:

  1. CQRS不需要SQL数据库(GAE不提供)
  2. 它确实需要一个能够保存序列化对象的数据库,GAE实际上提供了这些对象
  3. 它需要事件队列,GAE也提供
  4. 它支持非阻塞,异步,基于消息的体系结构,它巧妙地解决了GAE对长时间运行事务的限制
  5. 它被宣传为具有高度可扩展性,这毕竟是乐观主义者选择GAE的原因

麻烦的是,我是一个生锈的Java程序员,几乎没有与这个选择相关的经验,我非常感谢任何使用过这两者的人的任何评论,或者至少使用其他人的经验进行调查。

我认为我的主要问题是:

  1. 在新应用程序的早期阶段,CQRS是否过于复杂?
  2. 是否有任何诱饵陷阱会使它们成为一个糟糕的匹配,例如GAE的数据存储可能与CQRS要求不匹配?
  3. 任何人都可以推荐 轴突 要么 Jdon 是否特别适合(或不适合)GAE?
  4. 我应该问其他什么问题?

4092
2018-03-21 23:03


起源

啊 - 刚刚注意到有些重叠的问题 stackoverflow.com/questions/3781528/...  - 有“正确”的链接方式吗? - Francis Norton
如果CQRS足以实现社交网络,你最终决定了吗?你能详细说明吗? - Siraj Mansour
在对UI进行原型设计之后,我停止了GAE应用程序,所以我从来没有得到过结果,我很害怕。但是如果你这样做,请发表评论或回复并学习一些东西! - Francis Norton


答案:


CQRS不是过于复杂或困难,但确实需要时间来调整您的思维,使其远离传统的请求/响应以及多年来一直困扰我们头脑的客户/服务器交互。

在带有事件源的CQRS中,数据存储是无关紧要的,因为您不需要从存储引擎中获得很多东西 - NEventStore 项目(用C#编写)可以轻松支持40-50种不同类型的存储引擎,没有太大困难。

纯粹的Amazon Web Services和Google App Engine都是CQRS应用程序的绝佳平台,因为它们可以引导您选择所有正确的基础架构 - 使用消息传递进行异步,非阻塞通信。

我从来没有听说过Jdon,但是Axon已经有一段时间了。尽量不要过分依赖框架。随着您对CQRS的理解加深,这将变得更加明显 - 基本上就像试图避免使用Hibernate一样 到处 在你的代码中。您应该只使用Axon(或您选择的任何一个)确切的位置,而不是更多。

您可能会问的一些更好的问题包括在哪里寻求帮助以及已有哪些资源可以帮助指导您理解CQRS。有许多好的博客和网站 - 包括cqrsinfo.com - 可以帮助您入门。此外,如果您要开始使用CQRS,Greg Young的六小时视频是必须的。


14
2018-03-22 02:02



感谢您的深思熟虑,我已经找到了视频 cqrsinfo.com/video - Francis Norton
@Jonathan Oliver正如您所说的GAE“支持消息的异步,非阻塞通信”。您能指导一下促进这种基础设施的GAE服务吗? - Pokuri
@Pokuri具体技术不是我推广的。这是沟通的方式。 - Jonathan Oliver