当前位置: 首页 > news >正文

自建手机网站如何 在网站上面做推广

自建手机网站,如何 在网站上面做推广,企业公众号开发,iis7如何设置ip做网站本文转发自技术世界#xff0c;原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述#xff0c;Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构… 本文转发自技术世界原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构中每个节点被称为 znode 可按如下两个维度分类 Persist vs. Ephemeral Persist节点一旦被创建便不会意外丢失即使服务器全部重启也依然存在。每个 Persist 节点即可包含数据也可包含子节点Ephemeral节点在创建它的客户端与服务器间的 Session 结束时自动被删除。服务器重启会导致 Session 结束因此 Ephemeral 类型的 znode 此时也会自动删除 Sequence vs. Non-sequence Non-sequence节点多个客户端同时创建同一 Non-sequence 节点时只有一个可创建成功其它均失败。并且创建出的节点名称与创建时指定的节点名完全一样Sequence节点创建出的节点名在指定的名称之后带有10位10进制数的序号。多个客户端创建同一名称的节点时都能创建成功只是序号不同 1.2 Zookeeper语义保证 Zookeeper 简单高效同时提供如下语义保证从而使得我们可以利用这些特性提供复杂的服务。 顺序性 客户端发起的更新会按发送顺序被应用到 Zookeeper 上原子性 更新操作要么成功要么失败不会出现中间状态单一系统镜像 一个客户端无论连接到哪一个服务器都能看到完全一样的系统镜像即完全一样的树形结构。注根据上文《Zookeeper架构及FastLeaderElection机制》介绍的 ZAB 协议写操作并不保证更新被所有的 Follower 立即确认因此通过部分 Follower 读取数据并不能保证读到最新的数据而部分 Follwer 及 Leader 可读到最新数据。如果一定要保证单一系统镜像可在读操作前使用 sync 方法。可靠性 一个更新操作一旦被接受即不会意外丢失除非被其它更新操作覆盖最终一致性 写操作最终而非立即会对客户端可见 1.3 Zookeeper Watch机制 所有对 Zookeeper 的读操作都可附带一个 Watch 。一旦相应的数据有变化该 Watch 即被触发。Watch 有如下特点 主动推送 Watch被触发时由 Zookeeper 服务器主动将更新推送给客户端而不需要客户端轮询。一次性 数据变化时Watch 只会被触发一次。如果客户端想得到后续更新的通知必须要在 Watch 被触发后重新注册一个 Watch。可见性 如果一个客户端在读请求中附带 WatchWatch 被触发的同时再次读取数据客户端在得到 Watch 消息之前肯定不可能看到更新后的数据。换句话说更新通知先于更新结果。顺序性 如果多个更新触发了多个 Watch 那 Watch 被触发的顺序与更新顺序一致。 2、 分布式锁与领导选举关键点 2.1 最多一个获取锁 / 成为Leader 对于分布式锁这里特指排它锁而言任意时刻最多只有一个进程对于单进程内的锁而言是单线程可以获得锁。 对于领导选举而言任意时间最多只有一个成功当选为Leader。否则即出现脑裂Split brain 2.2 锁重入 / 确认自己是Leader 对于分布式锁需要保证获得锁的进程在释放锁之前可再次获得锁即锁的可重入性。 对于领导选举Leader需要能够确认自己已经获得领导权即确认自己是Leader。 2.3 释放锁 / 放弃领导权 锁的获得者应该能够正确释放已经获得的锁并且当获得锁的进程宕机时锁应该自动释放从而使得其它竞争方可以获得该锁从而避免出现死锁的状态。 领导应该可以主动放弃领导权并且当领导所在进程宕机时领导权应该自动释放从而使得其它参与者可重新竞争领导而避免进入无主状态。 2.4 感知锁释放 / 领导权的放弃 当获得锁的一方释放锁时其它对于锁的竞争方需要能够感知到锁的释放并再次尝试获取锁。 原来的Leader放弃领导权时其它参与方应该能够感知该事件并重新发起选举流程。 3、非公平领导选举 从上面几个方面可见分布式锁与领导选举的技术要点非常相似实际上其实现机制也相近。本章就以领导选举为例来说明二者的实现原理分布式锁的实现原理也几乎一致。 3.1 选主过程 假设有三个Zookeeper的客户端如下图所示同时竞争Leader。这三个客户端同时向Zookeeper集群注册Ephemeral且Non-sequence类型的节点路径都为/zkroot/leader工程实践中路径名可自定义。 如上图所示由于是Non-sequence节点这三个客户端只会有一个创建成功其它节点均创建失败。 此时创建成功的客户端即上图中的Client 1即成功竞选为 Leader 。其它客户端即上图中的Client 2和Client 3此时均为 Follower。 3.2 放弃领导权 如果 Leader 打算主动放弃领导权直接删除/zkroot/leader节点即可。 如果 Leader 进程意外宕机其与 Zookeeper 间的 Session 也结束该节点由于是Ephemeral类型的节点因此也会自动被删除。 此时/zkroot/leader节点不复存在对于其它参与竞选的客户端而言之前的 Leader 已经放弃了领导权。 3.3 感知领导权的放弃 由上图可见创建节点失败的节点除了成为 Follower 以外还会向/zkroot/leader注册一个 Watch 一旦 Leader 放弃领导权也即该节点被删除所有的 Follower 会收到通知。 3.4 重新选举 感知到旧 Leader 放弃领导权后所有的 Follower 可以再次发起新一轮的领导选举如下图所示。 从上图中可见 新一轮的领导选举方法与最初的领导选举方法完全一样都是发起节点创建请求创建成功即为 Leader否则为 Follower 且 Follower 会 Watch 该节点新一轮的选举结果无法预测与它们在第一轮选举中的顺序无关。这也是该方案被称为非公平模式的原因 3.5 非公平模式总结 非公平模式实现简单每一轮选举方法都完全一样竞争参与方不多的情况下效率高。每个 Follower 通过 Watch 感知到节点被删除的时间不完全一样只要有一个 Follower 得到通知即发起竞选即可保证当时有新的 Leader 被选出给Zookeeper 集群造成的负载大因此扩展性差。如果有上万个客户端都参与竞选意味着同时会有上万个写请求发送给 Zookeper。如《Zookeeper架构》一文所述Zookeeper 存在单点写的问题写性能不高。同时一旦 Leader 放弃领导权Zookeeper 需要同时通知上万个 Follower负载较大。 4、公平领导选举 4.1 选主过程 如下图所示公平领导选举中各客户端均创建/zkroot/leader节点且其类型为Ephemeral与Sequence。 由于是Sequence类型节点故上图中三个客户端均创建成功只是序号不一样。此时每个客户端都会判断自己创建成功的节点的序号是不是当前最小的。如果是则该客户端为 Leader否则即为 Follower。 在上图中Client 1创建的节点序号为 1 Client 2创建的节点序号为 2Client 3创建的节点序号为3。由于最小序号为 1 且该节点由Client 1创建故Client 1为 Leader 。 4.2 放弃领导权 Leader 如果主动放弃领导权直接删除其创建的节点即可。 如果 Leader 所在进程意外宕机其与 Zookeeper 间的 Session 结束由于其创建的节点为Ephemeral类型故该节点自动被删除。 4.3 感知领导权的放弃 与非公平模式不同每个 Follower 并非都 Watch 由 Leader 创建出来的节点而是 Watch 序号刚好比自己序号小的节点。 在上图中总共有 1、2、3 共三个节点因此Client 2 Watch /zkroot/leader1Client 3 Watch /zkroot/leader2。注序号应该是10位数字而非一位数字这里为了方便以一位数字代替 一旦 Leader 宕机/zkroot/leader1被删除Client 2可得到通知。此时Client 3由于 Watch 的是/zkroot/leader2故不会得到通知。 4.4 重新选举 Client 2得到/zkroot/leader1被删除的通知后不会立即成为新的 Leader 。而是先判断自己的序号 2 是不是当前最小的序号。在该场景下其序号确为最小。因此Client 2成为新的 Leader 。 这里要注意如果在Client 1放弃领导权之前Client 2就宕机了Client 3会收到通知。此时Client 3不会立即成为Leader而是要先判断自己的序号 3 是否为当前最小序号。很显然由于Client 1创建的/zkroot/leader1还在因此Client 3不会成为新的 Leader 并向Client 2序号 2 前面的序号也即 1 创建 Watch。该过程如下图所示。 4.5 公平模式总结 实现相对复杂扩展性好每个客户端都只 Watch 一个节点且每次节点被删除只须通知一个客户端旧 Leader 放弃领导权时其它客户端根据竞选的先后顺序也即节点序号成为新 Leader这也是公平模式的由来延迟相对非公平模式要高因为它必须等待特定节点得到通知才能选出新的 Leader 5、总结 基于 Zookeeper 的领导选举或者分布式锁的实现均基于 Zookeeper 节点的特性及通知机制。充分利用这些特性还可以开发出适用于其它场景的分布式应用。
http://www.huolong8.cn/news/98524/

