《Node Framework for VCL》(三)节点服务
节点服务 NODE SERVER 简介
Node Server 是基于《Node Framework for VCL》框架下的Windows服务,基于这个框架,所有信息交换和操作都通过Node Server来完成。每一个Node Server可视为一个数据交换和处理节点,由许多这样的节点组成服务群。
根据应用规模可以使用一个或多个Node Server来组成构建面向行业、机构、企业的服务。
安装
Node Server 是绿色软件,复制到Windows操作系统任意目录即可配置运行。
Node Server 对硬件要求不高,不需要专用服务器亦可运行。如果业务并发量大,对网络有一定要求。
Node Server 可视应用情况部署在内网或公网使用。
部署在内网则只能在机构、企业内网中使用,分配给其固定内网IP即可。
部署在公网则能使用互联网的地方均可以使用,需要固定的公网IP或域名。
启动
Node Server是两栖服务,可以服务模式运行也可界面模式运行。
-
界面模式
界面模式不会随Windows自动启动,主要用于前期配置和调试,配置无误后即可以服务模式运行。
运行界面模式只要在NodeServer.exe 后加参数 -UI 即可;
首次运行须通过界面运行,确保产生服务器ID编号和做关相关配置即可通过菜单安装到系统,以服务模式运行。
如果服务启动失败,请检查配置的端口号是否被其它服务或应用占用。
-
服务模式
遵循Windows服务规范,可以通过Windows命令行(管理员模式)sc 和 net 指令来管理服务。
服务模式安装成功后可以Windows的服务面板中找到Node Server, 服务名为 svrNode 。
服务模式安装成功后根据服务配置可随Windows自动启动服务。
本章只做初步介绍,具体的安装和配置待后期补《安装、配置手册》
配置
服务配置参数保存在服务目录 NodeServer.ini 文件中。
-
配置方式
支持多种配置方式,以下方式均可。
通过编辑服务 ini 文件来更改配置;
通过服务配置界面来更改配置;
通过运维客户端来更改配置;
-
动态配置
服务运行过程中也可动态更改配置。
-
远程配置
通过运维客户端远程连接运行中的服务来更改配置。
管理
日志管理
Node Server 服务所有动作都会记入日志,日志有文本型和数据型两种,可单独指定也可同时支持。文本型日志以明文保存,主要用于服务器输出调试; 数据型日志加密保存,可供管理员远程查看。日志有以下特点:
-
日期生成
每日生成日志,以年月日格式命名,如:
文本型 2019-03-01.log
数据型 2019-03-01.dat
-
自动清理
根据配置设定,服务启动后会自动清理指定天数前的日志,天数为0不清理。
-
远程查看
可通过运维客户端远程调阅和保存服务端的日志。
插件管理
Node Server 除必要的功能外,所有业务实现都通过插件包来完成。
-
插件热更新
功能包以热加载的形式提供服务,加载后可随时重新更新,无须停止服务,NodeServer会根据配置在一定时间内重新热加载功能包。
-
能力延展性
NodeServer能提供什么样的服务不由其本身决定,而由加载的插件包决定。
加载的插件包越多,NodeServer的能力延展性越高。
服务
通讯服务
NodeServer包含以下通信协议,每种协议有自己的特点或应用场景,可*选择搭配使用。
IOCP
高效高负载的通信协议,业务数据传输,文件流传输主协议,VCL框架下主要使用协议。
目前针对IOCP协议已完成指令请求、执行类,基于这个指令类已实现部分指令集。
非常高效的一种通信协议,前前公司为国企事业单位研发的的系统使用的核心通信协议,从使用了近10年的效果看较好。
本IOCP服务端主要参考了网友(天地弦)的 DIOCP - V5,重写解析和加密器,客户端使用INDY控件自己封装写了IOCP连接类,加入了通信验证,以保证数据传输安全。
DSTCP
目前构想为: 主要用于远程设备间的消息传输和异步呼叫。(指令集待定)
DSHTTP
目前构想为: 主要用于对接其它第三方平台或设备以进行交互。(指令集待定)
数据服务
采用 FireDAC 数据引擎,支持几乎所有主流数据库。
在一个Node Server上,支持配置多个不同类型、不同架构的数据库,以数据帐套的形式存在。
在一个Node Server上,可实现不同数据帐套间的数据抽取、转换和迁移(后期再实现)。
数据帐套可通过配置程序,在本地或远程动态配置、随时创建、编辑、上下线。
数据连接池
虽然 FireDAC 本身支持池化,但并不是所有数据库都支持,而且其池化配置较复杂且不友好。因此写了个数据池管理类,不管哪种数据库都由该类接管池化能力。
传输服务
通过 Node Server 进行文件传输。
传输能力可以细分出以下应用场景:
基本的文件上传下载
应用客户端可通过此能力上传、加密、管理、下载自己的公用或私有文件。
服务端能力扩展更新
运维客户端可通过此能力动态发布、部署、级联更新功能扩展插件。
客户端应用更新
运维客户端可通过此能力动态发布、级联更新针对于应用的客户端包。
应用客户端可通过此能力在执行期动态下载、更新对应于本应用的客户端包。