跳转至

微服务 汇总

时间:2018-07-21 10:49:20

参考:

  1. 微服务从设计到部署
  2. event-sourcing-examples

微服务#

分布式服务之间实现原子性#

依靠本地事务#

数据变更时记录数据变更日志到另一张表,利用数据库事务保证数据变更和变更日志记录在一个事务中。利用另外的线程从变更日志表中读取数据并发不事件供其它服务消费。

利用数据库事务日志#

数据库实现事务会记录数据变更日志,如Mysql的 binlog, 从数据库日志中读取数据变更并发布事件供其它服务消费,开源框架有 maxwall 等。

事件溯源#

不存储实体当前状态,只存存储状态改变事件,保存每个事件是单一的原子操作具有原子性。事件存储类似于传统数据库和消息代理,持久化数据并把时间发送给感兴趣的消费者。

The key idea in event sourcing is that rather than persist the current state of a business entity, a service persists the entity’s state changing events. For example, the state-changing events for a bank account include AccountOpened, AccountDebited, and AccountCredited. When a service recreates an entity’s current state it simply replays the events.

单体应用拆分为微服务#

  • 新功能用微服务实现
  • 先拆分简单模块
  • 再拆分会有收益的模块
  • 再拆分CPU密集的模块