无标题文档
来源:无标题文档
口播文案
你是不是也这样?天天用 Nacos、Eureka 当注册中心,可面试官一挑眉:“来,给我设计个注册中心呗?” 你立马大脑空白?别急,今天咱从 0 开始捋,看完你也能跟面试官掰扯明白!
先想个场景:你公司就 2 个微服务(订单 + 库存),调用的时候写死 IP 就行;可要是扩到 20 个、200 个服务呢?今天加个用户服务,明天库存服务扩容 3 台,你总不能挨个改代码里的 IP 吧?改到半夜不说,还容易写错 —— 这就是没注册中心的坑!
那注册中心到底要解决啥?核心就一个:“让服务之间不用记 IP,也能找到对方”。咱一步步凑零件,跟搭积木似的!
第一个问题:服务刚启动,咋让别人知道自己来了?—— 得有 “入职打卡”!就是 “服务注册”。比如库存服务启动后,主动给注册中心发个消息:“我是库存服务,IP 是 192.168.1.100,端口 8080,能提供扣库存功能”。注册中心收到后,得记下来啊 —— 所以得有个 “服务注册表”,就像公司的通讯录,谁叫啥、在哪、能干啥,一目了然。
第二个问题:服务跑着跑着崩了,注册中心还以为它活着,把请求导过去咋办?—— 得有 “定期报平安”!就是 “心跳检测”。服务每隔 30 秒给注册中心发个 “我还活着” 的信号(心跳包),要是超过 1 分钟没收到,注册中心就知道 “这服务凉了”,立马从 “通讯录” 里删掉它。你想啊,要是员工三天没打卡,公司不得以为他离职了?一个理!
第三个问题:订单服务想调用库存服务,咋知道哪个库存服务还活着?—— 得有 “查通讯录”!就是 “服务发现”。订单服务启动时,先跟注册中心说:“我要找库存服务”,注册中心就把当前活着的库存服务列表(比如 3 台机器的 IP)发给它。订单服务拿到列表后,再选一个调用(比如负载均衡挑个闲的),不用自己记 IP,多省事!
第四个问题:要是注册中心自己崩了,所有服务都找不到对方了,这不全完了?—— 得有 “多个人值班”!就是 “注册中心集群”。不能只搞一个注册中心,得部署 3 台、5 台,它们之间互相同步 “服务注册表”(比如 A 收到新服务,立马告诉 B 和 C)。就算其中一台崩了,剩下的还能干活,这就是 “高可用”。跟公司前台不能只一个人,得有替补一个意思!
第五个问题:服务太多,订单服务只想找 “北京机房的库存服务”,咋筛选?—— 得加 “标签过滤”!注册中心给服务加 “元数据”,比如库存服务启动时标上 “机房 = 北京,环境 = 生产”。订单服务查的时候说:“我要北京机房的生产环境库存服务”,注册中心就只返回符合条件的,精准定位,不浪费时间。
现在你再捋捋:服务注册(入职打卡)+ 服务注册表(通讯录)+ 心跳检测(报平安)+ 服务发现(查通讯录)+ 集群(多值班)—— 这不就是个完整的注册中心吗?跟你用的 Nacos、Eureka 核心逻辑一模一样!
看到这儿,你是不是突然觉得 “注册中心也没那么难”?下次面试官再问,你就从 “微服务手动改 IP 的坑” 说起,一步一步讲这些零件,他指定得想:“这哥们是真懂,不是光会用现成的!” 赶紧收藏,面试前翻出来看两眼,稳了!