前言
这是Raft系列文章的第三篇。在上一篇《Raft案例剖析》 中我们列举了几个经典情景和Raft的应对措施。
本篇我们主要介绍有关Raft应用到的产品。
Raft的应用
Raft诞生后,业界很多项目开始跃跃欲试,出现了许多不错的系统。从目前来看,Raft主要应用在两种类型的系统上。
- 分布式协调服务
- 分布式数据库
分布式协调服务
先来看看分布式协调服务,一些同学可能比较陌生。但是有过一些分布式领域知识的人,应该知道它的重要性。它的出现大大降低了构建分布式系统的复杂性,使得没有分布式经验和功底的小白也能造出一个像样的系统。
背景
在分布式领域经常需要解决像时间同步、消息顺序、主从选举、全局锁等问题,这些问题可能有很多种解法,但这些解法中有没有共性的地方,能不能找到一种标准方法去解决这一系列的问题呢?答案是有,就是通过一种中心化手段,从全局的角度去解决分布式环境下各节点各自为营,不能协同的问题。也就是现在所熟知的分布式协调服务。
而这种服务往往是一个系统的核心,一旦出问题,可能相当严重,而它又是一个中心化的服务,更加重了这个问题。有人可能会说,那就再搞一个协调服务来解决这个服务的可用性,可是这个新的服务也面临着同样的问题,这样就会陷入逻辑的死循环。所以,分布式协调服务必须自身去解决自己可用性的问题。
用途
解决系统可用性的通用办法就是冗余,一台挂掉,那就部署多台。那多台机器之间的数据怎么保持一致性呢?这正是Raft所能解决的问题域,同时Raft能够自选举Leader,解决了可用性问题。所以现在使用Raft来构建分布式协调服务是一个常规方案(当然也有使用一些例外,不在讨论范围之内)。
目前分布式协调服务已经非常成熟,被广泛用在许多场景中。它可以作为配置中心,解决工程化开