etcd技术内幕

百里燊
作者简介 百里燊 硕士研究生毕业,小时候想成为闯荡江湖的侠客,结果着迷于各种代码,最终沦为辛勤工作的程序员。期待与大家进行交流。 邮箱:shen_baili@163.com 前言 etcd是一个可靠的分布式KV存储,其底层使用Raft算法保证一致性,主要用于共享配置和服务发现。etcd 是 CoreOS 公司发起的一个开源项目,其源代码地址为 https://github.com/coreos/etcd。 目前提供配置共享和服务发现功能的组件还是比较多的,其中应用最广泛、大家最熟悉的应该就是ZooKeeper了,很多开源项目都在不同程度上依赖了ZooKeeper,例如,Dubbo、Kafka。在Golang社区中,etcd是唯一一个可以媲美ZooKeeper的组件,在有些方面,etcd甚至超越了ZooKeeper,给开发者眼前一亮的感觉。 etcd作为一个优秀的分布式KV存储产品,其底层的etcd-raft模块实现了Raft协议,可以帮助开发者快速实现最终一致性功能。etcd 以其高性能、易维护、Raft 实现等优点,受到越来越多的开发人员的青睐,在Golang社区中声名大噪。 etcd的代码中有很多亮点,为了提高整体性能,其实现中使用了大量的goroutine和Channel。etcd 3 中开始使用BoltDB作为底层的持久存储,使用 BTree 索引加速查询,还提供了可靠的Watcher功能,同时提供了基于GRPC的新版本客户端。当然,etcd 3依然兼容etcd 2的内存存储和HTTP API。 etcd 3中有很多令人称赞的功能和优秀的设计,但至今还没有深入剖析etcd 3的内部设计和实现细节的图书,本书以etcd 3为基础,详细分析了etcd的架构设计和实现细节,其中穿插介绍了etcd源码中涉及的基础知识,以及笔者在实践中的思考。 如何阅读本书 由于篇幅限…