DUBBO知识总结
dubbo 是什么?
dubbo是一个分布式,高可用,高透明的RPC框架,他提供了自动注册以及自动发现远程调用功能,他与spring无缝集成。
dubbo 的由来?
dubbo的由来主要根据web不断发展,经历了四个发展期
(1)单一架构
单项目中包含了所以功能模块,不区分模块业务线
(2)垂直架构
当访问量逐渐增大,单一应用按照有业务线拆成多个应用,以提升效率。
(3)分布式架构
把项目中通用的模块抽取出来,最为单独维护的项目,比如用户,商品等等
(4)流动计算架构
随着数据量以及并发量变大,搭建集群为了防止资源浪费,通过算法把每次请求进行平衡分发,提高集群利用率。
dubbo的核心功能?
dubbo的核心功能主要分为三大类,分别是
(1)remoting(网络通信架构)
dubbo提供多种 NIO 框架抽象封装,包括同步转异步,请求-响应的数据交互方式
(2)cluster(服务架构)
提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
(3)registry(服务组件)
dubbo提供了自动注册以及自动发现,从而提高使用便捷,以及强大的功能
dubbo的核心组件?
1.Provider(服务提供者)
2.Consumer(服务消费者)
3.Registry(服务注册中心)
4.Moniter(服务监控中心)
5.Container(服务运行容器)
dubbo的调用过程?
1.服务提供者服务启动,把接口注册到注册中心。
2.服务消费者服务启动,去注册中心中查找自己远程调用的接口
3.当消费者确定了URL,不经过注册中心直接随机调用该接口消费者,当调用失败,会重新连接其他服务该接口
4.Moniter会对接口调用,以及接口调用时间进行记录日志
以上1,2,3为长连接,4为短连接
dubbo支持哪些协议,每种协议的应用场景,优缺点?
dubbo单一长连接和NIO异步通讯,适用于大并发,小数据以及消费者大于提供者场景,dubbo使用TCP,异步,hession序列化传输协议。所以他只能在java中使用
webservice是集成CXF使用,使用的是http网络传输协议,所以他是跨平台的
redis基于redis的RPC协议
memcache基于memcache的RPC协议
dubbo推荐用什么协议?
DUBBO默认使用DUBBO RPC协议。
dubbo那有些注册中心?
multicast
Multicast注册中心不需要任何中心节点,只要广播地址,就能进行服务注册和发现。基于网络中组播传输实现;
simple
redis
使用key-map数据类型,key为服务地址及数据类型,map的key为url,value为过期时间,基于发布/订阅模式
zookeeper
基于zookeeper的watch机制进行数据交换
dubbo的注册中心集群挂掉,发布者和订阅者之间还能通信么?
还能够通信,因为当服务都注册到注册中心中,会保存在本机缓存中。但是,如果发布订阅服务挂掉了,那就GG了
dubbo与Spring的关系?
在spring中使用dubbo,配置有两种方式1.注解方式,2.XML配置方式,使用和配置起来都是非常的简单。dubbo是基于spring的schema拓展进行加载
dubbo使用的是什么通信框架?
dubbo使用的是NIO Netty通信。
dubbo集群提供了哪些负载均衡策略?
1.Random LoadBalance(随机调用策略)(默认调用策略)
2.RoundRibon LoadBalance(轮询调用策略)
3.LeastActive LoadBalance(流量小调用策略)
4.ContantHash LoadBalance(一致性hash 调用策略)
dubbo的集群容错方案有哪些?
failover cluster(默认集群容错方案)
当调用服务失败时,会重新连接其他服务器
failfast cluster
当调用服务失败时,会直接报错
failsafe cluster
当调用服务失败时,直接忽略错误
failback cluster
当调用服务失败时,会把调用地址存入日志中,定时重新发送请求
forking cluster
并行调用多个服务器,当一个成功则直接返回,为了防止资源浪费,提供设置最大并行数“”forks=2
dubbo支持哪些序列化方式?
dubbo支持fastjson,dubbo,java只带序列化工具。
dubbo超时时间怎样设置?
根据不同配置方式来进行设置超时时间,设置的标签都是timeout。
当如果服务报超时错误,dubbo默认超时是会重新连接2次。所以,当出现该错误的时候,是需要去加大timeout的值(毫秒)
dubbo在安全机制方面是如何解决?
dubbo使用token安全令牌方式防止消费者越过注册中心直接调用提供者,并且dubbo注册中心提供了黑白名单设置。
dubbo 和 dubbox 之间的区别?
dubbox 是在 dubbo 上面进行拓展,两者之间的区别就是dubboX支持restful调用方式。
dubbo和Spring Cloud的关系?
两者不是一个发展时代的产物,dubbo 是 SOA 时代产物,注重是服务调用,而spring cloud 是 微服务时代产物,他是一个生态圈
dubbo和spring cloud的区别?
两者之间的底层使用框架以及传输方式不同。dubbo底层使用netty NIO框架,他使用TCP传输方式以及使用hession序列化完成RPC使用,而spring cloud使用的是http + rest传输调用,虽然http会有更大的报文,传输效率上没有TCP快,但是rest 比 RPC 更加灵活。
dubbo的一些配置参数设置?
asyc(默认为false,设置异步)
url(配置服务连接url地址)
group(方便debug。服务分组)
timeout(设置超时时间)
method(设置对应接口方法)
service(服务提供者配置)
reference(服务调用者配置)
check(默认为true,服务检查,如果使用spring懒加载,关闭检查)
token(令牌效验)
lazy(延迟连接 “减少长连接数,当发起调用,在创建长连接”)
这是目前本人根据自己积累,总结出来的一些。后续还会进行编辑添加