朝花夕拾——Dubbo知识点回顾总结

云中志

共 5657字,需浏览 12分钟

 ·

2021-08-23 23:40

前言

最近一段时间,我们一直在分享dubbo相关的知识点,从最开始的入门配置、依赖,到后面的集群负载,我们都有不同程度的涉猎,当然还有很多的内容没有分享,但是这其中绝大多数都是我觉得参考官方文档很容易自己完成的,所以也就没有深入展开,而且我分享内容的原则是,首先要自己愿意分享,其次分享的内容必须有价值,因此我觉得dubbo的相关知识点我应该做一个简单的总结,然后剩余的内容,交给大家自己去学习,这样我也算是抛砖引玉了。

回顾总结

开始之前,我们先看下dubbo的架构原理图:

从这张原理图,我们可以看出dubbo的启动过程、调用过程,以及整体的架构:

  • 启动服务提供者(包括rpc容器启动);

  • 服务提供者注册至注册中心;

  • 服务消费者订阅服务

  • 注册中心通知消费者订阅结果

  • 消费者发起rpc调用

  • 消费者和提供者分别向监控中心发送心跳数据

这里需要提一点的是,dubbo官方其实为我们默认提供了一个container容器,这个容器是可以独立运行的,官方为我们默认提供了三种容器的实现,包括springContainerLogbackCOntainerLog4jContainer

其中springContainer默认会加载classpath*:META-INF/spring/*.xml,也就是说只要我们把dubbo相关配置放在这个路径下,我们是可以直接通过dubbo自己的容器启动的,而不需要借助第三方容器,而且官方默认为我们指定的就是springContainer

好了,关于容器我们就说这么多,有兴趣的小伙伴可以深入了解下。

内容小结

本次dubbo的知识总结我们主要通过一张脑图展开,详细的知识点可以参考我们之前分享的内容,同时对于我们没有分享到的知识点,各位小伙伴可以参考官方文档。脑图获取方式:公众号回复【dubbo脑图】即可获取源文件。

下面是所有dubbo的知识点索引,大家可以按照下面的索引,对相关知识点进行回顾:

依赖

核心依赖
  • dubbo
注册中心
  • zk
  • nacos
  • Redis
  • Simple
  • Multicast

配置

注册配置
  • RegistryConfig
应用配置
  • ApplicationConfig
协议配置
  • ProtocolConfig
监控配置
  • MonitorConfig
提供者配置
  • ProviderConfig
消费者配置
  • ConsumerConfig
配置中心配置
  • ConfigCenterBean
元数据配置
  • MetadataReportConfig
监测配置
  • MetricsConfig
ssl配置
  • SslConfig
模块配置
  • ModuleConfig

进阶用法

常用操作
  • 启动时检查
  • 集群容错
  • 负载均衡
  • 服务降级
  • 参数验证
开发测试常用
  • 直连提供者
  • 只订阅
  • 回声测试
  • 只注册
线程相关
  • 线程模型
  • 异步执行
  • 异步调用
  • 并发控制
  • 消费端线程池模型
配置相关
  • 多协议
  • 服务分组
  • 多版本
  • 配置规则
  • 注册信息简化
缓存
  • 结果缓存
  • ReferenceConfig缓存
控制管理
  • 连接控制
  • 延迟暴漏
  • 延迟连接
  • 分组聚合
  • 静态服务
回调
  • 参数回调
  • 事件通知
安全
  • TLS
  • 令牌验证
  • 分布式事务
运维相关
  • 路由规则
  • 优雅停机
  • 日志适配
  • 访问日志
  • 导出线程堆栈
  • 主机绑定
  • 主机配置
其他
  • 服务容器
  • Netty4支持
  • Kryo 和 FST 序列化
  • Protobuf 与 Interface 对比
  • 泛化调用
  • Protobuf
  • 上下文信息
  • 隐式参数
  • 本地存根
  • 本地伪装

基本原理

  • 服务提供者(容器)

  • 服务消费者

  • 注册中心

  • 监控中心

  • SPI扩展

协议扩展

  • 调用拦截扩展

  • 引用监听扩展

  • 暴露监听扩展

  • 集群扩展

  • 路由扩展

  • 负载均衡扩展

  • 合并结果扩展

  • 注册中心扩展

  • 监控中心扩展

  • 扩展点加载扩展

  • 动态代理扩展

  • 编译器扩展

  • 配置中心扩展

  • 消息派发扩展

  • 线程池扩展

  • 序列化扩展

  • 网络传输扩展

  • 信息交换扩展

  • 组网扩展

  • Telnet 命令扩展

  • 状态检查扩展

  • 容器扩展

  • 缓存扩展

  • 验证扩展

  • 日志适配扩展

协议

dubbo 协议
  • dubbo:// 协议参考手册
http 协议
  • http:// 协议参考手册
hessian 协议
  • hessian:// 协议参考手册
redis 协议
  • redis:// 协议参考手册
thrift 协议
  • thrift:// 协议参考手册
gRPC 协议
  • grpc:// 协议参考手册
memcached 协议
  • memcached:// 协议参考手册
rmi 协议
  • rmi:// 协议参考手册
webservice 协议
  • webservice:// 协议参考手册
Triple 协议
  • Triple 协议使用
开发 REST 应用
  • 在 Dubbo 中开发 REST 风格的远程调用

总结

dubbo相对而言,是一个比较容易上手的rpc框架,但是想要真正吃透dubbo,你也是要狠下功夫的,一方面dubbo如此流行,自然有其优秀之处,这优秀之处自然是值得我们每一个新生代码农学习的;另外一方面,dubbo整个生态体系是特别庞大的,不仅兼容我们常见的注册中心、spring bootspring cloudk8s等主流框架及技术,同时在性能方面也是特别优秀;当然,还有一个比较现实的问题,我们在找工作的面试的时候,不仅要求要会用框架,更要了解框架内部的工作原理和流程,这就要求我们对dubbo有更深入的了解和认知,不然很难在众多候选人中脱颖而出。

最后,我想说的是,学习这件事,看别人的输出成果,和自己动手去实践验证,收获是有天壤之别的。

很多时候,我们看别人东西的时候,总觉得很容易、不难,但是到自己真正动手去做的时候,却又不知所措,本质上还是因为你没有踩坑,你没有跌倒,没有积累和成长的过程,而这些恰恰是别人输出成果之外的东西,这些别人无法教给你,你也学不会,换句话说,你只有自己去踩坑,去解决问题,你才能更快成长,因为思维的顿悟,是没有人可以帮你的。

写一万行代码,和写一百万行代码的人,他比你多的是不仅仅是代码的数量,而是九十九万行代码的实践体验和思维蜕变,实践的终极目标是让你看清问题的本质,而这才是提升效率的关键。

- END -


浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报