<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、提出者向leader發(fā)出詢問消息
    2、leader向所有的QuorumPeer發(fā)出投票請求
    3、QuorumPeer對該請求進行投票,如果消息的txid大于QuorumPeer的txid則通過該投票,否則反對該投票
    4、leader根據所有的QuorumPeer投票結果進行計算,如果有一半以上的QuorumPeer通過則接受提出者的請求,否則拒絕提出者的請求
            switch (message.getType())
            
    {
                
    case QuorumCode.ask://詢問類型
                    
    //詢問該事務是否可操作
                    Ask task=new Ask(message,sc);
                    My.executor.execute(task);
                    m.setCode(JuiceCode.OK);
                    
    break;
                
    case QuorumCode.vote://投票類型
                    if(My.txid>=message.getTxid())
                        
    //拒絕
                        m.setCode(JuiceCode.ERROR);
                    
    else
                    
    {
                        
    //通過
                        m.setCode(JuiceCode.OK);
                        My.updateMyTxid(message.getTxid());
                    }

                    
    break;
                
    case QuorumCode.ping://ping
                    m.setCode(JuiceCode.OK);
                    m.setMyid(message.getMyid());
                    
    break;
            }



        
    public static boolean sendAndVote(Message m) throws IOException
        
    {
            m.setType(QuorumCode.vote);
            Map
    <Integer,Response> mp=new TreeMap<Integer,Response>();
            
    for(Map.Entry<Integer,NIOClient> entry:voteClientMap.entrySet())
            
    {
                NIOClient client
    =entry.getValue();
                Response response
    =client.send(ByteUtil.getBytes(m));
                mp.put(entry.getKey(), response);
            }


            Map
    <Integer,Message> vote=new TreeMap<Integer,Message>();
            
    for(Map.Entry<Integer,Response> entry:mp.entrySet())
                vote.put(entry.getKey(), (Message)ByteUtil.getObject(entry.getValue().getData()));

            
    int ok=0;
            
    for(Map.Entry<Integer,Message> entry:vote.entrySet())
            
    {
                Message f
    =entry.getValue();
                
    if(f.getCode()==JuiceCode.OK)
                    ok
    ++;
            }

            
    if(ok/(vote.size()*1.0)>1/2.0)
                
    return true;
            
    return false;
        }


    posted on 2013-04-23 13:19 nianzai 閱讀(1767) 評論(0)  編輯  收藏 所屬分類: 分布式
    主站蜘蛛池模板: 亚洲另类视频在线观看| 精品久久久久久亚洲| 亚洲av午夜精品无码专区| 99在线观看视频免费| 亚洲天堂中文资源| 高清一区二区三区免费视频| 久久精品国产亚洲沈樵| 三级毛片在线免费观看| 亚洲AV无码专区国产乱码电影 | 搡女人真爽免费视频大全| 亚洲精品中文字幕乱码影院| 84pao强力永久免费高清| 亚洲成综合人影院在院播放| 亚洲性线免费观看视频成熟 | 又黄又爽又成人免费视频| 亚洲AV无码一区二区三区在线 | 亚洲国产婷婷综合在线精品| 无忧传媒视频免费观看入口| 4338×亚洲全国最大色成网站| 怡红院免费的全部视频| 亚洲AV成人一区二区三区AV| 日韩精品免费一级视频| 亚洲熟妇av午夜无码不卡 | 久9热免费精品视频在线观看| 亚洲国产综合专区电影在线| 五月亭亭免费高清在线| 亚洲国产成人无码AV在线影院| 亚洲国产一区二区视频网站| 嫩草成人永久免费观看| 亚洲同性男gay网站在线观看| 免费精品国产自产拍观看| 久久久受www免费人成| 亚洲综合久久久久久中文字幕| 免费无码黄十八禁网站在线观看| 看免费毛片天天看| 亚洲精品午夜国产VA久久成人| 97在线观看永久免费视频| 日本系列1页亚洲系列| 久久亚洲精品中文字幕无码| 四虎免费在线观看| 成全视频免费观看在线看|