Dubbo(一)

  Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo框架,是基于容器运行的,容器是Spring

1. 服务调用超时问题怎么解决?
消费者调用服务超时会引起服务降级的发生,即从发出调用请求到 获取到提供者的响应结果这个时间超
出了设定的时限。默认服务调用超时时限为 1 秒。可以 在消费者端与提供者端设置超时时限来解决。
总的来说还是要设计好业务代码来减少调用时长,设置准确RPC调用的超时时间才能更好的解决这个问
题。
2. Dubbo支持哪些序列化方式?
答:默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
3.Dubbo和SpringCloud的关系?
Dubbo是SOA时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而
SpringCloud诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了Spirng、
SpirngBoot的优势之上,两个框架在开始目标就不一致,Dubbo定位服务治理、SpirngCloud是一个生
态。
4. Dubbo的架构设计?
Dubbo框架设计一共划分了10个层:
服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应
的接口和实现。
配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心。
服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton。
服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心。
集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心。
监控层(Monitor):RPC调用次数和调用时间监控。
远程调用层(Protocol):封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、
Invoker和Exporter。
信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心。
网络传输层(Transport):抽象mina和netty为统一接口,以Message为中心。
5.Dubbo的默认集群容错方案?
答:FailoverCluster
6.Dubbo使用的是什么通信框架?
默认使用NIO Netty框架
7.Dubbo的主要应用场景?透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软
负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发
现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加
或删除服务提供者。
8.Dubbo服务注册与发现的流程?
流程说明:
Provider(提供者)绑定指定端口并启动服务·指供者连接注册中心,并发本机IP、端口、应用信息和提供
服务信息发送至注册中心存储
Consumer(消费者),连接注册中心,并发送应用信息、所求服务信息至注册中心·注册中心根据消费
者所求服务信息匹配对应的提供者列表发送至Consumer应用缓存。
Consumer在发起远程调用时基于缓存的消费者列表择其一发起调用。
Provider状态变更会实时通知注册中心、在由注册中心实时推送至Consumer
设计的原因:
Consumer与Provider解偶,双方都可以横向增减节点数。
注册中心对本身可做对等集群,可动态增减节点,并且任意一台宕掉后,将自动切换到另一台
去中心化,双方不直接依懒注册中心,即使注册中心全部宕机短时间内也不会影响服务的调用
服务提供者无状态,任意一台宕掉后,不影响使用
10.Dubbo的四大组件
1、Provider:服务提供者。
2、Consumer:服务消费者。
3、Registry:服务注册与发现的中心,提供目录服务,亦称为服务注册中心
4、Monitor:统计服务的调用次数、调用时间等信息的日志服务,并可以对服务设置权限、 降级处理
等,称为服务管控中心
11.Dubbo在安全机制方面是如何解决的
Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑
白名单,来控制服务所允许的调用方。
12.Dubbo和SpringCloud的区别?
最大的区别:Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化
完成RPC通信。
而SpringCloud是基于Http协议+Rest接口调用远程过程的通信,相对来说,Http请求会有更大的报
文,占的带宽也会更多。但是REST相比RPC更为灵活。
13.Dubbo支持哪些协议,每种协议的应用场景,优缺点?
dubbo 协议 :
Dubbo 默认传输协议连接个数:单连接
连接方式:长连接
协议:TCP
传输方式:NIO 异步传输
适用范围:传入传出参数数据包较小(建议小于 100K),消费者比提供者个数多,单一 消费者无法压
满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。
rmi:采用JDK标准的rmi协议实现,传输参数和返回参数对象需要实现Serializable接口,使用java标准
序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输
协议TCP。多个短连接,TCP协议传输,同步传输,适用常规的远程服务调用和rmi互操作。在依赖低版
本的Common-Collections包,java序列化存在安全漏洞;
webservice:基于WebService的远程调用协议,集成CXF实现,提供和原生WebService的互操作。多
个短连接,基于HTTP传输,同步传输,适用系统集成和跨语言调用;
http:基于Http表单提交的远程调用协议,使用Spring的HttpInvoke实现。多个短连接,传输协议
HTTP,传入参数大小混合,提供者个数多于消费者,需要给应用程序和浏览器JS调用;
hessian:集成Hessian服务,基于HTTP通讯,采用Servlet暴露服务,Dubbo内嵌Jetty作为服务器时
默认实现,提供与Hession服务互操作。多个短连接,同步HTTP传输,Hessian序列化,传入参数较
大,提供者大于消费者,提供者压力较大,可传文件;
memcache:基于memcached实现的RPC协议
redis:基于redis实现的RPC协议
14.Dubbo的核心功能有哪些?
主要就是如下3个核心功能:
Remoting:网络通信框架,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息
交换方式。
Cluster:服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败
容错,地址路由,动态配置等集群支持。
Registry:服务注册,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,
使服务提供方可以平滑增加或减少机器。
15.Dubbo的注册中心集群挂掉,发布者和订阅者之间还能通信么?
可以的,启动dubbo时,消费者会从zookeeper拉取注册的生产者的地址接口等数据,缓存在本地。每
次调用时,按照本地存储的地址进行调用。

posted on 2021-05-31 20:47  沫戏回首  阅读(91)  评论(0编辑  收藏  举报

导航