• 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-09-15
  • 贯彻落实习近平生态文明思想 为建设美丽新疆作出人大贡献 2019-09-15
  • 广西河池消防支队召开新兵第二阶段集训工作部署会 2019-08-22
  • [网连中国]赛龙舟 包粽子 办诗会……全国各地品民俗迎端午 2019-08-22
  • 中国资本市场开放出大招 跨境证券投资更便利 2019-08-21
  • 新生入学网上怎么报名 合肥教育局解答常见问题 2019-08-21
  • 国务院允许符合条件外国自然人投资境内上市公司 2019-08-20
  • 端午节 收艾草(组图) 2019-08-20
  • 正式进入商用时代 刷脸支付,这一次中国又领先了 2019-08-13
  • 广东摧毁两“呼死你”团伙 恶意呼叫超过12亿次 2019-08-13
  • 人家80年前就造航母,我们现在才造航母,基础不一样。 2019-08-13
  • 上海交通大学校长林忠钦:自信从容办好中国大学 2019-08-08
  • 邢台:迎端午祥龙起舞祈吉祥 2019-08-08
  • 网约车司机因接客时间起纠纷 持棒球棍殴打乘客 2019-08-08
  • 回复@“老笑头”,你的这种逻辑是你当年生sj病住院时向你同室的“病友”学来的吧!哈哈哈哈! 2019-08-02
  • 网站制作里分布式网站会遇到的典型问题

    日期:2019-07-28 16:36:58 作者:果冻 出自:辽宁快乐12直选走势图

    辽宁快乐12直选走势图 www.rfqk.net 在大型分布式互联网系统中,Session问题是典型的分布式化过程中会遇到的难题。因为Session数据必须在服务端的机器中共享,并要保证状态的一致性。

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一~致性服务的软件,所提供的功能包括:配置维护、域名服务、分布式同步、组服务等。下面我们介绍一下典型的分布式环境下遇到的一些典型问题的解决办法。

    image.png

    集群管理(GroupMembership)

    ZooKeeper能够很容易地实现集群管理的功能,如图1.15所示。如果多台Server组成一个服务集群,那么必须有一个“总管”知道当前集群中每台机器的服务状态,一旦有机器不能提供服务,就必须知会集群中的其他集群,并重新分配服务策略。同样,当集群的服务能力增加时,就会增加一台或多台Server,这些也必须让“总管”知道。Zo0Keeper不仅能够维护当前集群中机器的服务状态,而且能够选出一个“总管”,让“总管”来管理集群一这就是ZookeeperI的另一个功能LeaderElection。

    它的实现方式是在Zookeeper上创建一个EPHEMERAL类型的目录节点,然后每个Server在它们创建目录节点的父目录节点上调用getchildrenfStringpath,Booleanwatch)方法并设置watch为true。由于是EPHEMERAL目录节点,当创建它的Server死去时,这个目录节点也随之被删除,所以Children将会变化;这时getChildren上的Watch将会被调用,通知其他Server某台Server已死了。新增Server也是同样的原理。那么,Z0Keeper如何实现LeaderElection,也就是选出一个MasterServer呢?

    和前面的一样,每台Server创建一个EPHIEMERAL目录节点,不同的是它还是一个SEQUENTIAL目录节点,所以它是个EPHEMERALSEQUENTIAL目录节点。之所以它是EPHEMERALSEQUENTIAL目录节点,是因为我们可以给每台Serverg编号。我们可以选择当前最小编号的Server为Master,假如这个最小编号的Server死去,由于它是EPHEMERAL节点,死去的Server对应的节点也被删除,所以在当前的节点列表中又出现一个最小编号的节点,我们就选择这个节点为当前Master。这样就实现了动态选择Master,避免传统上单Master容易出现的单点故障问题。

    image.png

    共享锁

    在同一个进程中,共享锁很容易实现,但是在跨进程或者不同Server的情况下就不好实现了。然而Zookeeper能很容易地实现这个功能,它的实现方式也是通过获得锁的Server创建一个EPHEMERALSEQUENTIAL目录节点,再通过调用getchildren方法,查询当前的目录节点列表中最小的目录节点是否是自己创建的目录节点,如果是自己创建的,那么它就获得了这个锁;如果不是,那么它就调用exists(Stringpath,Booleanwatch)方法,并监控Zookeeper上目录节点列表的变化,直到使自己创建的节点是列表中最小编号的目录节点,从而获得锁。释放锁很简单,只要删除前面它自己所创建的目录节点即可。

    队列管理

    Keener可以外理以下两种型的队列其一,同步队列。即当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。其二,队列按照FIFO方式进行入队和出队操作,例如实现生产者和消费者模型。用Zo0Keeper实现同步队列的实现思路如下。

    创建一个父目录/synchronizing,每个成员都监控标志(SetWatch)位目录/synchronizing/start是否存在,然后每个成员都加人这个队列;加人队列的方式就是创建/synchronizing/memberi的临时目录节点,之后每个成员获取/synchronizing目录的所有目录节点,也就是member_i;?判断i的值是否已经是成员的个数,如果小于成员个数等待/'synchronizing/start的出现,如果已经相等就创建/synchronizing/star。用Zookeeper实现FIFO队列的思路如下。

    在特定的网站制作目录下创建SEQUENTIAL类型的子目录queueI,这样就能保证所有成员加入队列时都是有编号的;出队列时通过getChildren()方法返回当前所有队列中元素,再消费其中最小的一个,这样就能保证FIFO。

    (编辑:果冻)



    上一篇:网站开发里面选择语言的考量因素有哪些? 下一篇:前端技术在网站制作领域中的应用
    18585853123
    在线留言
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-09-15
  • 贯彻落实习近平生态文明思想 为建设美丽新疆作出人大贡献 2019-09-15
  • 广西河池消防支队召开新兵第二阶段集训工作部署会 2019-08-22
  • [网连中国]赛龙舟 包粽子 办诗会……全国各地品民俗迎端午 2019-08-22
  • 中国资本市场开放出大招 跨境证券投资更便利 2019-08-21
  • 新生入学网上怎么报名 合肥教育局解答常见问题 2019-08-21
  • 国务院允许符合条件外国自然人投资境内上市公司 2019-08-20
  • 端午节 收艾草(组图) 2019-08-20
  • 正式进入商用时代 刷脸支付,这一次中国又领先了 2019-08-13
  • 广东摧毁两“呼死你”团伙 恶意呼叫超过12亿次 2019-08-13
  • 人家80年前就造航母,我们现在才造航母,基础不一样。 2019-08-13
  • 上海交通大学校长林忠钦:自信从容办好中国大学 2019-08-08
  • 邢台:迎端午祥龙起舞祈吉祥 2019-08-08
  • 网约车司机因接客时间起纠纷 持棒球棍殴打乘客 2019-08-08
  • 回复@“老笑头”,你的这种逻辑是你当年生sj病住院时向你同室的“病友”学来的吧!哈哈哈哈! 2019-08-02
  • 牛牛棋牌赢现金攻略 双色球走势图带连线带坐标 爱彩乐下载 20190920辽宁快乐12 新疆喜乐彩中奖详情 极速飞艇开奖中心 八仙过海六肖中特 体彩天津十一选五开奖结果一定牛 毛泽西六肖中特 福彩开奖公告 云南快乐10分开奖查询 北京快乐8稳赚选二技巧 北京pk历史开奖记录 罗志祥四个a魔术解密 法甲球员进球排名