注:本文不讨论CAP、BASE等,只是单纯的从一个学习者的角度,从各种流行的框架中学习如何实现一个分布式数据存储服务。
一、定义
前文大话分布式理论之二——共识算法与一致性的区别
中提到副本节点间的一致性和应用服务间的一致性。
更通俗的理解,副本节点间的一致性指的就是分布式数据存储服务,比如分布式数据库prolardb、Aurora、tidb等,再比如zookeeper的数据分布式存储,rocketmq和kafka的broker分布式存储消息信息等等,但凡涉及到数据存储的分布式中间件,我认为都可以划分到副本节点间的一致性这一类问题中来。
我将这些涉及到数据存储的分布式中间件,共称为分布式(数据)存储服务。
二、实现
想要实现这样一个分布式(数据)存储服务,我们首先明确这些中间件服务的共性,更加清晰的描述它是什么、能做什么。
目的共性
- 通过多数据节点支撑高QPS的读请求。
- 通过多副本节点保证数据的安全性。
架构共性
数据存储节点基本上都拥有两种类型。
- master节点,支持读写。
- slave节点,只支持读、从master节点同步数据。