<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 閱讀(1757) 評論(0)  編輯  收藏 所屬分類: 分布式
    主站蜘蛛池模板: 国产成人yy免费视频| 久久青青草原亚洲AV无码麻豆| 亚洲视频免费在线观看| 黄页网址大全免费观看12网站| 亚洲精品不卡视频| 中文亚洲AV片在线观看不卡 | 久久久亚洲欧洲日产国码农村| 国产成人啪精品视频免费网| 日韩欧毛片免费视频| 免费视频精品一区二区三区 | 又黄又爽的视频免费看| 久久这里只有精品国产免费10| 午夜视频免费在线观看| 97人妻精品全国免费视频 | 国产成人A在线观看视频免费| 久久国产精品2020免费m3u8| 两个人看的www视频免费完整版| 色吊丝免费观看网站| 国产精品亚洲lv粉色| 亚洲精品国产av成拍色拍| 2019亚洲午夜无码天堂| 亚洲国产精品张柏芝在线观看| 亚洲欧洲日韩不卡| 亚洲欧洲日产国产综合网| 久久久久亚洲精品影视| 亚洲国产成人片在线观看无码| 国产精品V亚洲精品V日韩精品 | 亚洲伊人色一综合网| 日本亚洲精品色婷婷在线影院| 亚洲色欲www综合网| 亚洲最大视频网站| 亚洲成人在线免费观看| 亚洲av永久综合在线观看尤物| 亚洲一区二区影视| 亚洲影院天堂中文av色| 亚洲综合一区二区三区四区五区 | 最新免费jlzzjlzz在线播放| 成人免费视频88| 国产嫩草影院精品免费网址| 无码欧精品亚洲日韩一区夜夜嗨 | 久久夜色精品国产亚洲|