一、服务注册中心介绍
分布式服务框架部署在多台不同的机器上,例如服务提供者在集群A,服务调用者在集群B,那么B在调用A的服务的过程中,集群A的机器需要和集群B的机器进行通信。
抠张图看看
在上图中,有这么几个问题需要解决:
①集群A的服务调用者如何发现集群B的服务提供者
②集群A的服务调用者如何选择集群B中的某一台服务提供者机器发起调用
③集群B的服务提供者机器下线之后,集群A中调用者如何感知到这台机器的下线,不在对已下线的机器发起调用
④集群B提供的某个服务如何获知集群A中那些机器正在消费该服务
以上问题将通过服务注册中心来解决,采用服务注册中心来实时存储更新服务提供者信息及该服务的实时调用者信息
抠张图
①在服务启动的时候,将服务提供者信息主动上报到服务注册中心进行服务注册
②服务调用者启动的时候,将服务提供者信息从注册中心下拉到服务调用者机器本地缓存,服务调用者从本地缓存的服务提供者列表中,基于某种负载均衡策略选择一台服务提供者发起远程调用。
③服务注册中心能够感知服务提供者集群中某一台机器下线,将该机器服务提供者信息从注册中心删除,并且通知服务调用者集群中的每一台机器,是的服务调用者不在调用该机器。
服务注册中心有下面几个优点:
①软负载及透明化路由:服务提供者和服务调用者之间相互解耦,服务调用者不需要硬编码服务提供者地址
②服务动态发现及可伸缩能力:服务提供者机器增减能被服务调用者通过注册中心动态感知,而且通过增减机器可以实现服务的弹性伸缩
③通过注册中心可以动态的监控服务运行质量及服务依赖,为服务提供服务治理能力。
二、Zookeeper介绍
Apache Zookeeper是由雅虎开发并开源的分布式协调服务,现已成为Apache顶级项目之一。Zookeeper提供了统一命名服务、配置管理、分布式锁等分布式基础服务。
三、部署Zookeeper
Zookeeper有三种部署方式:单机模式、集群模式、伪集群模式
1、单机模式
单机模式就是讲Zookeeper部署在一台机器上,使用单独的一台机器来提供Zookeeper服务。
部署具体步骤如下:
a、去官网下载安装包,然后解压
b、进入conf目录,创建zoo.cfg文件,或者将已经存在的zoo_sample.cfg重命名为zoo.cfg,内容配置如下
c、启动服务。进入bin目录,运行zkServer.cmd 即可
2、集群模式
比如我们在三台Linux机器上构建Zookeeper集群,具体步骤如下:
a、每个机器上安装zookeeper
b、配置zoo.cfg文件,具体配置如下
c、配置myid文件,在dataDir文件夹下,创建一个myid文件,文件第一行写上与zoo.cfg中server.id=host:port:port当前机器对应的server.id配置中的机器编号,比如机器IPA,myid的内容为1
3、伪集群模式
伪集群模式实际上是使用一台机器以集群的模式对外提供zookeeper服务。伪集群模式与集群模式的不同点在于zoo.cfg的配置:
如图