回顾

大家好,我是老马。

最近 dubbo3.x 在公司内部分享,于是想系统梳理一下。

总体思路是官方文档入门+一些场景的问题思考+源码解析学习。

微服务生态

Dubbo 社区和众多优秀的开源项目一起围绕 Dubbo 建立了丰富的微服务生态支持,这让开发者从选型 Dubbo 作为开发框架的第一天,就无需担心后续的服务治理诉求,Dubbo 对每一个常见问题均提供了生产级的解决方案。

以下表格为基于最新 Dubbo Java 3.2.x 版本统计的生态组件支持情况,后续将根据开发进展持续更新。同时每个语言支持的组件完善度会有一定差异,具体请参见各个 语言参考手册 内的详细说明

功能 组件列表 组件列表 组件列表 组件列表 组件列表
服务发现 Zookeeper Nacos Kubernetes Service DNS【开发中】 更多
动态配置 Zookeeper Nacos Apollo Kubernetes【开发中】 更多
元数据管理 Zookeeper Nacos Redis Kubernetes【开发中】 更多
RPC 协议 HTTP/2 (Triple) TCP HTTP/REST【Alpha】 gRPC 更多
可视化观测平台 Admin Grafana Prometheus - -
全链路追踪 Zipkin Skywalking OpenTelemetry - -
限流降级 Sentinel Resilience4j Hystrix - -
分布式事务 Seata - - - -
网关 Higress APISIX Shenyu Envoy -
服务网格 Istio【开发中】 Aeraka OpenSergo【开发中】 Proxyless【Alpha】 更多

进阶

控制服务调用行为

  • 服务版本

  • 服务分组

  • 分组聚合

  • 异步调用

  • 异步执行

  • 流式通信

  • 响应式编程

  • 泛化调用

  • 泛化实现

  • 调用链路传递隐式参数

  • RPC调用上下文

  • 调用触发事件通知

  • 服务端对客户端进行回调

  • 只订阅

  • 只注册

  • 运行时动态指定 IP 调用

  • 直连提供者

  • 启动时检查

  • 本地调用

  • 参数校验

  • 本地伪装

  • 本地存根

  • 回声测试

  • 调用信息记录

  • 延迟暴露

  • 集群容错

  • 服务降级

诊断与调优

  • 端口协议复用

  • 线程池隔离

  • 多协议

  • 多注册中心

  • 请求耗时采样

  • 线程模型

  • 服务引用配置对象缓存

  • 路由状态采集

  • 负载均衡

  • 注册信息简化

  • 调用结果缓存

  • 并发控制

  • 连接控制

  • 延迟连接

  • 粘滞连接

  • 支持 Graal VM

  • 导出线程堆栈

  • Kryo 和 FST 序列化

  • 自定义服务容器

  • 优雅停机

  • 主机地址自定义暴露

  • 一致性哈希选址

  • 日志框架适配及运行时管理

  • Kubernetes 生命周期探针

参考资料