1 dubbo
Dubbo的服务注册与发现是如何实现的
答案要点
1)服务容器负责启动,加载,运行服务提供者。
2)服务提供者在启动时,向注册中心注册自己提供的服务。
3)服务消费者在启动时,向注册中心订阅自己所需的服务。
4)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
Dubbo的软负载均衡策略有哪些?
延伸题目:一致性Hash算法(或者其它算法)的原理是什么?
答案要点
1)Dubbo提供了4种均衡策略,如:Random LoadBalance(随机均衡算法)、;RoundRobin LoadBalance(权重轮循均衡算法)、LeastAction LoadBalance(最少活跃调用数均衡算法)、ConsistentHash LoadBalance(一致性Hash均衡算法)
2)延伸题目
将对应的key哈希到一个具有2^32次方的环上,形成一个闭环
将机器通过hash算法映射到环上,
把数据通过一定的hash算法处理后映射到环上,然后顺时针找到离自己最近的机器节点一致性Hash算法的实现
在使用Dubbo时,讲几个遇到的问题
答案要点
该题是开放题目,重点考察候选人对于Dubbo的熟悉程度以及排查问题、解决问题的思路
1)服务找不到;解决思路:检查连接注册中心是否正确;检查服务提供者是否在线;
2)服务调用超时;解决思路:服务端接口调优;调大timeout时间;
3)连接池满; 解决思路:调整连接池大小,增加机器,优化服务端接口提高响应速度
2 HSF
HSF作为远程服务框架,具备客户端负载均衡、服务发现以及去中心化等多种分布式特性。HSF内部领域分为三个维度:规则、地址和服务,三者相互“独立”且又“关联”。
规则: 规则是HSF(服务端和客户端)在运作的时候状态信息的体现,比如:服务端发布的服务在某些IP端将会以哪个分组进行发布。这些信息在应用启动时能够结合应用的特性针对应用或者某个服务接口进行个性化配置,是HSF“状态”的体现,目前HSF是使用Diamond这个产品完
成规则的存储与通知的。
地址: 地址是调用的载体,它表示提供服务的一台机器(ip),服务端需要将地址发送到注册中心让客户端能够进行服务发现,客户端需要通过注册中心订阅一个服务的地址。服务与地址的对应关系是多对多的关系,一个服务可以由多个地址提供,一个地址可以提供多种服务。
当一个服务有了新地址(机器)或者减少了地址(机器)时,注册中心会通知这个服务的订阅方将地址增加或者减少,这个注册中心就是configserver,它负责存储地址信息以及地址变更的推送。
服务: 服务是调用方和提供方交流的依凭,一般是一个接口,表示一个业务行为以及相关的数据含义。HSF提供了服务提供方的暴露以及调用方Client的生成。通过使用HSFApiProviderBean能够暴露一个服务,将机器的地址注册到configserver,并且能够通过12200端口进行
服务提供,通过HSFApiConsumerBean能够包装出一个客户端,它是服务接口的一个代理,并且它从configserver上订阅了服务的地址列表,能够在这个列表上完成随机调用,做到负载均衡与HA。