ARTICLE · 1133437
grpc-go Resolver源码走读
grpc-go Resolver源码走读
刚写完 grpc-go 客户端调用,顺手把 Resolver 源码扒了一遍。重点是搞清客户端是怎么找到后端地址的。
建连接时先解析 target,按 scheme 找对应的 resolver。找不到就回退到默认的 dns,再重新匹配。等真正发起 RPC 时,如果通道正闲着,会先唤醒连接链路,再去启动 resolver。
真正的重头戏在 DNS 解析器里。它分两条路走:要是 target 本身就是 IP,直接回调返回,连后台协程都不用开;要是域名,就起个 watcher 协程在后台轮询。
每次查询先看 SRV 记录,再看 A/AAAA 记录拿业务 IP。查成功就更新状态,失败就用指数退避重试。为了防止刷屏,两次查询至少得隔 30 秒。
原文grpc-go Resolver源码走读
作者提示: 个人观点,仅供参考
山西,18分钟前,