22 | 配置及服务发现:解析etcd在API Gateway开源项目中应用
唐聪
你好,我是唐聪。
在软件开发的过程中,为了提升代码的灵活性和开发效率,我们大量使用配置去控制程序的运行行为。
从简单的数据库账号密码配置,到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 实战课》,新⼈⾸单¥59
《etcd 实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 那时刻老师的问题,我的个人看法是,采用etcd应该是可行的。 1.高可靠。etcd基于raft的多副本可以满足。 2.高性能。公司业务多,规模大,可以依据不同业务不同etcd的方法,分担etcd的写压力,以及数据存储量有限的问题。各自业务的etcd可以水平扩展。 3.支持多业务、多版本管理、多种发布策略。etcd可以做到多版本管理,多发布策略的话,可以级联多个etcd的方法。 另外,可能更加理想的存储架构方式是采用计算与存储分离的方法,计算部分处理读写以及扩展,存储部分处理多版本,多业务,多发布策略。
作者回复: 嗯,整体想法不错,特别是考虑到数据容量问题,但是还需要考虑更多问题,比如性能问题,一个业务可能数万个client, 直接读etcd性能肯定扛不住的,其次是复杂度管理,比如一个业务分配一个etcd集群,那这过程是手动的还是自动的呢? 能否自动快速就接入一个新业务而无需相关运维操作呢? 或者有没有更好的存储方案。
25 - 大爱无疆做一个etcd proxy,proxy 实现 hash,将不同的/key 映射到后端不同的etcd集群上。 这样 相当于实现了 支持分片的 分布式存储。
作者回复: 嗯啊,这个想法在有的公司落地了,但是不支持跨多节点的事务,有一定局限性,proxy稳定性也是个考验
3 - Geek_daf51a思考题很棒,我认为etcd并不合适,适合使用可平行扩容的分布式数据库如tidb,运维复杂度不更低点吗,容量也更大,还能支持各种key value大小配置3
- 刁寿钧其实还期待讨论下APISIX搭配证书使用etcd的姿势,哈哈11
- Geek_ed84ef给服务路由配Lease跟APISIX提供的健康检查插件有什么区别吗?好像都是服务异常后可自动摘除节点
- Coder我认为使用支持分片的nosql数据库比较合适,比如redis集群版本,一主两副本、还是很可靠得
- 云原生工程师我认为etcd不太合适,应该使用类似阿里云drds、腾讯云tdsql这样分布式数据库,不过数据推送机制就没了,需要轮询了,但是容量不需要担心,支持多业务就表中增加一个字段或独立的表
收起评论