美文网首页
dubbo 学习笔记

dubbo 学习笔记

作者: kjalice | 来源:发表于2020-10-28 11:38 被阅读0次

    1、dubbo都支持什么协议,推荐用哪种?

    dubbo://(推荐)

    rmi://

    hessian://

    http://

    webservice://

    thrift://

    memcached://

    redis://

    rest://

    2、Dubbo需要 Web 容器吗?

    不需要,如果硬要用Web 容器,只会增加复杂性,也浪费资源。

    3、Dubbo内置了哪几种服务容器?

    Spring Container

    Jetty Container

    Log4j Container

    5、Dubbo默认使用什么注册中心,还有别的选择吗?

    推荐使用Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。

    6、Dubbo推荐使用什么序列化框架,你知道的还有哪些?

    推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

    7、Dubbo默认使用的是什么通信框架,还有别的选择吗?

    Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。

    8、服务上线怎么兼容旧版本?

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

    9、在 Provider 上可以配置的 Consumer 端的属性有哪些?

    timeout:方法调用超时

    retries:失败重试次数,默认重试 2 次

    loadbalance:负载均衡算法,默认随机

    actives 消费者端,最大并发调用限制

    12、Dubbo可以对结果进行缓存吗?

    可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。

    13、当一个服务接口有多种实现时怎么做?

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

    14、Dubbo服务之间的调用是阻塞的吗?

    默认是同步等待结果阻塞的,支持异步调用。Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。

    15、Dubbo在安全机制方面是如何解决的

    Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。

    16、dubbo连接注册中心和直连的区别

    在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,服务注册中心,动态的注册和发现服务,使服务的位置透明,并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover, 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。

    17、dubbo通信协议dubbo协议为什么不能传大包

    因dubbo协议采用单一长连接,

    如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),

    单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。

    单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 500KByte = 14。

    如果能接受,可以考虑使用,否则网络将成为瓶颈。

    18、在 Provider 上可以配置的 Consumer 端的属性有哪些?

    1)timeout:方法调用超时

    2)retries:失败重试次数,默认重试 2 次

    3)loadbalance:负载均衡算法,默认随机

    4)actives 消费者端,最大并发调用限制

    19、Dubbo启动时如果依赖的服务不可用会怎样?

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

    20、服务上线怎么兼容旧版本?

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

    21、Dubbo可以对结果进行缓存吗?

    可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。

    22、说说 Dubbo 服务暴露的过程。

    Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布

    相关文章

      网友评论

          本文标题:dubbo 学习笔记

          本文链接:https://www.haomeiwen.com/subject/avufvktx.html