常见问题
- 什么是dubbo?
1
2
3
4
5分布式服务治理(SOA)框架
功能
远程通信:NIO框架支持
集群容错:多协议、软负载、failover、地址路由
自动发现:注册中心
dubbo运行时,突然所有的zookeeper全部宕机,dubbo是否还会继续提供服务?
1
2
3可以,dubbo启动成功后会在本地生成一个cache文件。
注册中心集群节点对等,一半以上活着,集群就可以用。即使全挂掉,缓存文件还存在,就不会影响已有的业务调用。
服务提供者集群节点对等,任何一台挂了,集群仍可用。所有提供者都挂了,消费者无法使用,无限重连等待服务提供者恢复。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" />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:20890dubbo如何实现软负载均衡?
1
2注册中心,动态的注册和发现服务,使服务的位置透明,注册中心返回服务提供者地址给消费者,如有变更,注册中心将推送变更数据给消费者。只充当目录服务。
消费者通过注册中心,获取服务提供者地址列表,基于客户端的负载均衡算法,选一台服务提供者进行调用,调用失败,再选另一台。dubbo 负载均衡算法有哪些?
1
2
3
4RoundRobin LoadBalance (轮询算法)
ConsistentHash LoadBalance(一致性Hash),相同的参数请求总是请求同一个提供者
Random LoadBalance(随机)
LeastActionLoadBalance(最少活跃)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服务黑白名单,来控制服务所允许的调用方。zookeeer 是干什么的?
1
分布式应用程序协调服务,为分布式应用提供一致性服务的软件,包括:配置维护、域名服务、分布式同步、组服务等。