前言
本篇文章只能浅显的了解zookeeper,并不能了解zookeeper中相关问题的解决以及zookeeper的原理.
随着业务逻辑的复杂以及软件访问用户的增多,一个tomcat项目中的所有CRUD都运行在一台服务器上,已经有些不切实际,在这个时候就带来了集群和分布式的问题.而当多个服务器,所带来的的一系列问题都是我们需要考虑的,比如说分布式锁的问题,你在Java中用synchronize加锁,也只是在serviceImpl中对某一项加锁,但在RPC环境中,多个服务器都有该服务,此时锁的问题就变得尤为重要.
另外的,当公司的多个服务器中有一台服务器宕机的时候,势必会造成其他服务器的负载增加,如果因为这种增加导致服务器崩溃,那么所有的服务器就都会瘫痪了,就比如说那首《说好不哭》,多少程序员因为一首歌泪流满面...
首先介绍一下集群和分布式的区别:
集群和分布式的区别
分布式:一个业务分拆多个子业务,部署在不同的服务器上.就比方说在导航系统中的获取当前位置,就可以用分布式做,把地图的服务放在其他服务器上,不和其他简单的业务部署在同一个服务器上.(企业内部的maven仓库等,通过分布式可以加快项目的进度)
集群:同一个业务,部署在多个服务器上.
zookeeper的意义
实现一个简单的RPC很简单,就像tomcat一样,一直监听某一个端口,接收其他服务器发送来的http请求,然后做出相应的处理就OK.但是这就会导致如果多个调用互相穿插,就会变得十分麻烦,就像下图一样: