\
dubbo健壮性
(1)监控中心宕掉不影响使用,只是丢失部分采样数据
(2)数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
(3)注册中心对等集群,任意一台宕掉后,将自动切换到另一台
(4)注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
(5)服务提供者无状态,任意一台宕掉后,不影响使用
(6)服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
dubbo伸缩性
(1)注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
(2)服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者
1、默认使用的是什么通信框架,还有别的选择吗?
默认也推荐使用netty框架,还有mina。
Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。
2、服务调用是阻塞的吗?
默认是阻塞的,可以异步调用,没有返回值的可以这么做。
3、一般使用什么注册中心?还有别的选择吗?
推荐使用zookeeper注册中心,还有redis等不推荐。
4、默认使用什么序列化框架,你知道的还有哪些?
默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
5、服务提供者能实现失效踢出是什么原理?
服务失效踢出基于zookeeper的临时节点原理
6、服务上线怎么不影响旧版本?
采用多版本开发,不影响旧版本。
7、如何解决服务调用链过长的问题?
可以结合zipkin实现分布式服务追踪。
8、说说核心的配置有哪些?
核心配置有
dubbo:service/
dubbo:reference/
dubbo:protocol/
dubbo:registry/
dubbo:application/
dubbo:provider/
dubbo:consumer/
dubbo:method/
9、dubbo推荐用什么协议?
默认使用dubbo协议。还有 rmi,http,hessian,webservice
10、同一个服务多个注册的情况下可以直连某一个服务吗?
可以直连,修改配置即可,也可以通过telnet直接某个服务。
11、画一画服务注册与发现的流程图
12、集群容错怎么做?
1.Faukiver Cluster(默认缺省):
- 失败就自动切换,重试其他服务器.
- 用于读操作,可重试会带来延迟
- 通过retries=“2”来设置重试次数(不含第一次)
2.Failfast Cluster
- 快速失败,只发起一次调用,失败立刻报错。——报错最好捕获,方便自身后续分析
- 用于非幂等性的写操作,比如新增记录
3.Failsafe Cluster
- 失败自动回复,后台记录失败请求,定时重发。——避免陷入服务器宕机,不断失败,不断定时重发
- 通常用作消息通知操作
4.Forking Cluster
- 并行调用多个服务器,成功一个即返回
- 用于实时性高的读操作,但需要浪费更多服务资源。—— 典型的 性能和硬件 之争,协调好二者,本人还是比较推荐这个模式的。
- 可通过forks=“2”设置最大的并行数
5.Broadcast Cluster
- 广播所有提供者,逐一调用,任意一台报错则报错
- 用于通知各个提供者更新缓存或日志等本地资
13、在使用过程中都遇到了些什么问题?
14、dubbo和dubbox之间的区别?
dubbox是当当网基于dubbo上做了一些扩展,如加了服务可restful调用,更新了开源组件等。
15、你还了解别的分布式框架吗?
spring cloud