dubbo学习笔记

Dubbo的启动方式

依赖容器(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

 

posted @ 2019-06-22 17:47  H.U.C-王子  阅读(272)  评论(0编辑  收藏  举报