先认识几个概念:
1、分布式架构
分布:在一定的范围内散布开;反义词:集中;
集中式架构:就是把所有的程序、功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(单体架构、单体服务、单体应用)。
直白一点:就是只有一个项目,只有一个war;
分布式架构:就是把所有的程序、功能、模块拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作共同对外提供服务。
直白一点:就是有很多项目,有很多war包,这些项目相互协作完成需要的功能,不是一个war能完成的,一个war包完成不了;
问题:集群 和 分布式 有什么区别?
集群:就是将相同的程序、功能,部署在两台或多台服务器上,这些服务器对外提供的功能是完全一样的,集群是通过不断横向扩展增加服务器的方式,以提高服务的能力。
分布式:就是将两个或多个程序、功能分别运行在两台或多台主机服务器上,这些服务器对外提供的功能并不一样,它们通过相互协作最终完成某一个服务或功能。
简单地来说,如果两台服务器部署的程序完全一样是集群,不一样就是分布式。
分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的。
分布式架构要解决那些问题?
分布式系统设计的本质就是:如何合理地将一个系统拆分为多个子系统部署到多台不同服务器上。因此需要解决如下几个问题:
1、如何合理的拆分系统;
2、拆分后的各个子系统之间如何通信;
3、如何适应不断增长的业务需求,使其具有良好的可扩展性;
4、如何保证子系统的可靠性和数据的最终一致性;
所以分布式架构带来了很大的复杂性,各个环节就出现了很多开源技术解决方案,进行分布式架构就需要使用很多技术;
1.认识Zookeeper
ZooKeeper是一个分布式的开放源码的分布式应用程序协调服务,也是一个服务器,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件,在分布式领域使用广泛。
Zookeeper能做什么?
配置管理:在上面存项目的配置信息;
命名服务:服务名与IP的映射存在上面;
分布式锁:多个并发访问的协调;
集群管理:服务的宕机感知与处理;
2.安装Zookeeper
1官网:http://zookeeper.apache.org/
2.下载:http://archive.apache.org/dist/zookeeper/
3安装:直接解压缩即可,tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local
4配置:
需要配置Java运行环境,Zookeeper的运行需要机器具备Java运行环境;
在zookeeper的conf目录下,将zoo_sample.cfg改名为zoo.cfg,
cp zoo_sample.cfg zoo.cfg
zookeeper启动时会读取该文件作为默认配置文件;
5配置文件详解
tickTime:Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime时间就会发送一个心跳,tickTime以毫秒为单位
initLimit:集群中的follower服务器与leader服务器之间初始连接时能容忍的最多心跳数(tickTime的数量)
syncLimit:集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
dataDir:存储zookeeper的快照文件、pid文件,默认为/tmp/zookeeper,建议在zookeeper安装目录下创建data目录,将dataDir配置改为/usr/local/zookeeper-3.4.14/data
clientPort:客户端连接zookeeper的端口,即zookeeper对外的服务端口,默认为2181;
6启动(切换到安装目录的bin目录下):./zkServer.sh start
7关闭(切换到安装目录的bin目录下):./zkServer.sh stop
查看ZooKeeper的状态: ./zkServer.sh status
常用的ZooKeeper用法:
./zkServer.sh {start|start-foreground|stop|restart|status|print-cmd}