Etcd详解(作用原理及应用场景)

Etcd详解(作用原理及应用场景)-mikechen

Etcd定义

Etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管,Etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册于发现,还可以作为 key-value 存储的中间件。

 

Etcd特点

Etcd 的目标是构建一个高可用的分布式键值数据库,具有以下特点:

1.简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单;

2.键值对存储:将数据存储在分层组织的目录中,如同在标准文件系统中;

3.监测变更:监测特定的键或目录以进行更改,并对值的更改做出反应;

4.安全:支持 SSL 证书验证;

5.快速:根据官方提供的 benchmark 数据,单实例支持每秒 2k 读操作;

6.可靠:采用 Raft算法,实现分布式系统数据的可用性和一致性;

 

Etcd工作原理

1.Etcd架构

Etcd架构如下图所示:

Etcd详解(作用原理及应用场景)-mikechen

从 架构图中我们可以看到etcd 主要分为四个部分:

1.HTTP Server

用于处理用户发送的 API 请求,以及其它 Etcd节点的同步与心跳信息请求。

2.Store

用于处理 Etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等。

3.Raft

Raft 是强一致性算法的具体实现,是 Etcd的核心。

4.WAL

Write Ahead Log,预写日志系统,是 Etcd的数据存储方式,Etcd就通过 WAL 进行持久化存储,这个与MySQL持久化存储机制类似。

Write-Ahead Logging 是数据库中一种高效的日志算法,对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。

在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。

 

2.Etcd工作流程

Etcd的工作流程,大致分为如下4步:

1.通常一个用户的请求发送过来,会经由 HTTP Server 转发给 Store 进行具体的事务处理;

2.如果涉及到节点的修改,则交给 Raft 模块进行状态的变更、日志的记录;

3.然后再同步给别的 Etcd节点以确认数据提交;

4.最后进行数据的提交,再次同步。

 

Etcd的应用场景

Zookeeper类似Etcd有很多使用场景,主要包括以下5类:

1.服务注册与发现

Etcd详解(作用原理及应用场景)-mikechen

2.消息发布订阅

Etcd详解(作用原理及应用场景)-mikechen

Etcd可以充当消息中间件,生产者可以往 Etcd中注册 topic 并发送消息,消费者从Etcd中订阅 topic,来获取生产者发送至 Etcd中的消息。

3.负载均衡

Etcd详解(作用原理及应用场景)-mikechen

后端多组相同的服务提供者可以经自己服务注册到 Etcd中,Etcd并且会与注册的服务进行监控检查。

服务请求这首先从 Etcd中获取到可用的服务,然后对此多组服务发送请求,Etcd在其中充当了负载均衡的功能。

4.分布式锁

Etcd详解(作用原理及应用场景)-mikechen

当有多个竞争者 node 节点,Etcd作为总控,在分布式集群中与一个节点成功分配 lock。

5.分布式队列

Etcd详解(作用原理及应用场景)-mikechen

有对个 node,Etcd根据每个 node 来创建对应 node 的队列,根据不同的队列可以在Etcd中找到对应的 competitor。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法