etcd 实战课
唐聪
腾讯云资深工程师,etcd 活跃贡献者
28449 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 28 讲
开篇词 (1讲)
etcd 实战课
15
15
1.0x
00:00/00:00
登录|注册

22 | 配置及服务发现:解析etcd在API Gateway开源项目中应用

服务发现中间件
早期解决方式
服务发现定义
微服务架构
拆分方式
缺点
特点
思考题
Apache APISIX的应用
服务部署架构的演进
事务特性的应用
Lease特性的应用
鉴权机制的应用
Watch机制的应用
数据存储格式
数据面
控制面
架构图
功能
事务特性
Lease特性
鉴权机制
Watch机制
基于etcd实现服务发现
为什么需要服务发现中间件
分布式及微服务架构
单体架构
目的:分析etcd在配置和服务发现场景中的应用
作者:唐聪
小结
etcd在Apache APISIX中的应用
Apache APISIX原理
etcd服务发现原理
服务发现
介绍
解析etcd在API Gateway开源项目中应用

该思维导图由 AI 生成,仅供参考

你好,我是唐聪。
在软件开发的过程中,为了提升代码的灵活性和开发效率,我们大量使用配置去控制程序的运行行为。
从简单的数据库账号密码配置,到confd支持以 etcd 为后端存储的本地配置及模板管理,再到Apache APISIX等 API Gateway 项目使用 etcd 存储服务配置、路由信息等,最后到 Kubernetes 更实现了 Secret 和 ConfigMap 资源对象来解决配置管理的问题。
那么它们是如何实现实时、动态调整服务配置而不需要重启相关服务的呢?
今天我就和你聊聊 etcd 在配置和服务发现场景中的应用。我将以开源项目 Apache APISIX 为例,为你分析服务发现的原理,带你了解 etcd 的 key-value 模型,Watch 机制,鉴权机制,Lease 特性,事务特性在其中的应用。
希望通过这节课,让你了解 etcd 在配置系统和服务发现场景工作原理,帮助你选型适合业务场景的配置系统、服务发现组件。同时,在使用 Apache APISIX 等开源项目过程中遇到 etcd 相关问题时,你能独立排查、分析,并向社区提交 issue 和 PR 解决。

服务发现

首先和你聊聊服务发现,服务发现是指什么?为什么需要它呢?
为了搞懂这个问题,我首先和你分享下程序部署架构的演进。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

etcd在API Gateway开源项目中的应用是本文的主题。文章首先介绍了服务发现的概念和在分布式及微服务架构中的重要性,然后详细解释了etcd在服务发现中的原理和应用。作者以Apache APISIX项目为例,阐述了etcd在其中的应用,包括控制面和数据面的组成,以及通过Admin API实现实时、动态调整服务配置而不需要重启网关服务的方法。文章还提到了etcd在Apache APISIX中存储的数据格式和应用场景。通过本文,读者可以了解etcd在配置系统和服务发现场景中的工作原理,以及如何选型适合业务场景的配置系统和服务发现组件。文章内容详实,逻辑清晰,对于需要了解etcd在API Gateway开源项目中的应用的读者来说,是一篇很有价值的文章。 文章还介绍了Apache APISIX在etcd中的数据存储格式,Watch机制的应用,鉴权机制的应用,Lease特性的应用以及事务特性的应用。通过这些内容,读者可以了解Apache APISIX项目中etcd的多种应用场景,包括动态更新配置、鉴权、服务发现等方面的实际应用。此外,文章还提出了一个开放的配置系统设计思考题,引发读者对于etcd在大型配置系统中的适用性进行思考和讨论。 总的来说,本文通过介绍etcd在API Gateway开源项目中的应用,以及Apache APISIX项目中etcd的多种应用场景,为读者提供了深入了解etcd在配置系统和服务发现中的工作原理的机会,同时也引发了读者对于etcd在大型配置系统中的适用性进行思考和讨论。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《etcd 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 那时刻
    老师的问题,我的个人看法是,采用etcd应该是可行的。 1.高可靠。etcd基于raft的多副本可以满足。 2.高性能。公司业务多,规模大,可以依据不同业务不同etcd的方法,分担etcd的写压力,以及数据存储量有限的问题。各自业务的etcd可以水平扩展。 3.支持多业务、多版本管理、多种发布策略。etcd可以做到多版本管理,多发布策略的话,可以级联多个etcd的方法。 另外,可能更加理想的存储架构方式是采用计算与存储分离的方法,计算部分处理读写以及扩展,存储部分处理多版本,多业务,多发布策略。

    作者回复: 嗯,整体想法不错,特别是考虑到数据容量问题,但是还需要考虑更多问题,比如性能问题,一个业务可能数万个client, 直接读etcd性能肯定扛不住的,其次是复杂度管理,比如一个业务分配一个etcd集群,那这过程是手动的还是自动的呢? 能否自动快速就接入一个新业务而无需相关运维操作呢? 或者有没有更好的存储方案。

    2021-03-12
    2
    5
  • 大爱无疆
    做一个etcd proxy,proxy 实现 hash,将不同的/key 映射到后端不同的etcd集群上。 这样 相当于实现了 支持分片的 分布式存储。

    作者回复: 嗯啊,这个想法在有的公司落地了,但是不支持跨多节点的事务,有一定局限性,proxy稳定性也是个考验

    2021-04-09
    3
  • Geek_daf51a
    思考题很棒,我认为etcd并不合适,适合使用可平行扩容的分布式数据库如tidb,运维复杂度不更低点吗,容量也更大,还能支持各种key value大小配置
    2021-03-12
    5
  • 刁寿钧
    其实还期待讨论下APISIX搭配证书使用etcd的姿势,哈哈
    2021-03-15
    1
    1
  • Geek_ed84ef
    给服务路由配Lease跟APISIX提供的健康检查插件有什么区别吗?好像都是服务异常后可自动摘除节点
    2021-04-05
  • Coder
    我认为使用支持分片的nosql数据库比较合适,比如redis集群版本,一主两副本、还是很可靠得
    2021-03-13
  • 云原生工程师
    我认为etcd不太合适,应该使用类似阿里云drds、腾讯云tdsql这样分布式数据库,不过数据推送机制就没了,需要轮询了,但是容量不需要担心,支持多业务就表中增加一个字段或独立的表
    2021-03-13
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部