江湖车侠|的自实现高可用方案,妙妙妙,PowerJob( 二 )
分组隔离其实根据前面遇到的问题 , 这一套机制的雏形也差不多出来了 。
server既然需要持有某一个分组下完整的集群信息 , 那么可以顺其自然的想到 , 能不能让某一个分组的所有worker都连接到某一台server呢?一旦某个分组下所有机器全部连接到了某一台server , 那么其实这就形成了一个小型的子系统 。 虽然整个PowerJob系统中存在着多台server和多个worker集群 , 但是对于这个分组的运行来说 , 只要有这个分组对应的worker集群以及它们连接的那一台server就够了 。 那么在这个小型“子系统”内部 , 只存在着一台server , 也就不存在重复调度问题了(server只调度连接到它的AppName下面的任务就能实现这一点) 。
所以 , 经过一层层的剥丝抽茧 , 问题已经转化为了:如何让某个分组下的所有机器都连接到同一台server上去呢?
看到这个问题的时候 , 相信很多人会有和我当时一样的想法 , 那就是:就这?
“好像有点道理 , 那就hash(appName)取余作为下标 , 这样就能保证同一个同一个分组下所有机器的初始IP相同 , 不同分组也能连接到不同的server”
“那 , 万一连接的server挂了怎么办?”
“这好办 , 可以采取类似于解决哈希冲突的那个什么开放定址法 , 从挂掉的server下标开始 , 依次向后重试就行了 , 同一个分组集群内所有的机器都从某个下标依次向后重试 , 还是能连接到同一台server的”
“好像很有道理 , 哼 , worker选主也就不过如此 , 方案搞定 , 英雄联盟启动!”
正当我浴血奋战直指敌将首级时 , 画面...永远定格在了见血前的那一瞬 。 “正在尝试重新连接”几个大字映入眼帘 , 也把我带入了深深的沉思 。
PS:这个方案的诞生 , 我大概付出了1斤脑细胞的代价(不得不说这个减肥方法还蛮好的)...脑细胞不能白死 , 尽管那些奇奇怪怪得方案没有活到正式版本 , 但没有他们就无法通往真理的大门 。 为了表达纪念和“哀悼”之情 , 我将最终的设计命名为——V4:丧钟为谁鸣 。
推荐阅读
- 阿里巴巴|马云,江湖再见
- 滴滴出行|网约江湖:生态闭环的滴滴
- 科学家|本可以改变世界,但却未能真正实现的10项发明和研究
- 北京日报客户端|中奥学者研究量子通信获重要进展!首次实现高保真度32维量子纠缠态
- 科技实验室|国外黑客通过程序实现体感操作,用乐高马力欧来玩马力欧游戏
- 最美的时光|明年实现量产,领先世界两代工艺,国产芯片迎来重大突破
- 华为|华为突然官宣,“云手机”每台约99/月,实现换道“超车”
- 机圈大坤坤|价格却是后者的5%?,为何小米手环实现苹果表8成的功能
- 科技小学弟资讯号|传统手机怎么办?,手机进入“云”时代!华为实现弯道超车
- 江湖车侠|(鬼刀)全4K桌面壁纸,9月新改