什么是Atomix
Atomix是一个支持多种方式来解决分布式问题的通用框架。其不关心所解决的问题,而是通过提供多种分布式的原语来解决问题包括的原语有:
- 分布式数据结构(Map,Set,Tree,技术器,值等)
- 分布式会话(点对点,发布订阅等)
- 分布式协调(分布式锁,分布式选举,分布式信号量,分布式barrier(可以看做分布式的CyclicBarrier))
- 分组管理
1 | AtomicMap<String, String> map = atomix.<String, String>mapBuilder("my-map") |
这些原语中每一个都可以使用不同的分布式协议进行复制,并且根据协议的不同提供不同程度的保证
- Multi-Raft 强一致性的分布式算法
- Multi-Primary 基于分区leader的同步/异步复制算法
- Anti-entropy 高度可扩展的最终一致性协议(Gossip协议 )
- CRDT 最终强一致性复制协议(无冲突的数据的一致性数据处理,Gossip风格)
1 | MultiRaftProtocol protocol = MultiRaftProtocol.builder() |
原语是线程安全的、异步的和反应式的,严重依赖事件通知来检测系统中的状态变化
1 | LeaderElection<MemberId> election = atomix.getElection("my-election"); |
原语支持不同的访问方式:
- 异步api
- 同步api
- REST API
原语支持不同的配置方式:
- Java builders
- HOCON 配置
- JSON配置