主控服务(路由+管理):提供节点的地址查询、发布、启停、管理等操作,以及对服务上报心跳的管理,通过它实现服务的注册与发现。
模块划分:
- 全量或增量加载路由信息
- node超时检测
- 服务状态检测
- 供tars服务获取路由的Servant
- 供node访问的Servant
服务启动流程:
//全量和增量加载路由信息的线程
_reapThread.init();
_reapThread.start();
//检查node超时的线程
_checkNodeThread.init();
_checkNodeThread.start();
//监控所有服务状态的线程
_checksetingThread.init();
_checksetingThread.start();
//异步处理线程
_registryProcThread = new RegistryProcThread();
int num = TC_Common::strto<int>(g_pconf->get("/tars/reap<asyncthread>", "3"));
_registryProcThread->start(num);
//供node访问的对象
addServant<RegistryImp>((*g_pconf)["/tars/objname<RegistryObjName>"]);
//供tars的服务获取路由的对象
addServant<QueryImp>((*g_pconf)["/tars/objname<QueryObjName>"]);
加载路由模块:
ReapThread:线程执行,启动时全量加载服务路由信息,主循环定时增量/全量加载