分布式键值存储(Distributed Key-Value Store)
前言
分布式键值存储(Distributed Key-Value Store)并不是一个新鲜的玩意。
常见的Redis,Memcache等等都有很多人在用。
不过如果要是说其中的细节,如replicate,读写,一致性,retry等等的话,又是经常会遇到把自己绕的混淆不清的情况。。
恰巧我最近在看的一门网课《Programming Reactive Systems》中有一道作业题就是要自己实现一个Distributed Key-Value Store,那就正好借此机会详细写下其中的关键点。
组成系统的参与者
既然是分布式键值存储,那么肯定会有主从节点,每个结点又会有自己的持久化,而主从之间也需要协调,于是就得出了如下关键参与者:
- Primary: 主节点。接受来自client的更新(增/删/改)操作,并把更新后的数据扩散到其它节点。当然,也可以接受来自于client的读操作。
- Secondary: 从节点。接受来自主节点的更新操作。接受来自client的只读操作。
- Arbiter: 仲裁者。任何节点,无论主从,都要把自己注册到Arbiter上去。当有从节点加入或者离开集群的时候,Arbiter负责告知主节点。
- Persistence: 每个节点都拥有自己的独享的Persistence。用于把节点上的数据持久化。
- Clients: 客户端,可能与主或者从节点通信,进行各种读写操作。

