在Google App Engine上实现社交应用,采用CQRS方法是否可行?

12
我认为,CQRS(Command and Query Responsibility Segregation)方法可能适用于在GAE上实现强大且响应迅速的社交应用服务器,因为:
  1. CQRS不需要SQL数据库(GAE不提供)
  2. 它确实需要一个能够容纳序列化对象的数据库,而GAE确实提供了这个功能
  3. 它需要事件队列,GAE也提供了这个功能
  4. 它支持非阻塞、异步、基于消息的架构,可以很好地解决GAE在长时间运行事务方面的限制
  5. 它被宣传为高度可扩展的,这也是为什么乐观主义者选择GAE的原因
问题在于,我是一名生疏的Java程序员,对这个选择相关的经验很少,我非常感谢任何有使用过两者或至少调查过其中一种的人的评论。
我认为我的主要问题是:
  1. 在新应用程序的早期阶段,CQRS是否过于复杂?
  2. 是否存在任何会使它们不匹配的陷阱,例如GAE的Datastore可能不符合CQRS的要求?
  3. 是否有人推荐AxonJdon作为特别适合(或不适合)GAE的选择?
  4. 我还应该问什么其他问题?

啊 - 刚刚注意到有一个有些重叠的问题在http://stackoverflow.com/questions/3781528/end-to-end-example-of-cqrs-implementation-on-top-of-appengine - 是否有一种“正确”的链接方式? - Francis Norton
你最终是否决定采用CQRS来实现社交网络?你能详细说明一下吗? - sm_
我在原型化用户界面后卡在了GAE应用程序上,所以我从未得到过结果,恐怕是失败了。但如果您完成了它并学到了一些东西,请留下评论或回复! - Francis Norton
1个回答

14

CQRS并不是过于复杂或困难,但需要时间来适应我们多年来灌输的传统请求/响应和客户端/服务器交互方式。

在事件溯源中,数据存储并不重要,因为您不需要从存储引擎中获取太多内容--使用C#编写的NEventStore项目可以轻松支持40-50种不同类型的存储引擎。

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

我从未听说过Jdon,但Axon已经存在一段时间了。不要过度依赖框架。随着对CQRS的理解加深,这将变得更加明显--基本上就像试图避免在代码中到处使用Hibernate一样。您应该仅在应该使用Axon(或您选择的任何其他框架)的地方使用它,而不再使用。

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


@Jonathan Oliver,你提到GAE支持“使用消息进行异步、非阻塞通信”,能否指导一下哪些GAE服务可以实现这种基础设施呢? - Pokuri
@Pokuri 我推广的不是具体的技术,而是沟通的方式。 - Jonathan Oliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接