问题1:dubbo是个什么东西?
答:dubbo是一个分布式的服务架构;
包括节点角色:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
关系说明:
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
引申问题(自行百度):dubbo的负载均衡算法?
问题2:zk是个什么东西?
答:
Zookeeper分布式服务框架是Apache Hadoop的一个子项目(树型的目录服务的数据存储,能做到集群管理数据),它主要是用来解决分布式应用中经常遇到的一些数据管理问题。
如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等
引申问题(自行百度):zk的选举机制(主要保证了数据的同步性),心跳机制(监测集群是否存在机器宕机,宕机剔除),分布式锁等?
问题3:dubbo为什么和zk一起使用?
答:运用技术比较成熟,参考资料较多,而且zk的特性比较适合dubbo;
问题4:zk在dubbo中具体作用是什么?
答:dubbo本身不用硬配置ip和服务的对应关系,由zk来实现;
zk通过心跳机制保证机器的存活性,如果机器宕机,检测不到心跳,能及时的剔除该节点,不影响整体服务的调用;
通过zk可以直接增加均衡的节点,和原来的服务没有任何关联;
问题5:zk+dubbo负载均衡的实现?由谁实现?实现方式?(百度了n多资料,最终的个人理解-有疑问可以沟通)
答:负载均衡的实现网上大部分说是有zk实现的,我感觉不如说是基于zk实现的;zk在dubbo里面的主要作用是一个注册中心的作用,因为dubbo的注册
中心可以抽象出来,所以不用zk的情况下还可以使用其他的如Redis等;
注册中心存储所有服务列表,并在消费者调用的时候暴露给消费者,消费者采用轮询、随机、hash等算法实现软负载均衡;
所有的zk服务宕机,并不影响dubbo服务的调用,因为dubbo可以根据本地缓存的服务列表进行调用,这也另一面的证明了负载均衡的实现方;
引申问题(自行百度):dubbo的负载均衡算法?