1.面试题:Dubbo中zookeeper做注册中心,如果注册中心集群全都挂掉,发布者和订阅者之间还能通信么?
1、【提供者】在【启动】时,向注册中心zk 【注册】自己提供的服务。
2、【消费者】在【启动】时,向注册中心zk 【订阅】自己所需的服务。
可以的,消费者在启动时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地(dubbo启动成功后会在本地生成一个cache文件).
每次调用时,按照本地存储的地址进行调用
可以的,消费者本地有一个生产者的列表,他会按照列表继续工作,倒是无法从注册中心去同步最新的服务列表,短期的注册中心挂掉是不要紧的,但一定要尽快修复
挂掉是不要紧的,但前提是你没有增加新的服务,如果你要调用新的服务,则是不能办到的
转载来源:https://blog.csdn.net/zh521zh/article/details/77948208
2.测试和生产公用一套zookeeper,怎么保证消费不冲突
- dubbo白名单(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" />
第一种方案:
实现com.alibaba.dubbo.rpc.Filter接口:
public class AuthorityFilter implements Filter {
private static final Logger LOGGER = LoggerFactory.getLogger(AuthorityFilter.class);
private IpWhiteList ipWhiteList;
//dubbo通过setter方式自动注入
public void setIpWhiteList(IpWhiteList ipWhiteList) {
this.ipWhiteList = ipWhiteList;
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
if (!ipWhiteList.isEnabled()) {
LOGGER.debug("白名单禁用");
return invoker.invoke(invocation);
}
String clientIp = RpcContext.getContext().getRemoteHost();
LOGGER.debug("访问ip为{}", clientIp);
List<String> allowedIps = ipWhiteList.getAllowedIps();
if (allowedIps.contains(clientIp)) {
return invoker.invoke(invocation);
} else {
return new RpcResult();
}
}
}
能通过setter方式来注入其他的bean,且不要标注注解!dubbo自己会对这些bean进行注入,不需要再标注@Resource让Spring注入
在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下: xxxFilter=com.xxx.AuthorityFilter
修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter, 内容如下:
<dubbo:provider filter="xxxFilter" />
这样就可以实现dubbo接口的IP白名单功能了。
出自https://www.cnblogs.com/wangzhongqiu/archive/2017/09/22/7575759.html
3.服务上线怎么不影响旧版本?
采用多版本开发,不影响旧版本。
4.如何解决服务调用链过长的问题?
可以结合zipkin实现分布式服务追踪。
出自:https://blog.csdn.net/qq_33314107/article/details/80821122