etcd分布式键值数据库
1. etcd是什么
etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库.
etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现
那么这个etcd用在哪呢?
- 分布式系统,我们部署了多台节点,节点上的数据必须保持一致性
- 这个etcd解决了分布式项目最大的问题也就是一致性问题
etcd作为服务发现系统,有以下的特点:
- 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
- 安全:支持SSL证书验证
- 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
- 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
etcd项目地址:https://github.com/coreos/etcd/
etcd下载地址:https://github.com/etcd-io/etcd/releases 根据需要查找对应版本下载即可
2.服务发现(重点)
1.服务发现(重点)
服务发现(Service Discovery)要解决的是分布式系统中最常见的问题之一,
即在同一个分布式集群中的进程或服务如何才能找到对方并建立连接
在通俗点就是我们消费者去掉生产者的服务的时候 生产者在哪里部署在哪个服务上面我们都不知道
这个时候就需要我们去找到这个服务,它能让你远程调用的时候性能特别快
- 微服务协同工作架构中,服务动态添加。随着Docker容器的流行,多种微服务共同协作,构成一个相对功能强大的架构的案例越来越多。
- 透明化的动态添加这些服务的需求也日益强烈。通过服务发现机制,在etcd中注册某个服务名字的目录,在该目录下存储可用的服务节点的IP。
- 在使用服务的过程中,只要从服务目录下查找可用的服务节点去使用即可。
- 注1:etcd可以理解成springcloud中的注册中心,用于服务注册和发现
- 注2:Kubernetes: 将docker集群的配置信息存储到etcd中,用于服务发现和集群管理;etcd
的一致性对于正确安排和运行服务至关重要。 - Kubernetes API 服务器将群集状态持久化在 etcd 中。它使用etcd的 watch API监视集群,并发布关键的配置更改
2.消息发布与订阅
3.负载均衡
4.分布式通知与协调
5.分布式锁
3. etcd关键词
Raft:etcd所采用的保证分布式系统强一致性的算法。
Node:一个Raft状态机实例。
Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
Cluster:由多个Member构成可以协同工作的etcd集群。
Peer:对同一个etcd集群中另外一个Member的称呼。
Client: 向etcd集群发送HTTP请求的客户端。
WAL:预写式日志,etcd用于持久化存储的日志格式。
snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
Proxy:etcd的一种模式ÿ