相关文章:

  • 做网站如何防止被骗建设大学网站费用
  • 罗湖商城网站建设找哪家公司比较安全申请00号注册
  • 网站制作教程下载怎么制作网站模板
  • 网站导航栏有哪些rp网站做多大
  • 广西建设工程招标网学seo哪个培训好
  • 各种大型网站做网站用什么程序
  • seo是一种利用搜索引擎台州seo排名公司
  • 网站友情链接建设可以做免费推广的网站吗
  • 如何做网站推广自己的产品制作网页的代码
  • 网站建设 教学设计网站建设及网络维护合同
  • 用html5做的网站素材济南网站运营
  • 专业的新乡网站建设上海建设资质审批网站
  • 电商网站适合做响应式布局吗做网站的是什么专业
  • 专业的扬州网站建设传奇新开网站
  • 网站首页模块建设wordpress去顶部文字
  • 网站开发怎样建立后台数据电商网站开发源码
  • 海南省建设厅网站沈阳网站建设 龙兴科技
  • 天津做网站的公网站百度
  • 移动网站好处电脑网页尺寸一般是多少
  • 珠海网站建设公司电话wordpress按分类显示图片
  • 企业网站建设杭州公司win10优化大师
  • 那些网站可以做公司的推广做特殊任务的网站
  • 同主机网站查询哪个视频网站做视频最赚钱
  • flash网站价格建设网站需要的ftp资源
  • 龙岗网站建设网站制作深圳十大广告公司
  • 网站重做适合乡镇的小型加工厂
  • 云南建站推广西安有哪些好玩的
  • 检测网站空间容量校园门户网站建设先进
  • 百度推广 网站建设静态网站制作wordpress模版
  • 肯德基网站开发重庆住建网官网