分布式核心组件:Zookeeper有什么用?
本文是什么是Zookeeper?的笔记,从使用者的角度描述了Zookeeper有什么用处,至于它内部是如何工作
解决在线服务列表同步问题
现在公司的IT系统早已经从单机转向了分布式,然而分布式系统带来了很多的问题。比如说
现在公司开发了一个RPC框架来给各组开发人员使用,为了支持高并发,OrderService部署了4份,也就意味着每个客户端保存了一份服务提供者的列表,但是这个列表是在配置文件中写死了的,意味着如果某台服务器down了,客户端并不知道,依然会尝试访问。
这样客户端和服务提供者是紧耦合,要解决这个问题,可以增加一个中间层。
image.png
RPC指的是远程过程调用,就是部署在服务器A的应用要调用服务器B上的函数,由于不在一个内存空间,所以需要使用网络来表达怎么调用以及要调用的内容。RPC就是要像调用本地的函数一样去调远程函数。
那么如何设计这个中间层呢?
可以使用一个注册中心,它保存了能提供的服务的名称,以及URL。首先这些服务会在注册中心进行注册,当客户端来查询的时候,只需要给出名称,注册中心就会给出一个URL。
这个注册中心类似于一个上帝的角色,它可以了解全局有那些服务提供者,以及这些提供者的状态。
所有的客户端在访问服务前,都需要向这个注册中心进行询问,以获得最新的地址。
微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站。(关注公众号后回复”Java“即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源)