etcd概念及原理以及应用场景选型
一、什么是etcd
github:https://github.com/etcd-io/etcd
官方:https://etcd.io/
etcd是CoreOS团队于2013年6月发起的开源项目,授权协议为Apache。etcd是用于共享配置和服务发现的分布式,一致性的KV存储系统。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现
提供配置共享和服务发现的系统比较多,其中最为大家熟知的是[Zookeeper](后文简称ZK),而ETCD可以算得上是后起之秀了。在项目实现,一致性协议易理解性,运维,安全等多个维度上,ETCD相比Zookeeper都占据优势。
在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而涉及,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。
etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点。
- 简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
- 安全:可选SSL客户认证机制。
- 快速:每个实例每秒支持一千次写操作。
- 可信:使用Raft算法充分实现了分布式。
etcd性能
按照官网给出的[Benchmark], 在2CPU,1.8G内存,SSD磁盘这样的配置下,单节点的写性能可以达到16K QPS, 而先写后读也能达到12K QPS。这个性能还是相当可观的。
二、ETCD vs ZK
本文选取ZK作为典型代表与ETCD进行比较,而不考虑[Consul]项目作为比较对象,原因为Consul的可靠性和稳定性还需要时间来验证(项目发起方自身服务并未使用Consul, 自己都不用)。
一致性协议: ETCD使用[Raft]协议, ZK使用ZAB(类PAXOS协议),前者容易理解,方便工程实现;
运维方面:ETCD方便运维,ZK难以运维;
项目活跃度:ETCD社区与开发活跃,ZK已经快死了;
API:ETCD提供HTTP+JSON, gRPC接口,跨平台跨语言,ZK需要使用其客户端;
访问安全方面:ETCD支持HTTPS访问,ZK在这方面缺失;
三、etcd应用场景
1. etcd应用场景分类
【推荐】】etcd学习(1)-etcd的使用场景
参考URL: https://www.cnblogs.com/ricklz/p/15033193.html
etcd应用场景
参考URL: https://www.hi-linux.com/posts/40915.html
应用场景有如下几类:
- 场景一:服务发现(Service Discovery)
- 场景二:消息发布与订阅
- 场景三:负载均衡
- 场景四:分布式通知与协调
- 场景五:分布式锁、分布式队列
- 场景六:集群监控与Leader竞选
举个最简单的例子,如果你需要一个分布式存储仓库来存储配置信息,并且希望这个仓库读写速度快、支持高可用、部署简单、支持http接口,那么就可以使用etcd。
目前,cloudfoundry使用etcd作为hm9000的应用状态信息存储,kubernetes用etcd来存储docker集群的配置信息等。
在微服务或者组件设计,特别是最为大家熟知的就是 Kubernetes (k8s),其底层就依赖于 etcd 实现集群状态和配置的管理,会把etcd作为状态持有者,如果etcd出了问题,会导致整个集群都出现问题,可见etcd的重要性。
etcd是一个非常可靠的kv存储系统,常在分布式系统中存储着关键的数据。etcd常用来做分布式系统中一些关键数据的存储服务,比如服务注册和服务发现。
总结:etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册于发现,还可以作为 key-value 存储的中间件。
通俗的讲就是:etcd 最常用于服务注册与发现,作为集群管理的组件使用;也可以用于K-V存储,作为数据库使用
2. 服务注册与发现
一个用户的api请求,可能调用多个微服务资源,这些服务我们可以使用etcd进行服务注册和服务发现,当每个服务启动的时候就注册到etcd中,当我们需要使用的时候,直接在etcd中寻找,调用即可。
服务注册发现解决的是分布式系统中最常见的问题之一,即在同一个分布式系统中,找到我们需要的目标服务。
etcd非常适合用于服务注册与发现。主要原因有:文章来源:https://www.toymoban.com/news/detail-731774.html
- etcd是开源的、高可用的分布式键值存储系统,天然适合存储服务实例信息。
- etcd支持HTTP和gRPC接口调用,提供丰富的客户端库,便于不同语言的服务注册。
- etcd支持Watch机制,可以实时监听服务和配置的变化,实现动态服务发现。
- etcd支持主备模式、Raft协议,可以构建高可用集群,避免单点故障。
- etcd内置服务发现功能,如自动负载均衡、健康检查等,使用简单。
- etcd支持TLS证书认证、权限控制等安全机制,保证系统安全。
- etcd分布式架构,可横向扩展,支持大规模的服务部署。
- etcd社区活跃,版本迭代快,可靠性较高。
etcd是一个优秀的开源项目,它高效、可靠、安全的特性非常符合服务注册与发现的需求。文章来源地址https://www.toymoban.com/news/detail-731774.html
到了这里,关于etcd概念及原理以及应用场景选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!