zookeeper 总览,我们为什么要使用zookeeper?

一:Zookeeper简介-分布式应用程序的分布式协调服务

ZooKeeper是一个为分布式应用提供的分布式、开源的协调服务。它公开了一组简单的原语集,分布式应用程序可以根据这些原语集来实现用于同步、配置维护以及组和命名的更高级别的服务。它被设计为易于编程,并使用了文件系统中常见的目录树结构样式的数据模型。它在Java中运行,并且有针对Java和C的绑定。

协调各种服务是出了名的难搞,它们特别容易出现竞态条件和死锁等错误。ZooKeeper背后的动机是减轻分布式应用程序从零开始实现协调服务的责任。

二:基于Zookeeper实现功能

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、集群服务等。我们下面通过微服务中我们会遇到什么问题,使用zookeeper怎么去解决这些疼点,更加便于我们知道为什么要用这个东西,什么情况下可以使用。

1:【配置维护】分布式服务都是在不同的机器上面部署很多服务,比如我们有9台服务器,我们修改了redis的密码,那么9台服务器依次都需要修改配置文件,服务器的数量越多,意味着工作量也越大。

解决方案:Zookeeper提供了一种集中管理配置的方法,我们在这个集中的地方修改了配置,其他的服务监听到配置发生了变更,会获取最新的配置。这样就省去手动拷贝配置了,还保证了可靠和一致性。 

                                    

2:【域名服务】最开始的时候,我们2-3台机子之间调用都是用 ip 来调用对应的服务,后面随着用户越来越多,服务器也随之增加,此时使用ip去调用,看着ip一头雾水,我们需要给不同的服务器或者模块起一个别名或服务名,方便我们进行管理。

解决方案:Zookeeper 给我们提供了类似于域名(名称)与ip之间对应关系,域名(名称)容易记住;通过域名(名称)来获取资源或服务的地址,提供者等信息。

3:【分布式同步】分布式架构出现后,越来越多的分布式系统会面临数据一致性的问题;多个服务对同一个数据进行增,删,改,查。怎么去保证数据最终的一致性?

解决方案:zookeeper 提供了分布式一致性;

  1. 顺序一致性,从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。
  2. 原子性,所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,即整个集群要么都成功应用了某个事务,要么都没有应用。
  3. 单一视图,无论客户端连接的是哪个Zookeeper服务器,其看到的服务端数据模型都是一致的。
  4. 可靠性,一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直被保留,除非有另一个事务对其进行了变更。
  5. 实时性,Zookeeper保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。

4:【集群服务】集群是服务高可用的必要手段,当主节点(master)挂掉了,推从那一个从节点(slave)为主节点;某些节点挂掉不能提供服务,怎么进行下架处理;

解决方案:集群管理无在乎两点:是否有机器退出和加入、选举master。

对于第一点,所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道:它上船了。

新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount又有了,对于第二点,我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。

其实ZooKeeper还提供很多功能,需要我们一一的探索,用到实际的工作中。在实际的工作中发现问题,解决问题,可能对于一个东西的理解程度更高,印象也更深刻。好了,目前对于Zookeeper有了一些了解,后面开始实际的操作它了。

https://zookeeper.apache.org/doc/r3.6.1/zookeeperOver.html】 zooKeeper 总览

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小小星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值