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源码结构:
代码示例:
- Java并发编程的艺术(一)——并发编程需要注意的问题
- 梯度下降法快速教程 | 第三章:学习率衰减因子(decay)的原理与Python实现
- Java并发编程的艺术(三)——volatile
- java学习手册-java 新手入门必看的30个题
- Java并发编程的艺术(五)——中断
- 简易的深度学习框架Keras代码解析与应用
- Java并发编程的艺术(六)——线程间的通信
- 轻量级线程池的实现
- python根据BM25实现文本检索
- 稳扎稳打JavaScript(一)——作用域链内存模型
- 稳扎稳打JavaScript(二)——图解对象内存模型
- Swift学习资源
- 稳扎稳打JavaScript(三)——创建对象的几种方式
- 快速教程:使用Cython来扩展Python/NumPy库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis安装(Windows和Linux)详细图解
- 史上最详细版 头文件biso.h,graphics.h,libbgi.a
- ZooKeeper入门,这一篇给你讲的明明白白
- 数论-GCD、LCM、扩展欧几里得
- “豪 横”版 channel_v3.json,你确定不需要?
- Redis-性能测试(redis-benchmark)
- 一条贪吃蛇的使命——零基础入门贪吃蛇游戏
- 数论-快速幂、矩阵快速幂
- 字节一面,面试官告诉我链表掌握的不熟练
- 好玩、有趣的 Linux 命令学习神器 kmdr!
- 基于web的机票管理系统设计与实现(二)
- 任意进制转换(2进制、8进制、16进制等)
- 动态规划-数位DP
- R海拾遗-table1绘制
- R-批量文件读取