Paul Paul Public Builder & 全栈工程师
search

思维笔记

Digital Garden

持续生长、版本演进的非线性技术思考。这里不是完美的定稿文章,而是思想萌芽、实验实录与阅读笔记的温室。

search
标签筛选:
🌱 萌芽 Seedling v0.1• 2026-08-30
#dubbo

Dubbo3 应用级服务发现的取舍

Dubbo3 把接口级发现改成应用级(服务自省),本质是用元数据中心换注册中心的压力:注册数据量从 O(接口数) 降到 O(应用数)。

MetadataService.java java
// 应用级发现的关键:Provider 暴露 MetadataService,
// Consumer 先查元数据再建立订阅
ServiceInstancesChangedListener listener =
    serviceDiscovery.createListener(serviceNames);

疑问还没想清楚:元数据版本冲突时 Consumer 的回退策略,在规模上去之后会不会成为新瓶颈。

🌿 生长 Budding v0.3• 2026-08-25
#nacos

Nacos 服务发现的数据模型速记

Nacos Naming 的核心数据模型是三层:Service → Cluster → Instance。临时实例走 Distro 协议(AP,节点间分片负责 + 异步同步),持久实例走 Raft(CP)。

判断一个实例是临时还是持久,看 ephemeral 字段;1.x 时代默认临时,2.x grpc 长连接下沉后这个语义没变,只是传输层换了。

待验证:Distro 协议在网络分区恢复后的数据校验轮次,是否能解释我们线上那次「实例列表抖动」。

🌲 常青 Evergreen v1.2• 2026-08-15
#grpc

gRPC 拦截器链与 Context 传递

gRPC 的拦截器(Interceptor)是 AOP 思想的典型应用:客户端/服务端各一条链,按注册顺序嵌套执行。

  • 客户端拦截器适合做:鉴权头注入、调用埋点、重试包装
  • 服务端拦截器适合做:统一异常翻译、限流、审计日志
  • Context 通过 Contexts.interceptCall 显式传递,异步回调里记得 attach,否则 trace 会断

这条结论在项目里验证过多次,标记为常青。