<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-23  評論-58  文章-0  trackbacks-0

    1、收集第一輪投票結(jié)果
    2、統(tǒng)計投票數(shù),計算出投票數(shù)最大的id
    3、如果投票數(shù)超過1/2則選該id為leader
    4、如果最大投票數(shù)id沒有超過1/2,則推薦txid最大的id為leader
    5、計算出最大的txid及其服務器id
    6、計算出最大的txid有幾個
    7、如果最大txid超過一個,則比較服務器id,推薦服務id最大的為leader
    8、發(fā)起第二輪投票

    Java實現(xiàn)代碼如下:
            /**
             * 選舉leader
             * 
    @param vote 投票信息
             * 
    @return
             
    */

            
    public int forLeader(Map<Integer,Notification> vote)
            
    {
                
    //統(tǒng)計leader投票數(shù)
                TreeMap<Integer,Integer> tmap=new TreeMap<Integer,Integer>();
                
    for(Map.Entry<Integer,Notification> entry:vote.entrySet())
                
    {
                    Notification nf
    =entry.getValue();
                    
    if(tmap.containsKey(nf.leader))
                        tmap.put(nf.leader, tmap.get(nf.leader)
    +1);
                    
    else
                        tmap.put(nf.leader, 
    1);
                }

                
    //計算出投票數(shù)最大的id
                int a=0;
                
    int l=0;
                
    for(Map.Entry<Integer,Integer> entry:tmap.entrySet())
                
    {
                    
    if(entry.getValue()>a)
                    
    {
                        a
    =entry.getValue();
                        l
    =entry.getKey();
                    }

                }

                
    //如果投票數(shù)超過1/2則選該id為leader
                if(a/(My.serverList.size()*1.0)>1/2.0)
                
    {
                    
    //選出leader
                    if(l==My.myid)
                        My.myServerState
    =ServerState.LEADING;
                    
    else
                        My.myServerState
    =ServerState.FLLOWING;
                    My.leader
    =l;
                    
                    
    return -1;
                }

                
    //如果最大投票數(shù)leader沒有超過1/2,則推薦txid最大的id為leader
                
    //計算出最大的txid及其服務器id
                long txid=0;
                
    int leader=0;
                
    for(Map.Entry<Integer,Notification> entry:vote.entrySet())
                
    {
                    
    if(entry.getValue().txid>txid)
                    
    {
                        leader
    =entry.getKey();
                        txid
    =entry.getValue().txid;
                    }

                }

                
    //計算出最大的txid有幾個
                Map<Integer,Notification> vte=new TreeMap<Integer,Notification>();
                
    for(Map.Entry<Integer,Notification> entry:vote.entrySet())
                
    {
                    
    if(entry.getValue().txid==txid)
                    
    {
                        vte.put(entry.getValue().id, entry.getValue());
                    }

                }

                
    //如果超過一個,則比較服務器id,推薦服務id最大的為leader
                if(vte.size()>1)
                
    {
                    
    for(Map.Entry<Integer,Notification> entry:vte.entrySet())
                    
    {
                        
    if(entry.getValue().id>leader)
                            leader
    =entry.getKey();
                    }

                }

                
    return leader;
            }

        }

    posted on 2013-04-17 11:15 nianzai 閱讀(1880) 評論(0)  編輯  收藏 所屬分類: 分布式

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 少妇性饥渴无码A区免费| 免费v片在线观看视频网站| 婷婷精品国产亚洲AV麻豆不片| 青青草原1769久久免费播放| 2019亚洲午夜无码天堂| 亚洲成A人片在线观看中文| 免费人成毛片动漫在线播放| 国产精品亚洲四区在线观看| 亚洲人成色7777在线观看不卡 | 男人j进女人p免费视频| 久久亚洲国产精品五月天| 免费看片A级毛片免费看| 国产精品内射视频免费| 亚洲人6666成人观看| 自拍偷自拍亚洲精品情侣| 美女被免费喷白浆视频| h在线看免费视频网站男男| 亚洲女人影院想要爱| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 黄页网站在线免费观看| 亚洲欧洲国产精品你懂的| 日韩精品亚洲专区在线观看| 91九色老熟女免费资源站| 久久www免费人成精品香蕉| 亚洲熟女www一区二区三区| 亚洲2022国产成人精品无码区| 日韩毛片无码永久免费看| 在线免费观看亚洲| 未满十八私人高清免费影院| 精品亚洲成在人线AV无码| 亚洲成AV人在线观看天堂无码| 免费看小12萝裸体视频国产| 999久久久免费精品国产| 99视频免费在线观看| 色视频在线观看免费| 亚洲熟妇AV一区二区三区浪潮| 亚洲电影一区二区| 亚洲午夜福利在线观看| 亚洲 另类 无码 在线| 日韩免费无砖专区2020狼| 免费在线看v网址|