<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發出詢問消息
    2、leader向所有的QuorumPeer發出投票請求
    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 閱讀(1757) 評論(0)  編輯  收藏 所屬分類: 分布式

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲gv白嫩小受在线观看| 免费又黄又爽的视频| 在线观看无码AV网站永久免费| 久久笫一福利免费导航| 四虎www免费人成| 四虎影视永久免费观看| 亚洲综合色视频在线观看| 久久亚洲精品国产精品黑人| 亚洲国产成人久久| 国产亚洲一卡2卡3卡4卡新区| 亚洲精品视频免费观看| 三年片在线观看免费观看大全动漫| 国产精品免费观看| 国产精品免费视频网站| 亚洲精品无码国产| 亚洲乱码一区av春药高潮| 日韩亚洲人成网站| 日本视频免费高清一本18| 国产一卡2卡3卡4卡无卡免费视频| 国产91在线免费| 亚洲AV无码国产精品麻豆天美| 亚洲AV无码久久久久网站蜜桃 | 亚洲av无码国产综合专区| 香蕉视频亚洲一级| 嫩草成人永久免费观看| a级毛片无码免费真人| 亚洲一区二区三区免费| 91嫩草亚洲精品| 人妖系列免费网站观看| 国产四虎免费精品视频| 国产偷国产偷亚洲高清日韩| 99久久久国产精品免费牛牛| 全免费a级毛片免费看无码| 亚洲AV无码第一区二区三区| 日本系列1页亚洲系列| 3d动漫精品啪啪一区二区免费| 啊灬啊灬别停啊灬用力啊免费看| 亚洲伦另类中文字幕| 香蕉视频在线观看免费| av免费不卡国产观看| 中文字幕亚洲乱码熟女一区二区|