网站首页 > 博客文章 正文
Etcd是CoreOS团队于2013年6月基于Go语言发起的开源项目,它的目标是构建一个高可用强一致性的服务发现存储的分布式键值(key-value)数据库。主要用途是共享配置和服务发现。Etcd已经在很多分布式系统中得到广泛的使用。
一、Etcd的提点有以下四点:
- 简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
- 安全:可选SSL客户认证机制。
- 快速:每个实例每秒支持一千次写操作。
- 可信:使用Raft算法充分实现了分布式。
二、Etcd的应用场景:
服务在分布式系统中“服务发现”也是比较常见的问题:在同一个集群环境中不同的应用或服务,如何能够找到对方并建立连接,来完成后续的行为。本质上来说,服务发现就是想要知道集群中是否有进程在监听udp或tcp端口,并能通过名字就可以查找和连接。而要解决服务发现的问题,需要满足如下三个方面,缺一不可。
- 强一致性、高可用的服务存储目录: 基于Raft算法的etcd天生就是这样一个强一致性高可用的服务存储目录【安全的记录集群中的应用或服务的信息(地址、端口等)】。
- 注册服务和监控服务健康状态的机制:用户可以在etcd中注册服务,并且对注册的服务设置key TTL,定时保持服务的心跳以达到监控健康状态的效果。【能够完成新的应用或服务的注册添加进来,同样也能对现有的服务是否可用进行监控】
- 查找和连接服务的机制: 通过在etcd指定的主题下注册的服务也能在对应的主题下查找到。为了确保连接,我们可以在每个服务机器上都部署一个Proxy模式的etcd,这样就可以确保能访问etcd集群的服务都能互相连接。【已有的服务当被使用能够被找到并能连接】
如图所示:
微服务协同工作架构中,服务动态添加。随着Docker容器的流行,多种微服务共同协作,构成一个相对功能强大的架构的案例越来越多。透明化的动态添加这些服务的需求也日益强烈。通过服务发现机制,在etcd中注册某个服务名字的目录,在该目录下存储可用的服务节点的IP。在使用服务的过程中,只要从服务目录下查找可用的服务节点去使用即可。
其他应用场景:
- 消息发布与定义(非高频)
- 分布式锁
- 分布式消息队列
- 分布式进程心跳监控
三、Etcd主要分为四个部分:
通常,一个用户的请求发送过来,会经由HTTP Server转发给Store进行具体的事务处理,如果涉及到节点的修改,则交给Raft模块进行状态的变更、日志的记录,然后再同步给别的etcd节点以确认数据提交,最后进行数据的提交,再次同步。
四、Etcd原理:
Etcd群集是一个分布式系统,由多个节点相互通信且构成一个整体对外提供服务,每一个节点存储了完整的数据,并且通过Raft协议保证每节点维护的数据是一致的。
每一个Etcd节点都维护了一个状态机,并且。任意时刻最多存在一个有效的主节点。主节点处理所有来自客户端的写操作,通过Raft协议保证写操作对状态机的修改都会可靠的同步到其他节点。
猜你喜欢
- 2024-11-16 Docker网络这样理解会更简单(二)(docker 网络)
- 2024-11-16 Docker 和 Kubernetes 介绍(docker与kubernetes)
- 2024-11-16 通过项目学习Go开发之系统环境搭建
- 2024-11-16 容器可视化-Kuboard(容器可视化管理平台kubesphere)
- 2024-11-16 Docker 从入门到实践(docker从入门到精通)
- 2024-11-16 Docker 容器网络番外篇-VxLan(docker的网络)
- 2024-11-16 使用统一证书的方式部署ETCD3.5 集群(一)
- 2024-11-16 有想学docker的吗?我来倾馕相助了,143页docker入门资料免费送
- 2024-11-16 全新一代API网关,带可视化管理,文档贼友好
- 2024-11-16 Docker网络架构是什么?包含哪些哪些核心组件与驱动?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)