- Zookeeper
- 功能:分布式应用程序协调服务,集群管理者,监视集群各个节点状态-->提交反馈-->进行下一步合理操作;
- 机制:目录方式,当目录节点发生变化(数据改变,被删除,子节点增加删除)时,zookeeper会通知客户端。
- 工作原理:核心原子广播,保证server同步,实现是Zab协议:两种模式:恢复模式(选主)和广播模式(同步),服务器或领导者崩溃选主。
- 状态:
-
- LOOKING:server不知道leader是谁,正在搜寻;
- LEADING:当前server是选举出来的leader;
- FOLLOWING:leader选举出来,当前server与之同步;
- Dubbo
- 功能:高性能服务框架:提供服务(把一些业务分离,变成服务,供他人调用)
- 原理:RPC远程服务调用。SOA服务治理,Reactor模型通信框架:tcp长连接
- 角色:provider(服务提供者),consumer(调用服务的消费者),registry(注册中心),monitor(统计服务调用时间、次数的监控中心),container服务运行容器
- 关系:
-
- container负责启动、加载、运行provider
- provider启动时,向registry注册提供的服务
- consumer启动时,向registry订阅所需的服务
- registry返回provider的地址列表给consumer,如果有变更,registry将基于长连接推送变更数据给consumer
- consumer从provider的地址列表中,基于软负载均衡算法,选一台provider调用,调用失败选另一台。
- provider和consumer,在内存累计调用次数、时间定时每分钟发送统计数据到monitor
以上是dubbo和zookeeper的理论概念,实践可参考我的github上面的两个小例子。
项目描述:两个项目分别是生产者项目和消费者项目,为了省事用springboot搭建,注意运行时可以把生产者项目打包到本地仓库,方便消费者项目的调用。