architecture - CQRS/事件溯源架构的最佳实践/存储选择

标签 architecture cassandra redis apache-kafka cqrs

任务。使用 CQRS/事件源架构构建可扩展的高负载应用程序。

让我们假设它是一个有很多在线用户的免费广告板。所以用户应该能够:

  1. 注册/登录
  2. 添加/更新/删除广告
  3. 查看广告列表
  4. 搜索广告
  5. 一段时间后分析广告/从 Event Store 重现每个应用状态。

我的想法。

我会考虑使用类似的东西:

  1. Cassandra/MongoDB... - 商店事件
  2. Kafka/Redis/Hazelcast/RabbitMQ... - 事件队列
  3. Elasticsearch + 缓存(例如 Redis)- 用于 View

问题。

  1. 在每个步骤中使用一个对比另一个的优缺点是什么?或者将事件存储与队列结合起来(例如,使用 Kafka 作为队列和长期事件存储)?
  2. 是否有人拥有经过验证的堆栈并可以分享 CQRS/事件溯源架构的经验?

最佳答案

对于我当前的项目,一个基于 Web 的 CRM 应用程序,我使用以下堆栈:

  1. MongoDB 作为事件存储;
  2. 我不使用事件队列;我不需要一个,因为我使用事件存储中的池;每个消费者都管理自己的状态。
  3. 用于 View 的 MongoDB。

关于architecture - CQRS/事件溯源架构的最佳实践/存储选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958640/

相关文章:

python - Flask 中的应用程序范围请求 Hook 。如何实现?

cassandra - cassandra 中的 G1GC 垃圾收集

cassandra - 有没有办法查看 cassandra 中使用 vnode 的每个节点的 token 范围?

cassandra - Pycassa:如何查询复合类型的一部分

database - 如何在微服务中处理数据库架构更新

php - 动态生成PDF并将其存储在文件系统中?

arrays - 为什么 Rust 以特定于体系结构的方式生成 LLVM IR,并对可变静态变量使用空数组?

ruby-on-rails - 如何扩展 auth_token 的非常短的到期时间?

javascript - 如何在部署到 Heroku 的 Node.js 环境中制作 Redis(Bull)队列?

heroku - Redis 4.0 与 5.0 RDB 文件格式冲突 : `Can' t handle RDB format version 9`