范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

微服务下ZK原理及实战

  1. Zookeeper深入剖析1.1 ZK特性与集群架构设计
  ZK主要分为三种角色:Leader(领导者):一个Zookeeper集群同一时间只会有一个实际工作的Leader,它会发起并维护与各Follwer及Observer间的心跳。所有的写操作必须要通过Leader完成再由Leader将写操作广播给其它服务器。Follower(跟随者):一个Zookeeper集群可能同时存在多个Follower,它会响应Leader的心跳。Follower可以处理客户端的读请求,但写请求转发给Leader处理,并且负责参与新 leader的选举、响应 leader 的提议。Observer(观察者):无投票权,不参加选举, 也不响应提议。Observer不需要将事务持久化到磁盘,如果重启需要从 leader 重新同步整个名字空间。
  ZK特性:顺序一致性实时性原子性1.2 ZK数据结构与存储1.2.1 ZK数据结构模型
  节点存储容量不能超过1M。
  ZNode节点类型:
  Znode的分为四类:持久节点(persistent node):节点会被持久化处理,执行命令: create /apps/app1 "order" 。临时节点(ephemeral node):客户端断开连接后,ZooKeeper会自动删除临时节点, 执行命令:create -e /apps/app1 "order" 。顺序节点(sequential node):每次创建顺序节点时,ZooKeeper都会在路径后面自动添加上10位的数字,从1开始,最大值为2147483647 (2^32-1),每个顺序节点都有一个单独的计数器,并且单调递增的,由 leader 实例维护,执行命令: create -s /apps/app1 "order" 。临时顺序节点(EPHEMERAL_SEQUENTIAL):基本特性与临时节点一致,创建节点的过程中,zookeeper会在其名字后自动追加一个单调增长的数字后缀,作为新的节点名。
  ZNode节点属性:
  1.2.2 ZK数据存储方式
  数据存储方式分为三类:
  1. 内存数据
  内存数据结构分为三类:DataTree: 内存数据存储的核心DataNode: 数据存储的最小单元ZKDatabase: ZK的内存数据库
  2. 事务日志
  事务日志处理流程:
  事务日志文件内容示例:
  查看日志命令:
  产生的日志内容:
  3. 数据快照(snapshot)
  数据快照用来记录Zookeeper服务器上某一时刻的全量内存数据内容,并将其写入指定的磁盘文件中。Zookeeper在进行若干次事务日志记录后,将内存数据库的全量数据Dump到本地文件中,这个就是数据快照
  快照查看命令:
  其处理步骤如下:检查是否需要进行数据快照,每一次事务日志记录之后,Zookeeper都会检测是否需要进行数据快照,考虑到数据快照对于Zookeeper机器的影响,需要尽量避免ZK集群中的所有机器在同一时刻进行数据快照。采用过半随机策略进行数据快照操作。切换事务日志文件,表示当前的事务日志已经写满,需要重新创建一个新的事务日志。创建数据快照的异步线程,创建单独的异步线程来进行数据快照以避免影响Zookeeper主线程的运行状态。获取全量数据和会话信息,从ZKDatabase数据库中获取到DataTree和会话信息。生成快照数据文件名,ZK根据当前已经提交的最大ZXID来生成数据快照文件名。数据序列化,首先序列化文件头信息,然后再对会话信息和DataTree分别进行序列化,同时生成一个Checksum校验文件,一并写入快照文件中。1.3 ZK的应用场景1.3.1 服务注册发现
  分布式服务架构中,服务的注册与发现是最核心的基础服务之一,注册中心可以看做是分布式服务架构的通信中心。
  Zookeeper集群,通过监听机制,实现服务信息的订阅:
  Zookeeper是采用ZAB协议保证了数据的强一致性。ZAB协议的实现原理是怎样?ZK是如何实现选举, Paxos算法又是如何运用的?1.3.2 分布式锁
  分布式锁的实现需要注意的:
  同步访问共享资源。锁的可重入性:递归调用不会被阻塞、不会发生死锁(synchronized methodA(), ReentrantLock)锁的超时:避免死锁、死循环等意外情况锁的阻塞:保证原子性等 ->下单(范围广, 包含商品, 账户资金, 下单信息生成,将粒度细化。)锁的特性支持:阻塞锁、可重入锁、公平锁、联锁、信号量、读写锁
  分布式锁的使用需要注意:分布式锁的开销, 能不能用就不用加锁的粒度加锁的方式(并发量大, 缓存做实现)
  基于ZK的分布式锁实现:
  整体思想:每个客户端发起加锁时,生成一个唯一的临时有序节点。 如何判断锁是否创建呢?只需要判断是否存在临时节点(若存在, 则根据序号判断)。
  ZK的分布式锁的优缺点
  优点: 可以有效的解决单点问题,不可重入问题,非阻塞问题以及锁无法释放的问题。
  缺点: 性能上不如基于缓存实现的分布式锁。ZK的强一致性, 一个事务的操作在所有节点都同步完成。
  ZK是如何实现分布式锁?排它锁定义: 如果某个事务(Transaction)对数据对象(Object)加上了排他锁,那么在整个加锁期间,只允许该事务对数据进行读取或更新操作,其他任何事务不能对该数据对象做任何操作,直到该事务释放了排他锁。排它锁实现流程:Zookeeper 的强一致性特性,能够很好地保证在分布式高并发情况下节点的创建一定能够保证全局唯一性,即Zookeeper将会保证客户端无法重复创建一个已经存在的数据节点。可以利用Zookeeper这个特性,实现排他锁。
  实现步骤:定义锁:通过Zookeeper上的数据节点来表示一个锁获取锁:客户端通过调用 create 方法创建锁的临时节点,创建成功的客户端代表获取锁,没有获得锁的客户端在该节点上注册Watcher监听,以便实时获取lock节点的变更情况释放锁符合以下两种情况都可以让锁释放当前获得锁的客户端发生宕机或异常,那么Zookeeper上这个临时节点就会被删除正常执行完业务逻辑,客户端主动删除自己创建的临时节点
  共享锁
  定义: 如果事务Transaction对数据对象Object加上了共享锁,在不是写操作事务下, 其他事务仍可以对
  Object进行读取操作。
  共享锁实现流程:
  1) 定义锁
  2) 获取锁
  如果是读请求,则创建 /lockpath/[hostname]-R-序号 节点,如果是写请求则创建 /lockpath/[hostname]-W-序号 节点。
  3) 读写顺序判断处理创建完节点后,获取 /lockpath 节点下的所有子节点,并对下面所有注册的子节点变更进行Watcher监听;确定自己的节点序号在所有子节点中的顺序, 针对顺序的大小, 处理读写请求流程;对于读请求:1. 如果没有比自己序号更小的子节点,或者比自己序号小的子节点都是读请求,那么表明可以成功获取到了共享锁;2. 如果有比自己序号小的子节点有写请求,那么先进行等待 。对于写请求,如果存在比自己更小的节点,那么进行等待;接收到Watcher通知后, 再次处理上面的读写请求流程。
  4) 释放锁. 与排它锁逻辑一致。
  基于ZK的共享锁实现流程:
  共享锁产生的羊群效应解决方案
  羊群效应该如何解决呢?其实只需要改进Watch的监听处理流程:
  1.3.3 利用ZK实现公平选举
  ZK是如何实现集群选举呢?
  1. 基于ZK的Watch机制,ZK的所有节点的读取操作,都可以附带一个Watch,一旦数据有变化,Watch就会被触发,通知客户端数据发生变动。
  2. 基于ZK实现的分布式锁,这里的锁是指排它锁,任意时刻,最多只有一个进程可以获取锁。
  什么是公平选举?
  公平选举是要遵循公平性,大家都遵循规则,依照请求先后顺序,参与选举。
  选举处理流程
  三台节点向ZK集群创建Sequence类型节点,每个节点所创建的序号不一样, 他们会判断自己所创建的节点序号是否为最小,这个与顺序有关, 如果是最小, 则选取为Leader,否则为Follower角色。
  如果Leader出现问题如何处理?
  Leader 所在进程如果意外宕机,其与 ZooKeeper 间的 Session 结束,由于其创建的节点为Ephemeral类型,故该节点会自动被删除。
  Follower角色节点是如何感知的?
  在公平模式下, 每个Follower都会 Watch 序号刚好比自己序号小的节点。在上图中,调用方节点2会Watch节点/Master/Leader1,调用方节点3会Watch节点/Master/Leader2。如果Leader宕机,/Master/Leader1删除,调用方节点2就能得到通知。节点2先判断自己的序号 2 是不是当前最小的序号,在该场景下,其序号为最小,所以节点2成为新的Leader。1.3.4 利用ZK实现非公平选举
  什么是非公平选举?
  非公平选举就是没有遵循选举的公平性,仍然沿用上面的例子: 村子里要选举村长,领导通知大家在明早7点前排队在前十的人就可以参与选举,这个时候有人晚到,但借关系插队排在前面,这个就是非公平选举。
  选举处理流程
  三台调用节点向ZK集群创建Non-sequence节点,但只会有一个调用节点创建成功,谁能够抢占资源在ZK集群创建成功,与顺序无关,则竞选为Leader,其他客户端则创建失败,成为Follower角色。1.4 深入理解Leader选举1.4.1 PAXOS选举算法
  1. Paxos算法概述
  背景:
  主流分布式一致性算法包括Paxos,Raft和ZAB,它们之间有怎样的区别与关系?
  Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整或衍生版。
  什么是Paxos?
  Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,其解决的问题就是在分布式系统中如何就某个值(决议)达成一致。
  Paxos的作用:
  常见的分布式系统中,总会发生机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序)等情况。Paxos 算法是分布式一致性算法用来解决一个分布式系统如何就某个值(决议)达成一致性的问题。
  2. 拜占庭问题
  拜占庭将军问题是一个共识问题:一群将军想要实现某一个目标,必须是全体一致的决定,一致进攻或者一致撤退;但由于叛徒的存在,将军们不知道应该如何达成一致。
  拜占庭问题情形在计算机世界中也会出现,如果三个节点中有一个异常节点,那么最坏情况下两个正常节点之间是无法保证一致性的。那么你之前听说过的 etcd 这样的系统可以保证三个节点有一个宕机的情况下依然可以对外提供一致性服务是为什么呢?因为这类系统并没有考虑拜占庭故障,在他们的假设里故障节点可能会停止服务,可能会超时,但是不会发送异常消息。尽管拜占庭的"幽灵"很难处理,但在实际工作应用中,却并不需要过分去考虑它,因为对于大多数系统来说,内部环境里,硬件故障导致消息错误的概率本身就很低,还要按照拜占庭叛徒的策略来处理故障就更为困难了。
  3. Paxos角色
  Paxos将系统中的角色分为三种:Proposer:提议者,提出提案Proposal(未经批准的决议)信息,它包括提案编号 (Proposal ID) 和提议的值 (Value)。Acceptor:决策者,参与决策,回应Proposers的提案。收到Proposal后可以接受提案,若Proposal获得多数Acceptors的接受,则标识该Proposal为批准。Learner:最终决策学习者,不参与决策,从Proposers/Acceptors学习最新达成一致的决议(Value)。在具体的实现中,一个进程可能同时充当多种角色。比如一个进程可能既是Proposer又是Acceptor或
  Learner。Proposer负责提出提案,Acceptor负责对提案作出裁决(accept与否),Learner负责学习提案结果,Acceptor告诉Learner哪个value被选定,Learner则无条件认为相应的value被选定。
  为了避免单点故障,会有一个Acceptor集合群,Proposer向Acceptor集合群发送提案,Acceptor集合群中,只有一半以上的成员同意了这个提案(Proposal),就认为该提案被接受选定了。1.4.2 选主过程剖析(基于FastLeaderElection算法)
  1. 第一步(初始化投票)
  2. 第二步更新投票信息
  3. 第三步确定集群角色
  1.4.3 FOLLOW重启选举剖析
  如果FOLLOW跟随者节点出现问题重启之后, 是如何实现重新选举?
  第一步:
  第二步:
  1.4.4 LEADER重启选举剖析
  Leader如果重启之后该如何选举?
  第一步:
  第二步:
  第三步:
  第四步:
  1.5 ZK一致性与同步原理1.5.1 CAP定理
  CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partitiontolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。Consistency(一致性): 多个副本节点保持数据的一致性。Availability(可用性): 指系统一直处于可用的状态。Partition Tolerance(分区容错性): 遇到任何网络分区故障, 仍然能够保证对外提供满足一致性和可用性的服务
  ZK为什么不能满足可用性呢?
  集群中网络出现分割的故障,ZK将他们从自己的管理范围内踢出去, 外界就不能访问这个节点.
  ZK在什么情况下是不能保证可用呢?
  ZK在进行leade选举时, 集群都是不可用的状态。选举leader的期间, 持续的时间短的话是数百毫秒, 长的话持续数秒。客户端加入重试机制来做补偿。1.5.2 ZAB协议解析
  ZAB协议概述
  ZAB (Atomic Broadcast Protocol)协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间数据一致性。
  ZAB与PAXOS的联系与区别
  Paxos算法的目的在于设计分布式的一致性状态机系统。
  ZAB协议的设计目的在于分布式的高可用数据主备系统。
  ZAB借鉴了Paxos算法,做了相应的改进,ZAB协议除了遵从Paxos算法中的读阶段和写阶段,还有加入了同步阶段。
  ZAB协议两个过程:
  ZAB 协议主要包括两个过程: 消息广播和崩溃恢复。和三个阶段: 分为Discovery 发现,Synchronization 同步,Broadcast 广播。
  消息广播过程
  Leader 节点接受事务提交,并且将新的 Proposal 请求广播给 Follower 节点,收集各个节点的反馈,决定是否进行 Commit。
  崩溃恢复过程
  如果在同步过程中出现 Leader 节点宕机,会进入崩溃恢复阶段,重新进行 Leader 选举,崩溃恢复阶段还包含数据同步操作,同步集群中最新的数据,保持集群的数据一致性。

