Dubbo学习

参考:http://www.imooc.com/article/21638
http://shiyanjun.cn/archives/325.html
https://blog.csdn.net/qq_33101675/article/details/78701305
https://blog.csdn.net/feiteyizu123/article/details/84740873
https://blog.csdn.net/qq_34021712/article/details/72858127
https://blog.csdn.net/qq_31748587/article/details/84943717
Dubbo是什么?
一款微服务服务框架 ,高性能和透明化的RPC远程服务调用方案.他与SpringCloud的区别就是,他支持多种协议,而SpringCloud只支持Http协议。
Dubbo支持多种协议:
Dubbo协议
Hessian协议
HTTP协议
RMI协议
WebService协议
Thrift协议
Memcached协议
Redis协议

Dubbo底层架构图
在这里插入图片描述
注册中心可以是: Multicast注册中心 Zookeeper注册中心 (推荐) Redis注册中心 Simple注册中心

dubbo框架调用流程:
服务提供方发布服务到服务注册中心;
服务消费方从服务注册中心订阅服务;
服务消费方调用已经注册的可用服务

(zookeeper 安装 https://blog.csdn.net/java_66666/article/details/81015302
dubbo-admin(管理控制台)安装 https://www.cnblogs.com/shengulong/p/8303454.html (必须是2.6.0的) )
一个简单的springboot+dubbo+zookeeperdemo
链接:https://pan.baidu.com/s/1I5qdxJgMxnLMbkeiN59_ug 提取码:t9dy

管理控制台: 通过dubbo-admin可以对消费者和提供者进行管理 (没他系统也能运行)
注册中心: 负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小(宕机服务提供者和服务消费者仍能通过本地缓存通讯)
监控中心: 负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示(宕机不影响系统调用)
服务提供者: 向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
服务消费者: 向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销

dubbo服务集群:
只需 协议端口(spring.dubbo.port) 不同即可

客户端负载均衡使用方式:权重可以在管理控制台中调整
在application.properties配置文件中添加
dubbo.reference.loadbalance=leastactive
可配置参数包含:random,roundrobin,leastactive,consistenthash

负载均衡策略:
1.Random LoadBalance(默认)
随机,按权重设置随机概率。 (权重可以在dubbo管控台配置)
2.RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率。
存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
3.LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
使慢的提供者收到更少请求。
4.ConsistentHash LoadBalance
一致性Hash,相同参数的请求总是发到同一提供者。

集群容错模式:
1、Failover Cluster(默认)
失败自动切换,当出现失败,重试其它服务器。(缺省)
通常用于读操作,但重试会带来更长延迟。

2、Failfast Cluster
快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,比如新增记录。

3、Failsafe Cluster
失败安全,出现异常时,直接忽略。
通常用于写入审计日志等操作。

4、Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。
通常用于消息通知操作。

5、Forking Cluster
并行调用多个服务器,只要一个成功即返回。
通常用于实时性要求较高的读操作,但需要浪费更多服务资源。

dubbo优势:
优点:
1.远程通讯解耦,
2.软负载均衡及容错机制。
3.服务自动注册与发现
4.提供完善的管理控制台dubbo-admin与简单的控制中心dubbo-monitor
5.Dubbo提供了伸缩性很好的插件模型,很方便进行扩展(ExtensionLoader)
6.支持多协议
7: Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,
只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

dubbo面试题:
https://blog.csdn.net/liyanlei5858/article/details/77924407
https://www.cnblogs.com/aspirant/p/9003255.html
https://blog.csdn.net/moakun/article/details/82919804

1,dubbo使用的是什么通信框架?
默认也推荐使用netty框架,还有mina。

2,服务调用是阻塞的吗?
默认是阻塞的,可以异步调用,没有返回值的可以这么做。

3,使用什么序列化框架,你知道的还有哪些?
默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

4,服务提供者能实现失效踢出是什么原理?
服务失效踢出基于zookeeper的临时节点原理。

5,Dubbo有哪几种配置方式?
1)Spring 配置方式
2)Java API 配置方式

6,Dubbo 核心的配置有哪些?
dubbo:service //服务配置
dubbo:reference //引用配置
dubbo:protocol //协议配置
dubbo:registry //注册中心配置
dubbo:application //应用配置
dubbo:provider //提供方配置
dubbo:consumer //消费者配置
dubbo:method //方法配置
dubbo:monitor //监控中心配置
dubbo:module //模块配置
dubbo:argument //参数配置

7,在 Provider 上可以配置的 Consumer 端的属性有哪些?
1)timeout:方法调用超时
2)retries:失败重试次数,默认重试 2 次
3)loadbalance:负载均衡算法,默认随机
4)actives 消费者端,最大并发调用限制

8,Dubbo启动时如果依赖的服务不可用会怎样?
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check=“true”,可以通过 check=“false” 关闭检查。

9,如果测试指定的某一个服务呢
直连

10,当一个服务接口有多种实现时怎么做?
当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。

11,服务上线怎么兼容旧版本?
可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。

12,Dubbo可以对结果进行缓存吗?
可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。

13,Dubbo服务之间的调用是阻塞的吗?
默认是同步等待结果阻塞的,支持异步调用。

14,Dubbo支持服务降级吗?
Dubbo 2.2.0 以上版本支持

15,Dubbo的管理控制台能做什么?
管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。

16,在使用过程中都遇到了些什么问题?
Dubbo 的设计目的是为了满足高并发小数据量的 rpc 调用,在大数据量下的性能表现并不好,建议使用 rmi 或 http 协议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值