1.什么是Dubbo
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
1.1架构
1.2节点角色说明:
Provider:暴露服务的服务提供方(生产者)
Consumer:调用远程服务的服务消费方(消费者)
Registry:服务注册与发现的注册中心(例如:zookeeper)
Monitor:统计服务的调用次数和调用时间的监控中心(例如:dubbo admin)
Container:服务运行容器
1.3调用关系说明
0.服务容器负责启动,加载,运行服务提供者。
1.服务提供者在启动时向注册中心注册自己提供的服务。
2.服务消费者在启动时向注册中心订阅自己所需的服务 。
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册将基于长连接推送变更数据给消费者。
4.服务消费者从提供者地址列表中基于负载均衡算法,选一台提供者进行调用,如果调用失败刚再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
1.4健状性
监控中心宕掉并不会影响dubbo使用,只是会丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后将自动切换到另一台
注册中心全部宕掉后服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后不影响使用
服务提供者全部宕掉后消费者应用将无法使用,并无限次重连等待服务提供者恢复
2.什么是zookeeper
ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。zookeeper用来注册dubbo的服务和进行负载均衡。
3.dubbo与zookeeper的关系
一级节点root内存储着dubbo,代表这个znode下的所有znode都是dubbo相关的
二级节点service存储着我们dubbo注册到zookeeper中的service名称,每多注册一个service服务,就会在dubbo这个znode下添加一个新的service节点
三级节点type存储着service类型,是提供者还是消费者
四级节点url存储着我们所注册的服务的具体地址
简单来说:zookeeper可以理解成动物管理者,把dubbo理解成动物,dubbo要注册服务和调用服务则需要通过zookeeper这个管理者的协助来完成
网友评论