开发者社区 问答 正文

zookeeper的应用场景是什么?

zookeeper的应用场景是什么?

展开
收起
芯在这 2021-12-05 21:28:32 371 分享 版权
1 条回答
写回答
取消 提交回答
  • 1、命名服务/名称服务/namespace管理/名字空间

    模拟实现: znode系统中的任何一节点的寻路路径,有一个唯一的绝对路径

    你把对应的那个名字在zookeeper的znode中创建一个节点,如果能创建成功,证明取名成功

    所有同种类型的名称节点都必须统一的存储在统一目录

    2、配置管理:把一个集群的所有配置都放置在zookeeper进行管理

    原因:由于zookeeper提供了一个非常好的监听机制,能够让监听程序立即感知到数据的变化

    zookeeper的两大核心功能区实现配置管理

    模拟实现:

    1、创建一个节点存储一个值(删除/修改/增加)

    2、添加监听器去监听这个值的对应的事件

    3、监听程序就一直等待着zookeeper发送回来的通知(响应的事件)

    4、监听程序就按照事件对象WatchEvent对象中包含的信息来进行判断,来做不同的业务处理

    5、业务逻辑(当数据发生变化之后重新再查询一次就OK)是独立于zookeeper

    3、锁:分为两大类;

    1)读写锁

    读锁:共享锁 写锁:独占锁 排它锁

    2)时序锁

    利用创建带顺序编号的节点 就能对应的模拟完成

    4、队列:分为两种:

    1)同步队列:一个队列中的所有成员都聚齐时,才能进行某个业务操作

    2)FIFO : 时序锁几乎是一样的实现逻辑

    5、集群管理:分为两种:

    1)主节点的管理:主备之间的竞争问题

    可以创建一个节点代表一个namenode(最好是临时节点)

    只要某个namenode一宕机,那么zookeeper系统中代表这个namenode的对应znode节点就会自动被删除

    zookeeper就能发送通知到监听程序

    如果说其中一个namenode的监听程序监听到当前这个namenode宕机

    那么这个监听程序就会发送通知到另外一个监听程序

    这个监听程序就可以发起一次选举来选举新的active 状态的anemnode

    当前这个监听程序还会负责;

    1、确定之前的那个namenode一定要死亡

    2、确保当前要切成成active状态的namenode一定能切换过来

                          防止脑裂
    

    2)从节点的管理:从节点的 上线管理(创建znode) 和 下线管理(删除一个znode)

    2021-12-05 22:24:01
    赞同 展开评论