etcd概念及原理以及应用场景选型

这篇具有很好参考价值的文章主要介绍了etcd概念及原理以及应用场景选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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非常适合用于服务注册与发现。主要原因有:

  1. etcd是开源的、高可用的分布式键值存储系统,天然适合存储服务实例信息。
  2. etcd支持HTTP和gRPC接口调用,提供丰富的客户端库,便于不同语言的服务注册
  3. etcd支持Watch机制,可以实时监听服务和配置的变化,实现动态服务发现
  4. etcd支持主备模式、Raft协议,可以构建高可用集群,避免单点故障。
  5. etcd内置服务发现功能,如自动负载均衡、健康检查等,使用简单。
  6. etcd支持TLS证书认证、权限控制等安全机制,保证系统安全。
  7. etcd分布式架构,可横向扩展,支持大规模的服务部署。
  8. etcd社区活跃,版本迭代快,可靠性较高。

etcd是一个优秀的开源项目,它高效、可靠、安全的特性非常符合服务注册与发现的需求。文章来源地址https://www.toymoban.com/news/detail-731774.html

到了这里,关于etcd概念及原理以及应用场景选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [mongo]应用场景及选型

    OLTP 数据库 横向扩展能力,数据量或并发量增加时候架构可以自动扩展 灵活模型,适合迭代开发,数据模型多变场景 JSON 数据结构,适合微服务/REST API 基于功能选择 MongoDB 移动应用 商品信息 内容管理 物联网 SaaS应用 主机分流 实时分析 关系型数据库替换 从基于关系型数据

    2024年02月14日
    浏览(28)
  • android音频架构以及技术选型

    Android 系统提供了四个层面的音频 API: 1.Java 层 MediaRecorderMediaPlayer 系列; 2.Java 层 AudioTrackAudioRecorder 系列; 3.Jni 层 opensles; 4.JNI 层 AAudio(Android O 引入) 下面先上这张经典的 Android 系统架构图: 从图上看 Andorid 整个系统层面从下到上分以下四层: 1.Linux Kernel 2.硬件适配层

    2024年02月07日
    浏览(35)
  • Kubernetes CNI 插件选型和应用场景探讨

    作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes、KubeSphere、KubeKey 等。 本文介绍容器环境常见网络应用场景及对应场景的 Kubernetes CNI 插件功能实现。帮助搭建和使用云原生环境的小伙伴快速选择心仪的网络工具。 我

    2024年02月08日
    浏览(28)
  • Elasticsearch的基础知识和架构设计,以及一些常用的功能——面向对象编程和数据结构的高级应用场景,以及相应的代码实现方法和工具

    作者:禅与计算机程序设计艺术 2019年,Elasticsearch正式发布了7.0版本。在这个版本更新中,新增了许多新特性和功能,包括全文搜索、分类聚合、分析器、图形化数据可视化等。无论对于企业或个人来说,都意味着更好的应用场景。但是,掌握Elasticsearch并非易事,需要不断学

    2024年02月07日
    浏览(38)
  • 应用架构——集群、分布式、微服务的概念及异同

    一、什么是集群?         集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题。 集群主要具有以下特征: (1)、 伸缩性         在一些大系统中,

    2024年02月03日
    浏览(30)
  • 云原生之深入解析Kubernetes CNI插件的选型和应用场景

    在学习容器网络的时候,肯定都听说过 Docker 的 bridge 网络、Vethpair、VxLAN 等术语,从 Docker 到 Kubernetes 后,学习 Flannel、Calico 等主流网络插件,分别代表了 Overlay 和 Underlay 的两种网络传输模式,也是很经典的两款 CNI 网络插件。那么,还有哪些好用的 CNI 插件呢 ? 先来看看 C

    2024年02月15日
    浏览(40)
  • 什么是DTU? DTU的工作原理讲解以及无线透传技术在物联网行业的发展和应用场景

    一、什么是DTU? 广义上的D TU是数据传输单元(Data Transfer Unit)的缩写 , 在物联网通讯行业, DTU是 一种专门用于将串口数据转换为IP数据或将IP数据转换为串口数据,并通过无线通信网络进行传输的无线终端设备 。 二、DTU 的工作原理讲解 DTU 是一种无线通讯模块,它利用无

    2024年02月03日
    浏览(50)
  • 超声波、毫米波、ToF激光雷达——在低功耗场景的应用选型

    目前主要的测距方式有:光学测距,超声波和微波雷达测距。 光学测距又可以分为:双目,结构光, ToF 。微波雷达,在消费类产品中,常见的是波长在毫米级别的毫米波雷达。超声波应用比较多的是在车载倒车雷达上。 它们各有优缺点,本章内容只针对在户外低功耗场景的

    2024年02月02日
    浏览(82)
  • 【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

    Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for循环”。它的设计目的是提供一种简洁、易读的语法,用于遍历集合或数组中的元素,减少了传统 for循环的冗余代码和错误机会。 简单来说, foreach是一种迭代器模式的变体,它允许我们以简单且直观的方式遍历一个

    2024年02月16日
    浏览(33)
  • 大模型的实践应用22-谷歌Gemma AI大模型的架构原理,以及Gemma模型的部署安装本地教程

    大家好,我是微学AI,今天给大家介绍一下大模型的实践应用22-谷歌Gemma AI大模型的架构原理,以及Gemma模型的部署安装本地教程。谷歌Gemma AI大模型是由Google AI团队开发并开源。Gemma模型采用Transformer编码器-解码器架构,并加入了一些改进,例如使用稀疏注意力机制来提高推理

    2024年04月27日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包