Dubbo 处理流程

标题节点说明:

调用关系说明:
虚线 代表异步调用 实线代表同步访问
蓝色虚线 是在启动时完成的功能
红色虚线 是程序运行中执行的功能
调用流程:
服务提供者在服务容器启动时 向注册中心 注册自己提供的服务
服务消费者在启动时 向注册中心订阅自己所需的服务
注册中心返回服务提供者地址列表给消费者 如果有变更 注册中心会基于长连接推送变更数据给消费者
服务消费者从提供者地址列表中 基于软负载均衡算法 选一台提供者进行调用 如果调用失败 则重新选择一台
服务提供者和消费者 在内存中的调用次数 和 调用时间 定时每分钟发送给监控中心
说说Dubbo工作原理
工作原理分10层:
第一层:service层,接口层,给服务提供者和消费者来实现的(留给开发人员来实现)
第二层:config层,配置层,主要是对Dubbo进行各种配置的,Dubbo相关配置
第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton,调用的是接口,实现类没有,所以得生成代理,代理之间再进行网络通讯、负责均衡等。
第四层:registry层,服务注册层,负责服务的注册与发现第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控
第七层:protocol层,远程调用层,封装rpc调用
第八层:exchange层,信息交换层,封装请求响应模式,同步转异步
第九层:transport层,网络传输层,抽象mina和netty为统一接口
第十层:serialize层,数据序列化层
这是个很坑爹的面试题,但是很多面试官有喜欢问,你真的要背么?你能背那还是不错的,我建议不要背,你就想想Dubbo服务调用过程中应该会涉及到哪些技术,把这些技术穿起来就OK了。
面试扩散
如果让你设计一个RPC框架,你会怎么做?其实你就把上面这个工作原理中涉及的到技术点总结一下就行了。
Dubbo是一个高性能的Java RPC框架,其工作原理包括服务提供者注册、消费者订阅、集群负载均衡、监控等核心流程。涉及的技术点涵盖服务代理、注册中心、集群、监控、远程调用、信息交换、网络传输和数据序列化等多个层面。设计RPC框架时,需要考虑服务发现、负载均衡、故障转移、监控和性能优化等方面。
389

被折叠的 条评论
为什么被折叠?



