Zookeeper概述
1.Zookeeper介绍
Zookeeper是分布式应用程序的协调服务框架,是Hadoop的重要组件。ZK要解决的问题:
1.分布式环境下的数据一致性。
2.分布式环境下的统一命名服务
3.分布式环境下的配置管理
4.分布式环境下的分布式锁
5.集群管理问题
2.分布式概念(集群)
分布式的思想就是人多干活快,即用多台机器同时处理一个任务。分布式的编程和单机的编程 思想是不同的,随之也带来新的问题和挑战。
3.分布式编程容易出现的问题
1.死锁:指多个进程相互等待,互不相让,导致所有进程无限期等待。
2.活锁:在程序里,由于某些条件的发生碰撞,导致重新执行,再碰撞=》再执 行,如此循环往复,就形成了活锁。活锁的危害:多个线程争用一个资源,但是没有任何一个 线程能拿到这个资源。(死锁是有一个线程拿到资源,但相互等待互不释放造成死锁),活锁 是死锁的变种。补充:活锁更深层次的危害,很耗尽Cpu资源(在做无意义的调度)
3.需要考虑集群的管理问题,需要有一套机制来检测到集群里节点的状态变化。(可以用心跳 机制来做,但zk不是用心跳机制来做的)
4.如果用一台机器做集群管理,存在单点故障问题,所以针对集群管理,也需要形成一个集群
5.管理集群里Leader的选举问题(要根据一定的算法和规则来选举),包括要考虑Leader挂掉 之后,如何从剩余的follower里选出Leader
6.分布式锁的实现,用之前学的重入锁,同步代码块是做不了的