zookeeper的架构及应用场景(zookeeper类似的框架是什么)

技术zookeeper框架是怎样的呢zookeeper框架是怎样的呢,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先一句话概括下zookeeper:zook

动物园管理员框架是什么样的?我相信很多没有经验的人对此无能为力。为此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。

总之,zookeeper:zookeeper是目前使用最广泛的分布式组件。它的功能和责任是单一的,但却是非常重要的。

zookeeper到底是什么?(技术文)

1)zookeeper实际上是yahoo为分布式系统中的一致性处理而开发的框架。

2)背景:一开始是Hadoop研发的副产品。由于分布式系统中一致性处理的困难,其他分布式系统不需要重复制作轮子,因此zookeeper被广泛应用于后续的分布式系统中。因此,zookeeper在大多数分布式系统中得到了广泛的应用,以至于zookeeper成为了各种分布式系统的基本组件,其重要性可想而知。(以此类推,之前研究过的netty是一个优秀的套接字网络编程包和通信组件框架。不了解netty的可以先收藏这篇文章,然后花五分钟研究一下。姑且说Netty很简单,其实是一个Jar包,作为通讯组件使用)

3)具体应用场景:著名的hadoop、kafka、dubbo都是基于zookeeper的。

4)好处:保证分布式环境下数据的最终一致性,这是zookeeper可以解决的问题。

5)一致性上面已经提到很多次了,那么到底什么是一致性呢?让我们添加这个概念:

所谓的一致性,其实就是围绕着“看”展开的。谁能看到?你能看见吗?你什么时候看到的?举个例子:淘宝后端卖家,把一个大促销商品放在后端货架上,通过服务器A提交到主数据库,假设提交后,用户会立即通过应用服务器B从数据库中查询该商品,会出现卖家更新成功,但买家看不到的现象。一段时间后,主数据库的数据同步到从数据库,这样买家就可以找到它。(真正的技术文本)

假设在卖家更新成功后,买家可以立即看到卖家的更新,称为强一致性;

如果卖家更新成功后,买家看不到卖家更新的内容,称为弱一致性;

卖家更新成功后,买家在一段时间后终于可以看到卖家的更新,这叫做最终一致性。

zookeeper框架是怎样的呢

6)添加一些解决一致性问题的常用方法:

查询重试补偿。对于分布式应用中的不确定情况,首先使用查询接口查询当前状态,如果当前状态不一致,则使用补偿接口重试状态,或者使用回滚接口回滚业务。典型场景比如银行和支付宝的互动。支付宝向银行发送转账请求。如果一直没有收到回复,可以通过银行的查询界面查看交易状态。如果交易对手没有收到交易,将通过补偿方式推送。

定时任务推送。对于以上情况,有可能一推不行,所以需要两三推。毫无疑问,支付宝中的初始掉线率非常高,通过预定任务的持续推送,成功率有所提升。

TCC .尝试-确认-取消.实际上,它是一个两阶段协议,第二阶段可以实现提交操作或反向操作。

动物园管理员能做什么?如前所述,hadoop、kafka和dubbo都是基于zookeeper构建的。在这里,我将与杜博详细阐述动物园管理员。(甄珍技术文本)

作为业内知名的分布式SOA框架,dubbo的主要服务注册发现功能由zookeeper提供。

对于一个服务框架来说,注册中心是其核心的核心。虽然暂时挂机不会对整个服务造成问题,但一旦挂机,整体风险会很高。考虑到一般情况,当注册中心为单机时,其实现非常容易。所有的机器都起来为它注册服务,所有的呼叫者都与它保持长时间的连接。一旦服务改变,通过长连接通知呼叫者。但是,当服务集群规模扩大时,就不简单了,单机连接数有限,容易出现故障。

作为一个稳定的面向服务的框架,dubbo可以选择并推荐zookeeper作为注册中心。在底层,zookeeper常用的客户端zkclient和馆长被打包到ZookeeperClient中。

当服务提供者服务启动时,向zookeeper注册一个节点;

服务消费者订阅其父节点的变化,如启动和停止,可以通过节点创建和删除来获知,被叫方掉线等异常情况也可以通过临时节点会话断开的自动删除来获知;

