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

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

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

    隨筆-23  評(píng)論-58  文章-0  trackbacks-0
    1、提出者向leader發(fā)出詢問消息
    2、leader向所有的QuorumPeer發(fā)出投票請(qǐng)求
    3、QuorumPeer對(duì)該請(qǐng)求進(jìn)行投票,如果消息的txid大于QuorumPeer的txid則通過該投票,否則反對(duì)該投票
    4、leader根據(jù)所有的QuorumPeer投票結(jié)果進(jìn)行計(jì)算,如果有一半以上的QuorumPeer通過則接受提出者的請(qǐng)求,否則拒絕提出者的請(qǐng)求
            switch (message.getType())
            
    {
                
    case QuorumCode.ask://詢問類型
                    
    //詢問該事務(wù)是否可操作
                    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) 評(píng)論(0)  編輯  收藏 所屬分類: 分布式

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91精品成人免费国产| 37pao成人国产永久免费视频| jzzjzz免费观看大片免费| 久久久久亚洲av毛片大| 精品无码AV无码免费专区| 亚洲国产成人久久精品软件| 亚洲精品国产精品国自产观看| 99re6免费视频| 极品色天使在线婷婷天堂亚洲| 亚洲免费人成在线视频观看| 在线观看的免费网站| jizz18免费视频| 亚洲人成毛片线播放| 中文字幕在线亚洲精品| 成人免费一区二区三区| 亚洲二区在线视频| 久久亚洲中文字幕精品一区| 亚洲高清中文字幕免费| 中文成人久久久久影院免费观看 | 国产自产拍精品视频免费看| 最近免费字幕中文大全| 亚洲国产成人综合精品| 久久伊人久久亚洲综合| 日本免费人成黄页在线观看视频 | 亚洲国产成人久久精品软件| 亚洲人成亚洲精品| 免费人成视频x8x8入口| www视频免费看| 视频免费在线观看| 黄色免费网站在线看| 亚洲入口无毒网址你懂的| 国产av天堂亚洲国产av天堂| 国产在线观看免费不卡| 成年人免费的视频| 久久午夜无码免费| 国产成人无码区免费内射一片色欲 | 暖暖免费中文在线日本| 亚洲一级毛片中文字幕| 日本高清免费aaaaa大片视频| 日韩插啊免费视频在线观看| 久久www免费人成看国产片|