<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      zookeeper 實現一個簡單的服務注冊與發現(C++) 三:服務發現

      git:git@github.com:ccx19930930/services_register_and_discovery.git

      參考鏈接:http://www.rzrgm.cn/haippy/archive/2013/02/21/2920280.html

       

      down_service_mgr.h

       1 #ifndef _DOWN_SERVICE_MGR_H_
       2 #define _DOWN_SERVICE_MGR_H_
       3 
       4 #include "base_class.h"
       5 
       6 class CDownServiceMgr : CUnCopyable
       7 {
       8 public:
       9     CDownServiceMgr(int module_id) : m_module_id(module_id) {}
      10     ~CDownServiceMgr() {}
      11 private:
      12     CDownServiceMgr() {}
      13 
      14 public:
      15     int Register(const string& zk_path, CNodeInfo* node_info);
      16     int UnRegister(const string& zk_path);
      17 
      18 private:
      19     int m_module_id;
      20     map<string, CNodeInfo *> m_node_list;
      21      pthread_mutex_t m_mutex;
      22 };
      23 
      24 #endif

       

      down_service_mgr.cpp

       1 #include "down_service_mgr.h"
       2 #include "auto_lock.h"
       3 
       4 int CDownServiceMgr::Register(const string& zk_path, CNodeInfo* node_info)
       5 {
       6     CAutoMutexLock auto_lock(m_mutex);
       7     if (m_node_list.count(zk_path))
       8     {
       9         return -1;
      10     }
      11     m_node_list[zk_path] = node_info;
      12     //TODO 長連接等
      13 
      14     return 0;
      15 }
      16 
      17 int CDownServiceMgr::UnRegister(const string& zk_path)
      18 {
      19     CAutoMutexLock auto_lock(m_mutex);
      20     if (m_node_list.count(zk_path) == 0)
      21     {
      22         return -1;
      23     }
      24     //TODO 長連接等
      25 
      26     m_node_list.erase(zk_path);
      27     return 0;
      28 }

       

      discovery.h

       1 #ifndef _DISCOVERY_H_
       2 #define _DISCOVERY_H_
       3 
       4 #include "base_class.h"
       5 #include "zk_handle.h"
       6 #include "down_service_mgr.h"
       7 
       8 #include <zookeeper.jute.h>
       9 
      10 class CDownNode
      11 {
      12 public:
      13     CDownNode() { Reset(); }
      14     ~CDownNode() {}
      15 
      16     void Reset()
      17     {
      18         m_full_node = false;
      19         m_node_info.Reset();
      20         m_node_list.clear();
      21         m_invalid_node_path_list.clear();
      22     }
      23 
      24 public:
      25     bool m_full_node;
      26     CNodeInfo m_node_info;
      27 
      28     map<string, CNodeInfo> m_node_list;
      29     set<string> m_invalid_node_path_list;
      30 
      31 };
      32 
      33 class CDiscovery : public CUnCopyable
      34 {
      35 private:
      36     static pthread_mutex_t m_mutex;
      37     static CDiscovery* m_pins;
      38     CDiscovery();
      39 public:
      40     static CDiscovery* GetInstance();
      41     int Init(const set<string> & down_path_list, const set<int> & down_service_list);
      42 
      43 
      44 public:
      45     int StartCheck();
      46     int Stop();
      47     static void OnZkHandleResetFunc();
      48 
      49 private:
      50     static void* DiscoveryCheckThread(void * param);
      51     int DiscoveryCheck();
      52     int DownPathCheck();
      53     int InvalidNodeCheck();
      54     int DebugPrintAllNode();
      55     bool IsRunning();
      56 
      57 private:
      58     static void ZkPathWatcher(zhandle_t* zh, int type, int state, const char* path, void* watcherCtx);
      59     static void ZkNodeWatcher(zhandle_t* zh, int type, int state, const char* path, void* watcherCtx);
      60 
      61 private:
      62     int OnPathChange(string path);
      63     int OnNodeChange(string node);
      64     void OnZkHandleReset();
      65     
      66 private:
      67     pthread_t m_down_check_thread_id;
      68     bool m_is_running;
      69     map<string, CDownNode*> m_down_path_list; // <zk_path, down_node_info>
      70     map<string, string> m_down_path_2_dir;    // <zk_node, zk_node>
      71     map<int, CDownServiceMgr* > m_down_service_list;
      72 };
      73 
      74 #endif

       

      discovery.cpp

        1 #include "discovery.h"
        2 #include "auto_lock.h"
        3 
        4 #include <stdlib.h>
        5 #include <sys/prctl.h>
        6 #include <unistd.h>
        7 #include <pthread.h>
        8 
        9 CDiscovery* CDiscovery::m_pins = nullptr;
       10 pthread_mutex_t CDiscovery::m_mutex;
       11 
       12 CDiscovery::CDiscovery()
       13     : m_is_running(false)
       14     , m_down_check_thread_id(0)
       15 {
       16 }
       17 
       18 CDiscovery* CDiscovery::GetInstance()
       19 {
       20     if (m_pins == nullptr)
       21     {
       22         CAutoMutexLock auto_lock(m_mutex);
       23         if (m_pins == nullptr)
       24         {
       25             m_pins = new CDiscovery;
       26         }
       27     }
       28     return m_pins;
       29 }
       30 
       31 int CDiscovery::Init(const set<string>& down_path_list, const set<int>& down_service_list)
       32 {
       33     CAutoMutexLock auto_lock(m_mutex);
       34     for (const auto & zk_path : down_path_list)
       35     {
       36         m_down_path_list[zk_path] = new CDownNode;
       37     }
       38 
       39     for (const auto& module_id : down_service_list)
       40     {
       41         m_down_service_list[module_id] = new CDownServiceMgr(module_id);
       42     }
       43 
       44     return 0;
       45 }
       46 
       47 int CDiscovery::StartCheck()
       48 {
       49     if (0 == m_down_check_thread_id)
       50     {
       51         m_is_running = true;
       52         if (0 != pthread_create(&m_down_check_thread_id, nullptr, CDiscovery::DiscoveryCheckThread, nullptr))
       53         {
       54             printf("CDiscovery::StartCheck create discovery check thread fail.");
       55             return -1;
       56         }
       57         printf("CDiscovery::StartCheck create discovery check thread succ.");
       58     }
       59     return 0;
       60 }
       61 
       62 int CDiscovery::Stop()
       63 {
       64     m_is_running = false;
       65 }
       66 
       67 void CDiscovery::OnZkHandleResetFunc()
       68 {
       69     CDiscovery::GetInstance()->OnZkHandleReset();
       70 }
       71 
       72 void* CDiscovery::DiscoveryCheckThread(void* param)
       73 {
       74     prctl(PR_SET_NAME, "zk_discovery_check");
       75 
       76     CZkHandle::GetInstance()->AddResetHandleFn("discovery", CDiscovery::OnZkHandleResetFunc);
       77 
       78     while (true == CDiscovery::GetInstance()->IsRunning())
       79     {
       80         CDiscovery::GetInstance()->DiscoveryCheck();
       81         usleep(kZkDiscoveryIntervalTime);
       82     }
       83     return nullptr;
       84 }
       85 
       86 int CDiscovery::DiscoveryCheck()
       87 {
       88     DownPathCheck();
       89     InvalidNodeCheck();
       90 
       91 #ifdef _DEBUG_
       92     DebugPrintAllNode();
       93 #endif
       94 }
       95 
       96 int CDiscovery::DownPathCheck()
       97 {
       98     printf("%s =======================================================\n", __func__);
       99     CAutoMutexLock auto_lock(m_mutex);
      100     for (const auto& down_path : m_down_path_list)
      101     {
      102         CDownNode* down_node = down_path.second;
      103         if (down_node->m_full_node)
      104         {
      105             continue;
      106         }
      107         set<string> node_list;
      108         if (ZOK == CZkHandle::GetInstance()->ZkWgetChildren(down_path.first, CDiscovery::ZkPathWatcher, node_list))
      109         {
      110             for (auto node_path : node_list)
      111             {
      112                 down_node->m_invalid_node_path_list.insert(down_path.first + '/' + node_path);
      113             }
      114             for (const auto& node : down_node->m_node_list)
      115             {
      116                 down_node->m_invalid_node_path_list.insert(node.first);
      117             }
      118 
      119             down_node->m_full_node = true;
      120         }
      121     }
      122     return 0;
      123 }
      124 
      125 int CDiscovery::InvalidNodeCheck()
      126 {
      127     printf("%s =======================================================\n", __func__);
      128     CAutoMutexLock auto_lock(m_mutex);
      129     for (const auto& down_path : m_down_path_list)
      130     {
      131         CDownNode* down_node = down_path.second;
      132         for (auto it_node_path = down_node->m_invalid_node_path_list.begin(); it_node_path != down_node->m_invalid_node_path_list.end();)
      133         {
      134             struct Stat stat;
      135             string zk_node_info;
      136             int ret_code = CZkHandle::GetInstance()->ZkWGetNodeInfo(*it_node_path, CDiscovery::ZkNodeWatcher, zk_node_info, stat);
      137             if (ZOK == ret_code)
      138             {
      139                 CNodeInfo node_info;
      140                 node_info.FromString(zk_node_info);
      141                 down_node->m_node_list[*it_node_path] = node_info;
      142                 it_node_path = down_node->m_invalid_node_path_list.erase(it_node_path);
      143                 m_down_service_list[atoi(node_info.m_module_id.c_str())]->Register(*it_node_path, &node_info);
      144                 m_down_path_2_dir[*it_node_path] = down_path.first;
      145             }
      146             else if(ZNONODE == ret_code)
      147             {
      148                 if (down_node->m_node_list.count(*it_node_path))
      149                 {
      150                     CNodeInfo& node_info = down_node->m_node_list[*it_node_path];
      151                     m_down_service_list[atoi(node_info.m_module_id.c_str())]->UnRegister(*it_node_path);
      152                     down_node->m_node_list.erase(*it_node_path);
      153                 }
      154                 if (m_down_path_2_dir.count(*it_node_path))
      155                 {
      156                     m_down_path_2_dir.erase(*it_node_path);
      157                 }
      158                 it_node_path = down_node->m_invalid_node_path_list.erase(it_node_path);
      159             }
      160             else
      161             {
      162                 ++it_node_path;
      163             }
      164         }
      165     }
      166     return 0;
      167 }
      168 
      169 int CDiscovery::DebugPrintAllNode()
      170 {
      171     printf("%s =======================================================\n", __func__);
      172     CAutoMutexLock auto_lock(m_mutex);
      173     for (const auto& down_path : m_down_path_list)
      174     {
      175         printf("%s down_path=%s is_full_node=%d --------------------------------------------\n", __func__, down_path.first.c_str(), down_path.second->m_full_node);
      176         printf("%s node_list: \n", __func__);
      177         for (auto& down_node : down_path.second->m_node_list)
      178         {
      179             printf("%s node=%s \n", __func__, down_node.first.c_str());
      180             printf("%s info=%s \n", __func__, down_node.second.ToString().c_str());
      181         }
      182 
      183         printf("%s invalid_node_list: \n", __func__);
      184         for (const auto& invalid_node : down_path.second->m_invalid_node_path_list)
      185         {
      186             printf("%s invalid_node:%s \n", __func__, invalid_node.c_str());
      187         }
      188     }
      189     return 0;
      190 }
      191 
      192 bool CDiscovery::IsRunning()
      193 {
      194     return m_is_running;
      195 }
      196 
      197 void CDiscovery::ZkPathWatcher(zhandle_t* zh, int type, int state, const char* path, void* watcherCtx)
      198 {
      199     if (ZOO_CHILD_EVENT == type)
      200     {
      201         CDiscovery::GetInstance()->OnPathChange(path);
      202     }
      203 }
      204 
      205 void CDiscovery::ZkNodeWatcher(zhandle_t* zh, int type, int state, const char* path, void* watcherCtx)
      206 {
      207     if (ZOO_CHANGED_EVENT == type)
      208     {
      209         CDiscovery::GetInstance()->OnNodeChange(path);
      210     }
      211     else if (ZOO_DELETED_EVENT == type)
      212     {
      213         CDiscovery::GetInstance()->OnNodeChange(path);
      214     }
      215 }
      216 
      217 int CDiscovery::OnPathChange(string path)
      218 {
      219     printf("%s path=%s  =======================================================\n", __func__, path.c_str());
      220     CAutoMutexLock auto_lock(m_mutex);
      221     if (m_down_path_list.count(path))
      222     {
      223         m_down_path_list[path]->m_full_node = false;
      224     }
      225     return 0;
      226 }
      227 
      228 int CDiscovery::OnNodeChange(string node)
      229 {
      230     printf("%s node=%s  =======================================================\n", __func__, node.c_str());
      231     CAutoMutexLock auto_lock(m_mutex);
      232     string path;
      233     if (m_down_path_2_dir.count(node))
      234     {
      235         path = m_down_path_2_dir[node];
      236     }
      237     if (m_down_path_list.count(path))
      238     {
      239         m_down_path_list[path]->m_invalid_node_path_list.insert(node);
      240     }
      241     return 0;
      242 }
      243 
      244 void CDiscovery::OnZkHandleReset()
      245 {
      246     printf("%s =======================================================\n", __func__);
      247     CAutoMutexLock auto_lock(m_mutex);
      248     for (const auto& down_path : m_down_path_list)
      249     {
      250         down_path.second->m_full_node = false;
      251     }
      252 }
      View Code

       

      discovery_test main.cpp

       1 #include "../zk_util/zk_handle.h"
       2 #include "../zk_util/discovery.h"
       3 
       4 #include <unistd.h>
       5 
       6 //偽分布式部署 host list最好以配置文件形式,此處為測試程序,暫時寫死
       7 const char* host_list = "xx.xx.xx.xx:port,xx.xx.xx.xx:port,xx.xx.xx.xx:port";
       8 const int time_out = 3000;
       9 int main()
      10 {
      11     CZkHandle::GetInstance()->ZkInit(host_list, time_out);
      12 
      13     set<string> down_path_list;
      14     down_path_list.insert("/zk_test1");
      15     down_path_list.insert("/zk_test2");
      16 
      17     set<int> down_service_list;
      18     down_service_list.insert(1);
      19     down_service_list.insert(2);
      20 
      21     CDiscovery::GetInstance()->Init(down_path_list, down_service_list);
      22     CDiscovery::GetInstance()->StartCheck();
      23 
      24     sleep(60);
      25 
      26     return 0;
      27 }

       

      Makefile

       1 INC_DIR:= ./ ../zk_util/ /usr/local/include/zookeeper/ /usr/local/include/json/
       2 SRCS:= $(wildcard ./*cpp ../zk_util/*cpp)
       3 OBJS:= $(patsubst %.cpp, %.o, $(SRCS))
       4 LIBS:= -lpthread -lzookeeper_mt -ljsoncpp
       5 
       6 CXX:= g++
       7 
       8 CXXFLAGS:= -w -g -std=c++11 $(addprefix -I, $(INC_DIR)) $(LIBS) -Wl,-rpath="/usr/local/lib" -D _DEBUG_
       9 
      10 EXE:= ../../bin/discovery_test
      11 
      12 $(EXE):$(OBJS)
      13     $(CXX) -o $(EXE) $(OBJS) $(CXXFLAGS)
      14 
      15 clean:
      16     rm -rf $(EXE)
      17     rm -rf $(OBJS)

       

      執行結果:

      只執行discovery_test

      ccx@ccx:~/self_test/zookeeper/services_register_and_discovery/bin$ ./discovery_test 
      CZkHandle::ZkInit create register check thread succ.
      CDiscovery::StartCheck create discovery check thread succ.CZkHandle::ResetZkHandle: connect to zk succ.
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test1
      CZkHandle::ZkInitWatchar: [type=-1] [state=3] [path=] [watcher_ctx=(nil)]
      CZkHandle::ZkWgetChildren get children succ. children_num=0
      CZkHandle::ZkWgetChildren get children for path=/zk_test2
      CZkHandle::ZkWgetChildren get children succ. children_num=0
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================

       

      使用register_test_1.conf 啟動多個測試程序后

      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      OnPathChange path=/zk_test1  =======================================================
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test1
      CZkHandle::ZkWgetChildren get children succ. children_num=1
      CZkHandle::ZkWgetChildren children_idx=0, children_name=register_test_1
      InvalidNodeCheck =======================================================
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test1/register_test_1
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test1/register_test_1 succ. buffer=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1] 
      CZkHandle::ZkWGetNodeInfo: [path=/zk_test1/register_test_1] [czxid=17179873794] [mzxid=17179873794] [version=0] [cversion=0] [child_num=0]
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]

       

      使用register_test_2.conf 啟動多個測試程序后

      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      OnPathChange path=/zk_test2  =======================================================
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test2
      CZkHandle::ZkWgetChildren get children succ. children_num=1
      CZkHandle::ZkWgetChildren children_idx=0, children_name=register_test_20000000010
      InvalidNodeCheck =======================================================
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000010
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000010 succ. buffer=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2] 
      CZkHandle::ZkWGetNodeInfo: [path=/zk_test2/register_test_20000000010] [czxid=17179873868] [mzxid=17179873868] [version=0] [cversion=0] [child_num=0]
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000010 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000010 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      OnPathChange path=/zk_test2  =======================================================
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test2
      CZkHandle::ZkWgetChildren get children succ. children_num=2
      CZkHandle::ZkWgetChildren children_idx=0, children_name=register_test_20000000010
      CZkHandle::ZkWgetChildren children_idx=1, children_name=register_test_20000000011
      InvalidNodeCheck =======================================================
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000010
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000010 succ. buffer=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2] 
      CZkHandle::ZkWGetNodeInfo: [path=/zk_test2/register_test_20000000010] [czxid=17179873868] [mzxid=17179873868] [version=0] [cversion=0] [child_num=0]
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000011
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000011 succ. buffer=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2] 
      CZkHandle::ZkWGetNodeInfo: [path=/zk_test2/register_test_20000000011] [czxid=17179873873] [mzxid=17179873873] [version=0] [cversion=0] [child_num=0]
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000010 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode node=/zk_test2/register_test_20000000011 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]

       

      依次停止register_test:

      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test1/register_test_1 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test1] MODULE_NAME[register_test] MODULE_ID[1] MODULE_IDX[1]  
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000014 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode node=/zk_test2/register_test_20000000015 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      OnNodeChange node=/zk_test1/register_test_1  =======================================================
      OnPathChange path=/zk_test1  =======================================================
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test1
      CZkHandle::ZkWgetChildren get children succ. children_num=0
      InvalidNodeCheck =======================================================
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test1/register_test_1
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test1/register_test_1 fail. ret=-101
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000014 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode node=/zk_test2/register_test_20000000015 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode node=/zk_test2/register_test_20000000014 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode node=/zk_test2/register_test_20000000015 
      DebugPrintAllNode info=IP[127.0.0.1] PORT[12345] ZK_PATH[/zk_test2] MODULE_NAME[register_test] MODULE_ID[2] MODULE_IDX[2]  
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      OnNodeChange node=/zk_test2/register_test_20000000015  =======================================================
      OnPathChange path=/zk_test2  =======================================================
      OnNodeChange node=/zk_test2/register_test_20000000014  =======================================================
      DownPathCheck =======================================================
      CZkHandle::ZkWgetChildren get children for path=/zk_test2
      CZkHandle::ZkWgetChildren get children succ. children_num=0
      InvalidNodeCheck =======================================================
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000014
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000014 fail. ret=-101
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000015
      CZkHandle::ZkWGetNodeInfo get node info for path=/zk_test2/register_test_20000000015 fail. ret=-101
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]
      DownPathCheck =======================================================
      InvalidNodeCheck =======================================================
      DebugPrintAllNode =======================================================
      DebugPrintAllNode down_path=/zk_test1 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      DebugPrintAllNode down_path=/zk_test2 is_full_node=1 --------------------------------------------
      DebugPrintAllNode node_list: 
      DebugPrintAllNode invalid_node_list: 
      CZkHandle::ZkExists: [ret=0]
      CZkHandle::ZkExists: [path=/] [czxid=0] [mzxid=0] [version=0] [cversion=291] [child_num=5]

       

      posted @ 2020-07-15 11:22  曾經時光  閱讀(1159)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 男女啪啪网站| 欧美丰满熟妇乱XXXXX网站| 野花社区视频www官网| 久久人人97超碰精品| 在线亚洲+欧美+日本专区| 久久亚洲精品人成综合网| 日本高清一区二区三| 国产高在线精品亚洲三区| 亚洲成av人片无码天堂下载| 日本一区不卡高清更新二区| 丁香五月亚洲综合深深爱| 亚洲国产精品成人一区二区在线 | 亚洲日韩成人无码不卡网站| 吉水县| 一区二区三区四区黄色网| 97成人碰碰久久人人超级碰oo | 午夜福利免费区在线观看| 国产免费网站看v片元遮挡| 久久av高潮av喷水av无码| 蜜臀av一区二区国产精品| 日日碰狠狠躁久久躁96avv| 在线观看人成视频免费| 亚洲第一综合天堂另类专| 国产色视频一区二区三区qq号| 成人欧美日韩一区二区三区| 国产精品中文字幕二区| 亚洲中文无码av永久不收费| 亚洲欧美综合精品成| 高潮潮喷奶水飞溅视频无码| 昌黎县| 伊人欧美在线| 一区二区中文字幕视频| 中文字幕av无码免费一区| 99国产精品自在自在久久| 精品国产欧美一区二区三区在线| 天天做天天爱夜夜爽导航| 成人午夜在线观看刺激| 亚洲免费成人av一区| 国产性色的免费视频网站| 国产精品天干天干综合网| 国产免费久久精品99reswag|