同时,消费者也会把自己订阅的服务放到zookeeper通过创建节点。

然后我们可以得到映射关系,比如谁提供服务,谁订阅谁提供的服务。基于这种关系,我们可以很容易地了解整个系统。

zookeeper的基本数据模型(技术好文):

总之,它类似于Linux文件系统的节点模型。

//cache.yisu.com/upload/information/20210521/375/502198.jpg" alt="zookeeper框架是怎样的呢">

其节点有如下有趣而又重要的特性:

  1. 同一时刻多台机器创建同一个节点,只有一个会争抢成功。利用这个特性可以做分布式锁。

  2. 临时节点的生命周期与会话一致,会话关闭则临时节点删除。这个特性经常用来做心跳,动态监控,负载等动作。

  3. 顺序节点保证节点名全局***。这个特性可以用来生成分布式环境下的全局自增长id。

通过zookeeper提供的原语服务,可以对zookeeper能做的事情有个精确和直观的认识。

zookeeper提供的原语服务:

  1. 创建节点

  2. 删除节点

  3. 更新节点

  4. 获取节点信息

  5. 权限控制

  6. 事件监听

实际上,就是对节点的增删查改加上权限控制与事件监听,但是通过对这些原语的组合以及不同场景的使用,可以实现很多用法。

  1. 数据发布订阅。即注册中心,见上面dubbo用法。主要通过对节点管理做到发布以及事件监听做到订阅。

  2. 负载均衡。见上面kafka用法。

  3. 命名服务。zookeeper的节点结构天然支持命名服务,即把信息集中存储,并以树状管理,方便统一查阅。

  4. 分布式协调通知。协调通知实际上与发布订阅类似,由于引入的第三方的zookeeper,实际上对很多种协调通知做了解耦。

  5. 集群管理与master选举。通过上面的第二点特性,可以轻易得知集群机器存活状况,从而轻松管理集群;通过上面***点特性,可以做出master争抢。

  6. 分布式锁。实际上就是***点特性的应用。

  7. 分布式队列。实际上就是第三点特性的应用。

  8. 分布式的并发等待。类似于多线程的join问题,主任务的执行依赖于其他子任务全部执行完毕,在单机多线程里可以用join,但是分布式环境下如何实现呢。利用zookeeper,可以创建一个主任务节点,旗下子任务一旦执行完毕,则在主任务节点下挂一个子任务节点,等节点数量足够,则认为主任务可以开始执行。

可以发现,所有的原语就是zookeeper的基础,而其他的用法总结无非是将原语放到不同场景下的归类罢了。

看完上述内容,你们掌握zookeeper框架是怎样的呢的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157336.html

(0)

相关推荐

  • Python怎样爬取某平台短视频

    技术Python怎样爬取某平台短视频本篇文章为大家展示了Python怎样爬取某平台短视频,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。基本开发环境Python 3.6Pychar

    攻略 2021年10月26日
  • 如何构建MongoDB RepSet +Consul高可用切换系统

    技术如何构建MongoDB RepSet +Consul高可用切换系统小编给大家分享一下如何构建MongoDB RepSet +Consul高可用切换系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望

    攻略 2021年11月24日
  • 如何使用GAN拯救你的低分辨率老照片

    技术如何使用GAN拯救你的低分辨率老照片如何使用GAN拯救你的低分辨率老照片,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1 项目背景了解GAN的

    攻略 2021年10月27日
  • KEGG Glycan 数据库的原理是什么

    技术KEGG Glycan 数据库的原理是什么这篇文章将为大家详细讲解有关KEGG Glycan 数据库的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。复合糖作

    攻略 2021年12月2日
  • 北风卷地白草折,北风卷地白草折打一生肖

    技术北风卷地白草折,北风卷地白草折打一生肖这个生肖是马北风卷地白草折。马在动物分类学中分类为:脊椎动物亚门(Vertebrata)、哺乳纲(Mammalia)、奇蹄目(Perissodactyla)、马科(Equidae

    生活 2021年10月30日
  • Visual Studio 2005安装技巧有哪些

    技术Visual Studio 2005安装技巧有哪些这篇文章主要介绍了Visual Studio 2005安装技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家

    攻略 2021年11月25日