-
Notifications
You must be signed in to change notification settings - Fork 45
7 Framework篇:NodeServer
执行./run.sh,编译出两个server。HelloServer(原tar-demo-improve)和NodeServer
上面代码实现了最基本的heartbeat功能,即HelloServer定时向NodeServer发送心跳消息
实现发送心跳消息原理很简单:HelloServer中有一个client定时发异步请求到NodeServer,因此代码修改步骤如下:
-
定义NodeF.h,实现ServerFProxy和ServerF,前者是HelloServer的client需要用到,后者是NodeServer的ServerImp需要用到
-
实现Application::initializeClient(),完成_communicator初始化,增加TarsNodeFHelper,完成具体调用功能
-
增加AdminServant,其Adapter名称为AdminAdapter,这是因为TarsNodeFHelper中adapter名字必须为“AdminAdapter”才会去发起远程过程调用
-
增加ServerImp,完成NodeServer建造
先启动NodeServer(./NodeServer),再另外开一个窗口启动HelloServer(./HelloServer),过一会儿就会在NodeServer看到来自HelloServer的心跳请求。
改动点:
-
定义新接口Node.h, NodeImp通过继承其中的Node类,实现了startServer方法
-
新增NodeServer-start.sh和NodeServer-execute.sh,startServer方法通过执行NodeServer-start.sh脚本启动HelloServer
-
改动Application类,使其可以包含两个Imp(ServerImp和NodeImp),这块比较挫,后面再改进
-
修改ServantHandle::handleRequest方法,修复小bug,协程模式在客户端主动关闭时候,不要再继续调用handleRecvData方法
-
增加tar-client-NodeServer客户端,用来发送命令给NodeServer
请确保下载下来的NodeServer-start.sh和NodeServer-execute.sh有755的权限(chmod 755 * .sh)
如何利用NodeServer启动HelloServer:
-
执行./run.sh,生成HelloServer、NodeServer、tar-client-NodeServer
-
执行./NodeServer
-
另外开一个窗口,执行./tar-client-NodeServer
-
执行ps -ef | grep HelloServer, 能看到HelloServer的进程已经存在
总结下现在HelloServer与NodeServer的关系:
-
红色箭头是第一个功能,HelloServer定时向NodeServer发送心跳
-
紫色箭头是第二个功能,可以通过向NodeServer发送startServer命令来启动HelloServer,实质是通过执行脚本来启动HelloServer
为了便于理解,Makefile里没有使用多少“高级”语法,同时为了跟官方代码组织结构看齐,这次索性把目录结构一并调整了,使其看起来比较接近https://github.com/TarsCloud/TarsCpp 中的结构了。
关于Makefile的简单说明:
-
下载源码后,直接make,默认编译出所有的目标文件。如果只想编译一个目标文件,使用make "目标文件"(make HelloServer)即可。如果操作系统还没有安装make,要先安装
-
如果要新增自己的目标文件,需要几个步骤:(1)设置源文件路径*_SRC,头文件路径*_INC,object文件*_OBJ (2)在“Build Target”中设置需要编译出的目标文件名称和依赖的object文件 (3)在“Build Object”中设置*_OBJ的编译条件。基本上按照已有的模板修改即可。