Atomix

什么是Atomix

Atomix是一个支持多种方式来解决分布式问题的通用框架。其不关心所解决的问题,而是通过提供多种分布式的原语来解决问题包括的原语有:

  1. 分布式数据结构(Map,Set,Tree,技术器,值等)
  2. 分布式会话(点对点,发布订阅等)
  3. 分布式协调(分布式锁,分布式选举,分布式信号量,分布式barrier(可以看做分布式的CyclicBarrier))
  4. 分组管理
1
2
3
AtomicMap<String, String> map = atomix.<String, String>mapBuilder("my-map")
.withCacheEnabled()
.build();

这些原语中每一个都可以使用不同的分布式协议进行复制,并且根据协议的不同提供不同程度的保证

  1. Multi-Raft 强一致性的分布式算法
  2. Multi-Primary 基于分区leader的同步/异步复制算法
  3. Anti-entropy 高度可扩展的最终一致性协议(Gossip协议 )
  4. CRDT 最终强一致性复制协议(无冲突的数据的一致性数据处理,Gossip风格)
1
2
3
4
5
6
7
8
9
MultiRaftProtocol protocol = MultiRaftProtocol.builder()
.withReadConsistency(ReadConsistency.LINEARIZABLE)
.build()
Map<String, String> map = atomix.<String, String>mapBuilder("my-map")
.withProtocol(protocol)
.withCacheEnabled()
.build();

map.put("foo", "bar");

原语是线程安全的、异步的和反应式的,严重依赖事件通知来检测系统中的状态变化

1
2
3
4
5
6
7
8
LeaderElection<MemberId> election = atomix.getElection("my-election");

election.addListener(event -> {
Leader leader = event.newLeadership().leader();
...
});

election.run(atomix.getMembershipService().getLocalMember().id());

原语支持不同的访问方式:

  1. 异步api
  2. 同步api
  3. REST API

原语支持不同的配置方式:

  1. Java builders
  2. HOCON 配置
  3. JSON配置