关于Akka在事件溯源的若干思考

shana

谈及CQRS,一定离不开Event Sourcing的讨论。首先阐明一个问题,Event Sourcing是否是必须的?主要是两点顾虑:

  • 引入Event Sourcing会带来一定额外开销,因为要将每次的Event按一定顺序存储下来。这样做是因为在分布式并发较大的情况下,可以保证CAP的最终一致性。因为传统数据库事务的回滚操作,在分布式环境操作显然是不切实际的,你不可能让每个请求处理都交给数据库去处理,这样会给数据库带来压力。
  • 由于领域驱动设计理念,不可避免要记录Entity的状态。Event会改变Entity的State,一方面持久化Event可以方便对State进行回滚,对应PersistenceActor的snapshot;另一方面,Entity的事件需要进行pub-sub通信模式,实现解耦。但State并不是领域驱动设计阐述的内容,它是一种编程模式或一种架构方法。例如React的Redux设计了State,用于描述事件发生,记录已经改变了组件或模型的State。
Read more

How to Deploy a MongoDB Sharded Cluster on CentOS 7

Sharding is a MongoDB process to store data-set across different machines. It allows you to perform a horizontal scale of data and to partition all data across independent instances. Sharding allows you to add more machines based on data growth to your stack.

Read more