dubbo常见问题

常见问题

  1. 什么是dubbo?
    1
    2
    3
    4
    5
    分布式服务治理(SOA)框架
    功能
    远程通信:NIO框架支持
    集群容错:多协议、软负载、failover、地址路由
    自动发现:注册中心

Alt dubbo-arch

  1. dubbo运行时,突然所有的zookeeper全部宕机,dubbo是否还会继续提供服务?

    1
    2
    3
    可以,dubbo启动成功后会在本地生成一个cache文件。
    注册中心集群节点对等,一半以上活着,集群就可以用。即使全挂掉,缓存文件还存在,就不会影响已有的业务调用。
    服务提供者集群节点对等,任何一台挂了,集群仍可用。所有提供者都挂了,消费者无法使用,无限重连等待服务提供者恢复。
  2. dubbo测试和生产共用一套zookeeer,怎么保证消费不冲突?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    过滤器(白名单),自己写 , 实现filter接口
    服务分组
    <!--服务-->
    <dubbo:service group="feedback" interface="com.xxx.IndexService" />
    <dubbo:service group="member" interface="com.xxx.IndexService" />
    <!--引用-->
    <dubbo:reference id="feedbackIndexService" group="feedback" interface="com.xxx.IndexService" />
    <dubbo:reference id="memberIndexService" group="member" interface="com.xxx.IndexService" />
    版本控制(多版本)
    <dubbo:service interface="com.foo.BarService" version="1.0.0" />
  3. dubbo连接注册中心和直连的区别?

    1
    2
    3
    4
    5
    开发、测试的时候,为了简单快速调试,绕过注册中心,直接指定服务提供者,点对点直连。
    如果是线上需求需要点对点,可在<dubbo:reference>中配置url指向提供者,将绕过注册中心,多个地址用分号隔开
    <dubbo:reference id="xxxService"interface="com.alibaba.xxx.XxxService"url="dubbo://localhost:20890"/>
    在JVM启动参数中加入-D参数映射服务地址
    java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890
  4. dubbo如何实现软负载均衡?

    1
    2
    注册中心,动态的注册和发现服务,使服务的位置透明,注册中心返回服务提供者地址给消费者,如有变更,注册中心将推送变更数据给消费者。只充当目录服务。
    消费者通过注册中心,获取服务提供者地址列表,基于客户端的负载均衡算法,选一台服务提供者进行调用,调用失败,再选另一台。
  5. dubbo 负载均衡算法有哪些?

    1
    2
    3
    4
    RoundRobin LoadBalance (轮询算法)
    ConsistentHash LoadBalance(一致性Hash),相同的参数请求总是请求同一个提供者
    Random LoadBalance(随机)
    LeastActionLoadBalance(最少活跃)
  6. dubbo 安全机制如何解决?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。
    全局
    <dubbo:provider interface="" token="true">UUID生成随机令牌
    <dubbo:provider interface="" token="123456">固定token令牌,相当于密码。
    服务级别
    <dubbo:service interface=" " token="true">随机令牌
    <dubbo:service interface=" " token="123456">固定密码令牌
    协议级别
    <dubbo:protocol name="dubbo" token="true">
    <dubbo:protocol name="dubbo" token="123456">
    dubbo服务黑白名单,来控制服务所允许的调用方。
  7. zookeeer 是干什么的?

    1
    分布式应用程序协调服务,为分布式应用提供一致性服务的软件,包括:配置维护、域名服务、分布式同步、组服务等。
支持原创技术分享,您的支持将鼓励我继续创作!