dubbo学习笔记

时间:2022-07-24
本文章向大家介绍dubbo学习笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

ubbo的启动方式

依赖容器(Tomcat)

使用main方法

使用内置的main方法

Dubbo控制台和监控台配置

配置控制台

查看maven的版本信息

执行源码的编译和打包操作

最后编译结果为如下,表示成功了。

部署dubbo管控台

1、在打包后的application.properties文件中修改对应配置信息

2、部署dubbo控制台

通过localhost:7001 访问控制台 (默认账号和密码相同)

配置监控台

1、找到这个目录下面对应文件

2、解压这个.gz文件,进行相应的配置

3、启动监控台(通过start.bat/start.sh启动)

4、解决操作的过程的数据不能够显示到监控台的问题?

在每一个服务的配置文件中添加一句配置

服务检查

表示启动的时候不做检查依赖,主要用于服务的循环依赖的实例 check设置为false,check默认为true

多协议支持

dubbo (默认) ,长连接协议 【操作过程中数据量比较小的传输】,不适用视频,大文件等传输操作。

hessian 短连接协议(传输数据量比较大情况,在项目开发中会针对不同流量来进行协议的设定)

1、引入依赖

<dependency>
    <groupId>com.caucho</groupId>
    <artifactId>hessian</artifactId>
    <version>4.0.7</version>
</dependency>
​
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
    <version>6.1.26</version>
</dependency>

2、在对应配置文件添加协议

<dubbo:protocol name="hessian" port="20999"/>

webservice

rmi

http

thirft

一个服务一个协议

一个服务多个协议

多注册中心

多版本支持

消费端指定不同的版本号

消费端异步调用(只支持Dubbo协议)

### RpcContext.getContext().getFuture(); 获取异步对象
​
public static void main( String[] args ) throws InterruptedException, ExecutionException {
        ApplicationContext
                context = new ClassPathXmlApplicationContext("spring/application-consumer.xml");
        ApiDemoTest demoTest = (ApiDemoTest) context.getBean("apiDemoTest");
        String admin = demoTest.login("admin", "123");
        Future<String> future = RpcContext.getContext().getFuture();
        System.out.println("main:" + admin);
        System.out.println("结果:"+future.get()); // 阻塞等待结果
        System.out.println("=========");
​
    }

主机绑定问题(解决注册中心上面注册的是服务器名称问题)

ServiceConfig-> findConfigedHosts的源码

PC: Gerry-PC:8080/ => 192.168.3.22:8080

直连/服务只订阅/服务只注册(针对测试)[开发环境]

服务只订阅:

场景: 我们开发中服务在测试的时候不能直接注册到注册中心。

1、在服务端的的配置中

2、在消费端通过在dubbo:references 配置如下:

服务只注册:

场景: 注册中心的服务只对内部服务提供订阅,外部服务订阅不了。

服务端配置:

负载均衡(配置实现)

RandomLoadBalance -> random  随机负载均衡 (默认的)
RoundRobinLoadBalance ->  roundrobin   轮询负载均衡
LeastActiveLoadBalance -> leastactive  最小响应时间负载均衡
ConsistentHashLoadBalance -> consistenthash 一致性hash负载均衡

消费端配置负载均衡策略

服务调用超时问题

1、建议开发的服务都设置重试次数和超时时间。

集群容错

Failover cluster 失败的时候将自动切换并重试其他的服务器。通过 retries=2 来设置重试的次数

Failfast cluster 快速失败,只发起一次调用;写操作,比如新增记录,非幂等请求。

Failsafe cluster 失败安全,出现异常信息,直接忽略异常。主要用于日志操作出现异常情况。

Failback cluster 失败自动恢复,后台记录失败请求,定时重发这个信息(消息推送)

Forking cluster 并行调用多个服务,只要一个成功就返回,只应用在读数据的时候。

BroadCast cluster 广播调用所有服务提供者,逐个调用,只要有一个报错就返回异常

消费端做如下的配置即可:

Dubbo源码结构:

代码示例:

https://gitee.com/lm970585581/code_base/tree/master/dubbo%E4%BD%BF%E7%94%A8XML%E9%85%8D%E7%BD%AE%E4%BB%A3%E7%A0%81

https://gitee.com/lm970585581/code_base/tree/master/%E7%BA%AF%E6%B3%A8%E8%A7%A3Dubbo%E6%96%B9%E5%BC%8F