栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

3.Dubbo

3.Dubbo

1 用普通Spring配置文件xml的方式配置Dubbo 1.1 Dubbo详细配置

1.将服务提供者注册到注册中心( 俗称暴露服务 )
1.1 导入Dubbo依赖
可以在Maven官网上查询想要引入的版本,在Maven的POM文件里,引入
1.2 引入注册中心客户端
注册中心如果是zookeeper,就要引入操作zookeeper注册中心的客户端,如果用的别的,那就引入别的客户端
dubbo2.6之前的版本引入 zkclient操作zookeeper
dubbo2.6之后的版本引入 Curator 操作zookeeper
1.3 配置服务提供者
1.4 加载Spring配置
让ioc容器一启动就自动将服务注册到注册中心
ioc.start();

 2.消费者的配置

1.2 Dubbo-admin 客户端

网页版客户端,能看到提供者和消费者的数量和详细信息

1.3 Dubbo-Monitor 监控中心

能够看到一些性能上的报表,以及一些统计信息

2 用SpringBoot配置Dubbo

很明显,用SpringBoot的配置XXX.yaml就显得清爽很多,不再像之前xml配置文件那样,需要加很多标签

3 Dubbo的部分默认配置

配置优先原则:小范围精确优先,同级别的话,就是消费方优先

1.4.3.1 启动检查

1.4.3.2 超时&配置覆盖关系

1.4.3.3 重试次数

1.4.3.4 随机调用,轻松实现灰度发布,和新版本的平稳迭代

1.4.3.5 本地存根

4 SpringBoot与Dubbo整合的3种方式
1.导入 dubbo- starter,在application. properties配置属性, 用@Service暴露服务 使用@Reference引用服务
2.导入 dubbo- starter,保留 dubbo的xml配置文件;使用@importResource导入Dubbo的配置文件即可
3.使用注解API的方式,什么标签已经预置了对应的config类,然后返回这个类对象就行了,即将每一个组件手动创建到容器中,让Dubbo去扫描组件就行了
5 ZooKeeper宕机与Dubbo直连

ZooKeeper注册中心就算全部宕掉了,Provider和Consumer也仍能通过本地缓存通信

Dubbo直连:就算没有了注册中心,Provider和Consumer也仍能通过Dubbo直连的方式进行通信

6 集群模式下Dubbo的负载均衡机制
1.按权重随机调用
2.按权重轮询
3.按最少活跃数—每台服务器被调用后都记录这次调用时间,Consumer会优先去调用时间最少的
4.一致性hash—将同一个请求,同样参数的只分配给固定的一台机器,相当于用hash进行了分组
6.1 负载均衡策略的配置

在暴露服务的时候就指定 负载均衡策略

 @Reference(loadbalance="roundrobin")        //直接指定负载均衡策略为轮询
6.2 服务降级—精确指定权重
 当服务器压力剧增的情况下,根据实际业务情况及流量,对一些不重要的利益(服务和页面)有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心利益正常运作或高效运作

Dubbo支持2种策略用来动态调配服务器资源:

1.在客户端就强制返回为空,用来直接屏蔽不重要服务或不可用服务对调用方的影响,对应设置为屏蔽
2.调用失败后返回为空,用来容忍不稳定因素的影响,比如网络的波动,对应设置为容错
7 集群容错 7.1 常见容错策略

在集群调用失败时,Dubbo提供了多种容错方案,缺省为重试

1.失败自动重试其他服务器
2.快速失败 只发起一次调用,如果失败,立即报错,通常用于非等幂性的写操作,比如追加记录
3.失败安全 通常用于写入日志类型的操作
4.失败自动恢复,定时重发,适用于那些一定要完成的工作 如消息通知操作
5.并行调用多个服务器 用于实时性较高的操作,但比较消耗资源
6.广播调用所有提供者 任意一台报错则报错 用于通知所有提供者更新缓存或日志等本地资源
 集群容错策略配置方式:
 ,
 或p
7.2 整合Hystrix配置容错机制
 Hystrⅸ旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 Hystrⅸ具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。

用Hystrix可以方便的指定出错后的动作

8 Dubbo的原理 8.1 RPC框架

 RPC框架就是要把上图的整个过程给封装起来,供开发者以面向接口的方式使用,中间的过程对于调用者是透明的
 Dubbo作为RPC框架的其中之一,也要遵循上图这个过程,只是具体实现与别的框架不同,比如通信啥的
8.2 Dubbo底层通信:netty

netty是基于Java的NIO(非阻塞的IO)

通信:1.网络通信

​ 2.磁盘通信

 扩展:NIO与BIO
     NIO:非阻塞式的IO
     BIO:阻塞式的IO

 多路复用的NIO:线变长了,但是资源利用率变高了

8.3 Dubbo原理 8.3.1 dubbo原理-框架设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7eqM5O28-1644204372924)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

8.3.2 dubbo原理-启动解析、加载配置信息
 配置文件的解析:以Spring的方式启动的,因此跟Spring解析配置文件有很大的关系,总接口叫BeanDefinitionParser,因此有一个叫DubboBeanDefinitionParser的类来解析Dubbo的配置文件
 解析标签,然后封装成组件
8.3.3 dubbo原理-服务暴露
 
8.3.4 dubbo原理-远程服务引用

文件的解析:以Spring的方式启动的,因此跟Spring解析配置文件有很大的关系,总接口叫BeanDefinitionParser,因此有一个叫DubboBeanDefinitionParser的类来解析Dubbo的配置文件
解析标签,然后封装成组件

##### 8.3.3 dubbo原理-服务暴露

##### 8.3.4 dubbo原理-远程服务引用

##### 8.3.5 dubbo原理-远程服务调用
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/729219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号