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

时间:2011-03-21 23:03:21

标签: java google-app-engine cqrs axon

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

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

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

    我认为我的主要问题是:

    1. 新申请的早期阶段CQRS是否过于复杂?
    2. 是否存在任何可能导致它们匹配不佳的诱杀陷阱,例如GAE的数据存储可能与CQRS要求不匹配?
    3. 任何人都可以推荐AxonJdon作为GAE特别合适(或不适合)吗?
    4. 我应该问其他什么问题?

1 个答案:

答案 0 :(得分:13)

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

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

纯粹的亚马逊网络服务和谷歌应用引擎都是CQRS应用程序的绝佳平台,因为它们可以引导您选择所有正确的基础设施 - 使用消息传递进行异步,非阻塞通信。

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

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