PoE供电华为路由H6组网无忧,轻松应对大户型多终端笔者家里属于目前北方比较常见的上下两层翻建房屋,另有院子和南边的厢房设计,两层主建筑大约280平左右。这三年来各类品牌用过的全屋路由也不下89种,无线级联,电力组网,最后又回到有线技嘉向下,ROG向上两系列猛芯电竞笔记本可真香相比技嘉的颓废,老大哥ROG年前年后已经国内多次发布各品类新品,足见对大陆市场的重视。5月11日,新一代幻系列全能本冰刃系列轻薄游戏本再次线上首发,11代intel酷睿强芯,黄老邪关于健康科技产品按摩椅4S店目前所存在问题我之见解图片仅供展示一从客源方面来说A前景分析有十分庞大的试机人群数量,这类人群也有很高的消费潜力质量,如何有效转化客户从试机体验转化为实际消费客户才是目前所要的重点。B问题存在试机人群的影响手机拍照清晰度的之一的OIS,AIS,EIS都是什么原理?在智能手机越来越普及的今天,拍照功能就成了很多人关注的对象,但是双摄三摄四摄等手机是层出不穷,除了像素大家可以直接对比之外,像其中也出现了多种防抖配置,有单独镜头配置的,还有每个镜荣耀Magic3系列手机上市即将1月,大家对其性能差别了解的多吗?首先从型号上来说,主要是分为荣耀Magic3,荣耀Magic3Pro,荣耀Magic3至臻版。除了共同采用的MagicUI5。0系统和6。76英寸的超曲屏,超导6方晶石墨烯超薄VC果不其然,没有亲爹的台积电已经跪在美国的淫威面前台积电近日对外表示,将会在11月8日前向美国政府提交客户资料。台积电还辩解说,该企业长期以来与所有利害相关人员保持着积极的合作并提供支持,以克服全球半导体供应上的挑战。在这个复杂的大吸力更干净石头手持无线吸尘器H7使用体验近期石头手持无线吸尘器H7发布,但值不值买还是要实际体验一番,毕竟目前无线手持吸尘器从几十元到几千元的产品可以说比比皆是。目前无绳手持吸尘器已经是市场主流,戴森的产品是首屈一指的,使用科沃斯地宝X1自洗拖布自集尘,长眼睛能对话的扫拖机器人现在各品牌的扫地机器人升级确实很快,但一般也就是个别细节做得更好一些,真正做到质的提升几乎没有,说白了还是同质化严重。最近笔者使用了一周科沃斯最近新推出的新品地宝X1家族中的DEE揭晓巴掌大苹果抛光布145元,几元纤维布清洁效果更好就是不用一块儿屏幕除尘布敢卖145元,抢钱吗?还别说,买的人还不少。可能这样说会招来一干人等喷,毕竟苹果管它叫做抛光布。笔者一般擦个屏幕就用普通一款儿高纤维布就OK了,有时配眼镜的时候和眼焦距与视角以及透视效果的关系一。镜头视角关于视角这个问题,因为我发现很多初学者甚至没有最基础的器材知识,没有这些知识作为依托,就好比无源之水,无本之木,谈再多一样是稀里糊涂,不明就里。书归正传,我们接下来看看为什么家中有扫地机器人,我还入了小狗T12ProRinse擦地吸尘器?其实我家是有个扫地机器人的,设置好每次的规划,它就在那里默默地工作着,虽然每天都有扫地机器人的清洁,但是只能清洁地面部分,对于其他空间还是需要额外花时间打扫。在每个礼拜休息的时候,
点赞,中国版骨科手术机器人来了沈慧经点科学提起医疗机器人,很多人脑海中浮现的是达芬奇。不过,今天小编要给大家介绍的这个家伙可是拥有纯正的中国血统,而且个人能力丝毫不逊色于达芬奇,它是谁呢?答案揭晓中国人自己研发亚马逊CEO我的手机被人监控,有人坏我名声!大人物纷纷甩锅!据每日邮报报道,当地时间3月30日,亚马逊的CEO贝索斯发表了一份声明,他说自己的手机信息已经泄露,并随时被人监控,自己的情人事件的曝光极有可能就是背后人所做的事情。背后到底是何方工作996,生病ICU葡萄语录言论,是业界生态最原生的反映。游戏葡萄于每周末推出葡萄语录,蠡测业内百态,臧否各色人物,将互联网有触感接地气的一面呈现给诸位读者。1。老板总监宁有种乎?葡萄吐槽这就是不严格遵守公司真牛!中国这款飞机有一项了不起的功能,被坠毁竟然自己返回翼龙无人机早几年的时候,美国国防部就预计,未来将有大部分空战是在无人机之间展开的,而飞行员则可以安然无恙地坐在地面上,这样可以大大减少伤亡率。从目前的发展状况来看,随着技术的不断发超详细MySQL数据库优化前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大单反已成过去式,无反相机大势已成,未来更将因人工智能而爆发在过去的一年里,尼康和佳能都加入到了无反相机的竞争中,并且已经毫无疑问地会在无反相机这条道路上继续发展下去,产品格局也发生了彻底的扭转。我在对这些相机进行了解和测试的过程中,一直在南山必胜客腾讯和老干妈的欠债纠纷,终于迎来了最后的结果大家好,我是猪小小,一位正在头条创业的小白我希望能通过这个平台能结识不同的朋友喜欢我的,右上角点点关注吧!!!如果没有这件事的发生,国内的销售行业可能有你们三个的一席之地。腾讯从来智能家电很耗电吗?山西电网专业人员细解疑惑近年来,随着消费不断升级,人们对家电产品要求更加智能化舒适化,因而智能扫地机器人智能冰箱等智能化的家电产品开始取代一些基础型产品,并广泛地进入居民家中。这些高大上的智能家电,耗电量编码器十问1。什么是编码器?旋转编码器,也称为轴编码器,是一种机电设备,用于将轴的角位置转换为数字或模拟信号。2。差分输出和单端输出有什么区别?单端输出的编码器有一组信号A通道B通道和One共同社日本将管制AI摄像头及人脸识别系统出口共同社网站近日报道称,据有关人士透露,日本政府日前初步决定对利用人工智能(AI)的摄像头和人脸识别系统等尖端技术设备采取新的出口管制措施,日方将就此同美国等国家开展合作。报道称,在iphoneSe3规格再曝A155。4英寸刘海屏,有望支持双卡双待说起iphoneSE系列,这绝对是用户最喜爱的系列之一,它作为入门款iphone机型,价格非常亲民,但性能却一点不含糊。随着iphoneSe2发布近两年后,iphoneSe3也终于