java架构师-使用Zookeeper有什么优势
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java架构师-使用Zookeeper有什么优势,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4137字,纯文字阅读大概需要6分钟。
内容图文
![java架构师-使用Zookeeper有什么优势](/upload/InfoBanner/zyjiaocheng/623/716cf4e143a4441b8c621f4c21608fee.jpg)
在Zookeeper的官网上有这么一句话:
ZooKeeperisacentralizedserviceformaintainingconfigurationinformation,naming,providingdistributedsynchronization,andprovidinggroupservices。
这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。
配置管理
除了我们应用程序中的代码外,还有各种配置。如数据库连接等等。通常,我们使用配置文件,并将这些配置文件引入代码中。但是,当我们只有一个配置,只有一台服务器,并且我们不经常修改它时,使用配置文件是一个好习惯,但是如果我们配置很多,那么很多服务器都需要这种配置,并且它可能是动态的否则,使用配置文件不是一个好主意。
这个时候往往需要寻找一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更。比如我们可以把配置放在数据库里,然后所有需要配置的服务都去这个数据库读取配置。但是,因为很多服务的正常运行都非常依赖这个配置,所以需要这个集中提供配置服务的服务具备很高的可靠性。一般我们可以用一个集群来提供这个配置服务,但是用集群提升可靠性,那如何保证配置在集群中的一致性呢?这个时候就需要使用一种实现了一致性协议的服务了。
Zookeeper就是这种服务,它使用Zab这种一致性协议来提供一致性。现在有很多开源项目使用Zookeeper来维护配置,比如在HBase中,客户端就是连接一个Zookeeper,获得必要的HBase集群的配置信息,然后才可以进一步操作。还有在开源的消息队列Kafka中,也使用Zookeeper来维护broker的信息。
在Alibaba开源的SOA框架Dubbo中也广泛的使用Zookeeper管理一些配置来实现服务治理。
名字服务
名称服务很容易理解。例如,为了通过网络访问系统,我们需要知道另一方的IP地址,但是该IP地址对人们非常不友好。这时,我们需要使用域名进行访问。但是计算机不能是另一个域名。怎么做?
如果我们在每台机器上都有一个域名到IP地址的映射,这可以解决部分问题,但是如果对应于域名的IP发生变化该怎么办?所以我们有DNS。我们只需要访问一个知名点,它将告诉您该域名对应的IP。
在我们的应用程序中也存在许多此类问题,尤其是当我们的服务特别大时,如果我们将服务的地址保存在本地,这将非常不便,但是如果我们只需要访问知名的访问点,这是一个统一的入口,因此维护起来会容易得多。
分布式锁
实际上,在第一篇文章中已经将Zookeeper引入为分布式协调服务。这样,我们可以使用Zookeeper来协调多个分布式进程之间的活动。例如,在分布式环境中,为了提高可靠性,我们在群集中的每台服务器上部署了相同的服务。
但是,如果集群中的每个服务器都执行一项操作,则必须将它们彼此协调,并且编程将非常复杂。如果我们仅允许一项服务运行,那就只有一点。通常存在另一种使用分布式锁的方法,以便在某个时间仅允许一个服务运行。当此服务失败时,锁将被释放,并立即故障转移到另一个服务。
这是在许多分布式系统中完成的。此设计有一个更好的名称,称为“领导者选举”(leaderElection)。例如,HBaseMaster使用此机制。但是应该注意,分布式锁和同一进程中的锁之间仍然存在差异,因此,与在同一进程中使用锁相比,应更谨慎地使用它们。
集群管理
在分布式群集中,由于各种原因(例如硬件故障,软件故障和网络问题),某些节点将进入和退出。新节点加入,旧节点离开集群。这时,群集中的其他计算机需要感知此更改,然后根据此更改做出相应的决策。
例如,我们是一个分布式存储系统。有一个中央控制节点负责存储分配。当出现新的存储时,我们需要根据集群的当前状态分配存储节点。这时,我们需要动态地感知集群的当前状态。
同样,例如,在分布式SOA体系结构中,服务由群集提供。消费者访问某种服务时,他们需要采用某种机制来发现哪些节点可以提供该服务(也称为服务)。例如,发现阿里巴巴的开源SOA框架Dubbo使用Zookeeper作为服务发现的基础机制。开源的Kafka队列将Zookeeper用作Cosnumer的在线和离线管理。
后记
在这篇文章中,列出了一些Zookeeper可以提供的服务,并给出了一些开源系统里面的实例。后面我们从Zookeeper的安装配置开始,并用示例进一步介绍Zookeeper如何使用。
如果你想了解更多关于java架构师的专业知识,可以一起交流:11604这里面都是同行05674,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
内容总结
以上是互联网集市为您收集整理的java架构师-使用Zookeeper有什么优势全部内容,希望文章能够帮你解决java架构师-使用Zookeeper有什么优势所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。