登陆

极彩注册机-Java开发者你还不知道?告知你Dubbo 的底层原理,面试不再怕

admin 2019-10-31 195人围观 ,发现0个评论

前语

往常咱们在构建分布式体系的时分,一般都是依据 Dubbo 技能栈或许是SpringCloud 技能栈来做。前期其实最早比较盛行的是Dubbo,我记住咱们其时有个部分的老迈便是用的是Dubbo 来构建的一个体系,到后边才出来的 SpringCloud,因为它是依据 Spring 生态极彩注册机-Java开发者你还不知道?告知你Dubbo 的底层原理,面试不再怕建立起来的,供给了一整套微服务组件,功用完全,大受中小型公司开发者的喜爱。

可是现在仍是有不少公司没有换成 SpringCloud 来做微服务的东西,仍是依据 Dubbo,面试的时分不管是 SpringCloud 也好,Dubbo 也罢,基本上都会说到这两个结构的底层原理。你想测验一下高档的职位,基本上跑不脱这个问题。

OK,今儿咱们就大约聊聊 Dubbo 的底层架构原理吧。

服务注册中心

分布式体系里边这个是必备的,服务供给者跟服务顾客都在发动的时分都会注册到服务注册中心来。服务注册中心会记载。

动态署理层 Proxy

一般这些结构大多数选用的思维都是经过惠州旅游对你的办法,接口生成一个署理目标,然后在这个署理目标里边去写它的功用。

所以这儿咱们需求每个服务都需求供给接口出来,在建议服务调用执勤,会创立一个动态署理目标,在咱们的顾客中只要一个接口,咱们能够以为动态署理类相当于为这个接口动态的创立一个实体类出来,然后用动态带来目标进行接口调用。

Cluster 集群层

咱们预备好了要去调用了长途服务的接口,那么现在问题是咱们的服务供给者会布置多台机器,那么咱们究竟去调用哪台机器呢?怎样挑选?

此刻动态署理目标回去找一个叫 Cluster 这层的东西,这层就担任具体要调用哪一台机器。

那么 Cluster 层就必须得拿到有哪些机器对不对,否则怎样选呢。那么这个进程就叫做动态感知。

Cluster 里边有许多组件,比方 Directory、Router 还有LoadBalance ,此刻就会运用负载均衡组件 LoadBlance 挑选一台机器。到这儿,机器就选好了。

protocol 协议层

这层首要便是挑选一种协议来安排咱们的恳求。

Dubbo支撑的协议许多,包含:dubbo、rmi、hessian、http、webservice、thrift、memcached、redis等。默许运用dubbo 协议。

Exchange 信息交流层

这层最首要的意图便是把咱们的恳求数据包装成 Request 或许 Response 。

Transport 网络通信层

现在咱们挑选好了机器,也把恳求依照协议进行安排好了,而且封装好了恳求。那么这个恳求怎样发送到服务供给者的哪台机器呢?

此刻咱们就需求挑选一个网络通信的结构。由他来担任把你的恳求经过网络发送曩昔。比方比较常见的 netty、mina 等。

在发送曩昔之前,还得对恳求进行序列化。序列化有多种方法能够挑选,比方Json、Protobuf、Protostuff、Hessian、Kryo等、Java序列化等等。

服务顾客接受到恳求后的处理

那么服务供给者怎样才干收到这个恳求呢?此刻服务供给者里边也得需求一个网络通信结构,他去监听你敞开的某个端口,比方就发动一个 netty 去监听顾客发送极彩注册机-Java开发者你还不知道?告知你Dubbo 的底层原理,面试不再怕过来的恳求。

接受到恳求往后,然后进行反序列化,然后,前面咱们发过来的是 经过 Exchange 层包装的 Request 恳求,那么这儿也需求 这层来对 恳求进行解析。解析的时分,也需求依据一种协议来进行解析。

实际上 解析完结恳求今后,还会创立一个动态署理目标,再去调用咱们的服务供给者接口,最终回来数据。

整个调用流程图

期望你在面试的时分,能够给面试官画出来这个图。



参考材料

或许面试的时分还会有更多的细节,那么依据上面大体的几层,一层一层的了解各自的细节。这姿态或许会更有掌握一些。

dubbo 中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

Dubbo 完成原理及架构详解:http极彩注册机-Java开发者你还不知道?告知你Dubbo 的底层原理,面试不再怕://crazyfzw.github.io/2018/06/10/dubbo-architecture/[1]

把上面的图了解了,再极彩注册机-Java开发者你还不知道?告知你Dubbo 的底层原理,面试不再怕去看官方的,我以为会更好一些。

重视我的头条号并在后台私信我:555,即可(获取Java高档架构材料)。

不知道怎样私信的朋友能够重视大众号:Java耕耘者。(点击小助理获取)

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP