Dubbo快速入门

Posted by Futari on 2021-03-21
Estimated Reading Time 3 Minutes
Words 1k In Total
Viewed Times

Dubbo整合Spring:在xml配置文件中声明Dubbo的配置项

整合SpringBoot的配置项的名称与Spring中一致,区别是导入starter之后位置不同,直接在配置文件中写就可以

服务提供方的XML配置项,具体配置标签的属性:

1.指定当前服务/应用的名称()

2.指定注册中心位置(

3.指定通信规则,duboo支持多种通信协议,一般建议使用dubbo协议

即在dubbo:protocol标签指定name属性和port即可

4.暴露该服务,指定的interface属性,本质上是通过接口进行调用

暴露服务直接加@Service即可。注意包是dubbo的

配置监控中心:dubbo:monitor属性
整合SpringBoot时在引导类上要加@EnableDubbo注解,开启基于注解的Dubbo功能

SpringBoot项目变为WEB项目,不需要配置打war包,需要导入SpringBOOT-Starter-web依赖之后,在配置文件中配置好server.port直接tomcat运行即可

常规的Spring项目需要打war包并且使用tomcat插件运行

暴露服务:@Service 消费服务:@Reference 注意这里引用的注解都是dubbo的

面向接口调用服务

Duoo还具有负载均衡机制,可以配置选择哪种机制,同时还可以进行服务降级和服务容错,可以直接在admin进行操作,不需要进行参数配置

查看官网文档来对dubbo的各项参数进行配置:

例如配置当前消费者和生产者的统一规则

Dubbo整合SpringBoot配置的其他方法:

1.starter+yml

2.xml+starter+@ImportResource导入配置文件

3.使用注解API格式,将配置文件编码注入

@Reference的参数url指定具体的地址,将采用Dubbo的直连模式

注册中心当即之后,仍然可以调用提供者的服务,原因是消费和服务之间可以通过本地缓存通讯,没有注册中心可以Dubbo直连(类似手动设置缓存)

Dubbo在内部封装了RPC调用的流程,即在内部使用了RPC框架
netty通信框架:netty是基于NIO(非阻塞的IO,同理还有阻塞IO即BIO)通信框架

Dubbo原理:

1.框架设计

Dubbo将所有的小层分为三个大层,分别是表面层即business(面向接口调用服务实现),RPC层(封装RPC调用框架),Remoting(基于netty通信,netty服务器负责监听端口),框架设计如下图:

Dubbo架构

2.Dubbo的配置文件是如何解析的

Dubbo标签解析器解析对应的配置项,每一项都有对应的类,所以我们在配置的时候可以不选择xml配置,可以自己手动编码配置同理实现了省略标签解析的步骤,将其转换为Dubbo的组件对象,流程图如下:

Duuo标签解析

服务暴露过程:

Netty监听提供方端口,Registry注册中心类使用注册器进行注册服务,哪一种注册中心使用哪一种注册中心实现类,将注册信息写入到注册表中,将注册表中的信息使用静态方法进行注册

服务引用过程(Reference):

研究Dubbo源码时所需要的调试知识:
单步调试:程序向下执行一行,有step over和step into两种。区别是前者是直接在当前代码块向下执行完全的一行,后者是如果该行有方法会自动进入自定义方法中,(不会进入官方类库的方法)

以此类推其他方法:

Force step into:强制进入所有方法的操作,可以进入官方方法

step out:在进入一个方法调试过程中,进行该操作可以强制跳出该方法,到达调用处下一代码行

Drop frame:跳转到当前方法的调用处重新执行,上下文变量也会重置,可以跳转到调用链中任何一个方法


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !