目录
一、ETCD
1.1、ETCD简介
etcd是一个开源的分布式键值存储系统(数据库),通常用于在分布式系统中存储配置信息、元数据等。它是由CoreOS开发的,基于Raft一致性算法实现高可用性和一致性。etcd提供简单的HTTP API,使得应用程序可以方便地读写存储在其中的键值数据。在Kubernetes等容器编排平台中,etcd通常用于存储集群状态信息。
是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。
干什么的:是数据库存储数据,监听状态
对于实施工程师:
服务注册于发现,可以做不同宿主机,里面容器互相通信,因为现在服务器不同了一个是Linux一个是Windows他们两通信,所有需要借助etcd完成
1.2、特点
1. 一致性:etcd使用Raft一致性算法来保证集群中数据的一致性,确保数据的可靠性和正确性。
2. 高可用性:etcd支持自动选举和故障转移,即使部分节点故障,集群仍然可以正常运行,保证系统的高可用性。
3. 高性能:etcd使用Go语言编写,具有高效的读写性能,适用于需要快速响应的应用场景。
4. 安全性:etcd支持SSL/TLS加密传输,可以保护数据在网络传输中的安全,同时支持访问控制和认证机制,确保数据的安全性。
5. 简单易用:etcd提供了简单的HTTP API和命令行工具,方便用户进行数据的读写和管理,降低了系统的维护成本。
1、简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据(通信使用)
2、键值对存储
3、有监听机制,可以监听特定键的变化,并作出响应
总的来说,etcd是一个可靠、高效、安全且易用的分布式键值存储系统,适用于构建分布式系统和微服务架构。
监控机制类似之前抖音: 发一个视频----->发消息到注册中心----->监听节点方式变化任务
1.3. 使用场景
- 服务发现(Service Discovery)(一需要mysql服务,一个找mysql服务,所有他们会去中心找)
- 消息发布与订阅
- 负载均衡(多个人找)
- 分布式通知与协调
- 分布式锁
1.4、 关键字
Raft:etcd所采用的保证分布式系统强一致性的算法。
Node:一个Raft状态机实例。
Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
Cluster:由多个Member构成可以协同工作的etcd集群。
Peer:对同一个etcd集群中另外一个Member的称呼。
Client: 向etcd集群发送HTTP请求的客户端。
WAL:预写式日志,etcd用于持久化存储的日志格式。
snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
Leader(领导者):Raft算法中通过竞选而产生的处理所有数据提交的节点。
Follower(跟随者):竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始Leader竞选。
Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。
Index:数据项编号。Raft中通过Term和Index来定位数据。
1.5 工作原理
第1部分是HTTP Server: 用于处理用户发送的API请求,以及其它etcd节点的同步与心跳信息请求