02-Dubbo特性及工作原理
Dubbo 的特性
这里说一下 Dubbo 最主要的特性,从这些特性中,就可以看出来我们为什么要选用 Dubbo,也可以将 Dubbo 和 Spring Cloud 进行对比,比如我们搭建一套微服务系统,出于什么考虑选用 Dubbo,又是出于什么考虑而选用 Spring Cloud 呢?
Dubbo 主要的特性
-
负载均衡 -
服务注册、服务发现 -
高性能 RPC 调用
接下来针对 Dubbo 的讲解主要从这 3 个特性出发
Dubbo、SpringCloud 技术选型
不过在说 Dubbo 特性之前,要先说一下面试相关的东西,因为我们在面试中,Dubbo 毕竟是分布式相关的东西,那么面试官可能问我们公司是如何进行技术选型的呢?为什么选择使用了 Dubbo 而不是 Spring Cloud 呢?
其实技术选型的东西,就是比较考察你对这两个框架特性的了解,那么像你如果选用了 Dubbo,那么就说一下 Spring Cloud 存在的缺点即可:
-
落地成本以及后期维护成本大 -
欠缺服务治理功能,尤其负载均衡、流量路由方面较弱 -
基于 HTTP 进行通信,性能不如 RPC 框架
而这些缺点,也正是 Dubbo 的优势所在,Dubbo 使用 RPC 进行通信,追求极致的性能,并且可以进行服务治理、负载均衡!
答出来他们各自的优势,那么再说一下由于公司开发人员对于 Dubbo 比较熟悉,因此最终选用 Dubbo 作为分布式框架
Dubbo 工作原理
首先,在讲解 Dubbo 特性之前,先把 Dubbo 的工作原理给梳理一下,了解 Dubbo 底层是如何进行工作的
从整体上先把握,之后再深入到具体特性进行学习
Dubbo 主要分为 3 个部分:注册中心、服务消费者、服务提供者,Dubbo 工作的流程如下:
1、每个服务提供者都会去注册中心注册自己,包括自己的地址(ip+port)
2、服务消费者去消费时,从注册中心(Dubbo 使用 ZooKeeper 作为注册中心)中拉取服务列表
3、消费者会去为远程代理对象创建一个动态代理对象,通过动态代理来拦截方法的执行
4、在代理对象的拦截中,会去执行一系列的操作
4.1、负载均衡,选择一台机器进行通信
4.2、选择一种通信协议:Dubbo 提供了自定义的高性能 rpc 通信协议
4.3、将请求进行封装,并且序列化
4.4、通过网络通信框架,将远程调用请求传给 Dubbo 服务提供者
5、Dubbo 服务提供者收到后,也会进行一系列操作解析请求,最后调用本地服务,将执行结果返回给服务消费者
获取更多干货内容,记得关注我哦。
本文由 mdnice 多平台发布