24 | 注册中心:分布式系统如何寻址?
唐扬
该思维导图由 AI 生成,仅供参考
你好,我是唐扬。
上一节课,我带你了解了 RPC 框架实现中的一些关键的点,你通过 RPC 框架,能够解决服务之间跨网络通信的问题,这就完成了微服务化改造的基础。
但是在服务拆分之后,你需要维护更多的细粒度的服务,而你需要面对的第一个问题就是如何让 RPC 客户端知道服务端部署的地址。这就是我们今天要讲到的服务注册与发现的问题。
你所知道的服务发现
服务注册和发现不是一个新的概念,你在之前的实际项目中也一定了解过,只是你可能没怎么注意罢了。比如说,你知道 Nginx 是一个反向代理组件,那么 Nginx 需要知道应用服务器的地址是什么,这样才能够将流量透传到应用服务器上,这就是服务发现的过程。
那么 Nginx 是怎么实现的呢?它是把应用服务器的地址配置在了文件中。
这固然是一种解决的思路,实际上,我在早期的项目中也是这么做的。那时,项目刚刚做了服务化拆分,RPC 服务端的地址就是配置在了客户端的代码中,不过,这样做之后出现了几个问题:
首先在紧急扩容的时候,就需要修改客户端配置后,重启所有的客户端进程,操作时间比较长;
其次,一旦某一个服务器出现故障时,也需要修改所有客户端配置后重启,无法快速修复,更无法做到自动恢复;
最后,RPC 服务端上线无法做到提前摘除流量,这样在重启服务端的时候,客户端发往被重启服务端的请求还没有返回,会造成慢请求甚至请求失败。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了分布式系统中的服务注册与发现问题,着重介绍了注册中心的概念及其作用。作者首先提到了传统的服务发现方式存在的问题,随后详细阐述了注册中心的作用,包括服务地址存储、动态变更服务节点、优雅关闭等功能。此外,文章还涉及了服务状态管理的问题,介绍了主动探测和心跳模式两种解决思路,并分享了实际项目中的教训和解决策略。作者还提到了注册中心可能出现的通知风暴问题,并给出了解决方案。最后,文章将服务注册与发现比喻为服务治理中的一环,通过对比喻的方式帮助读者理解服务治理的重要性。整体而言,本文内容丰富,涵盖了服务注册与发现的方方面面,对于理解分布式系统中的服务注册与发现问题具有很高的参考价值。 在微服务架构中,注册中心扮演着重要角色,实现了服务的注册和发现,并解决了动态扩缩容、故障恢复和优雅关闭等问题。文章还介绍了心跳机制和保护策略,强调了注册中心在整体架构中的关键地位。通过对比喻的方式,文章帮助读者理解了服务治理的重要性。总的来说,本文内容丰富,对于理解分布式系统中的服务注册与发现问题具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》,新⼈⾸单¥59
《高并发系统设计 40 问》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(38)
- 最新
- 精选
- 👽服务注册和发现的核心,其实就是——中间件。 引入了一个注册中心的中间件,来统一管理 服务端 和 客户端。 采用的保证服务端正常运行的手段是——心跳机制。 定时向注册中心发送心跳包表明自己运行正常。
作者回复: 👍
2019-11-25214 - 约书亚其实我觉得你们自研的注册中心应该进一步学习eureka,做成分AZ部署的。自建机房和云是两个AZ,每个AZ一个注册中心,每个注册中心自己独享一个redis。二者互相同步,通过一些机制保证同步不会陷入循环,以及旧版本数据不会覆盖新版本的。
作者回复: 现在存储已经改成raft协议的实现了
2019-11-185 - 旅途老师你好 rpc节点向注册中心发送心跳包是通过什么方式呢
作者回复: 我之前的项目是注册中心提供http接口
2019-12-014 - xuanyuan还有注册中心是 cp 模式还是 ap 模式
作者回复: 有cp,也有ap,我推荐ap
2020-03-2223 - 来常见的注册中心有zookeeper,etcd,eureka,注册中心的两个基本功能: 1、存储服务提供者的地址 2、当服务提供者发生变化时,将变化通知客户端
作者回复: 是的
2020-03-083 - 树洞老人醍醐灌顶!
作者回复: 能有帮助就好~
2019-12-213 - sami个人理解注册中心的目的是为了提高可用性和可扩展性,可以不用停机来动态进行服务的发布和拆除。
作者回复: 可以这么说吧,是他的一个重要作用
2020-03-192 - Keith关于文中提到的通过配置文件来实现服务发现的问题(扩容,服务故障修复,平滑重启), 对于其他服务可能存在, 但是对于Nginx, 它有reload指令来"热重启"服务, 有健康检查以及故障移除机制, 所以这些对Nginx来说不是问题吧?
作者回复: 算是吧,不过高并发下 reload会有性能损耗
2019-11-232 - Alex Liu老师可以说一下注册中心集群怎么考虑搭建吗?理论上注册中心承载了大量的请求(30秒/台),需要多少台注册中心能够支撑上百台的服务端?
作者回复: 一般十台之内就好了
2020-03-2621 - xiaochao321道路交通这个比喻太形象了,很不错 街道新增了一条道路,通知给各个车辆,注册中心的注册和发现 监控每个道路的车辆运行情况 服务的监控治理 平衡每个道路的车辆数 需要交警的协调 服务的负载均衡 道路出现拥堵或者维修 服务的熔断引流 调查道路拥堵的原因 分布式的追踪
作者回复: 谢谢🙏
2020-06-24
收起评论