12

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

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

问题是,我是一个生疏的 Java 程序员,对这个选择几乎没有经验,我非常感谢任何一起使用过这两者的人的任何评论,或者至少从使用另一个的经验中调查使用一个。

我认为我的主要问题是:

  1. 对于新应用程序的早期阶段,CQRS 是否过于复杂?
  2. 是否存在任何使它们无法匹配的陷阱,例如 GAE 的 Datastore 可能无法很好地匹配 CQRS 要求?
  3. 任何人都可以推荐AxonJdon特别适合(或不适合)GAE 吗?
  4. 我还应该问什么其他问题?
4

1 回答 1

13

CQRS 并不过分复杂或困难,但确实需要时间来调整您的思维方式,使其摆脱多年来一直困扰我们的传统请求/响应和客户端/服务器交互。

在具有事件溯源的 CQRS 中,数据存储是微不足道的,因为您对存储引擎的要求并不高——NEventStore项目(用 C# 编写)可以轻松支持 40-50 种不同类型的存储引擎而没有太大困难。

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

我从未听说过 Jdon,但 Axon 已经存在了一段时间。尽量不要过于依赖框架。随着您对 CQRS 理解的加深,这将变得更加明显——基本上这就像在您的代码中试图避免在任何地方使用 Hibernate。您应该只在应该使用的地方使用 Axon(或您选择的任何一个),而不是更多。

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

于 2011-03-22T02:02:48.463 回答