网站建设中页面模板,自媒体包括哪些平台,国内做网站需要做icp备案吗,asp.net小型网站开发本文讲解4.6版jxTMS中的命令行开关#xff0c;整个系列的文章请查看#xff1a;4.6版升级内容
docker版本的使用#xff0c;请查看#xff1a;docker版jxTMS使用指南
4.0版jxTMS的说明#xff0c;请查看#xff1a;4.0版升级内容
4.2版jxTMS的说明#xff0c;请查看整个系列的文章请查看4.6版升级内容
docker版本的使用请查看docker版jxTMS使用指南
4.0版jxTMS的说明请查看4.0版升级内容
4.2版jxTMS的说明请查看4.2版升级内容
4.4版jxTMS的说明请查看4.4版升级内容
分布式构型有一个最简单的也是最基本的需求当需要时可以临时启动一个进程来增加算力。自然的这些临时启动的进程可能就需要不同的功能配置。
此前的jxTMS都是通过main.py结合配置文件进行定制化的启动与功能配置面对这种临时启动的、可按需要灵活配置的需求就无法满足了。
所以4.6版jxTMS中就改用了命令行开关与参数的方式来启动与配置。其开关包括
optional arguments:-h, --help show this help message and exit-n NAME, --name NAME 本程序的主机名-id HOSTID, --hostID HOSTID本程序的主机ID--dingding 启用钉钉--auth 初始化安全认证--site 加载站点信息--obtainDeviceData 开启根据配置递交设备数据--web 启动web--restPort RESTPORT rest服务端口--dataBus 启用系统数据总线--webSocket 启用webSocket--app 加载app模块--module 加载module模块--dbName DBNAME 本程序的数据库名不设则不访问数据库--dbHost DBHOST 本程序的数据库IP--dbPort DBPORT 本程序的数据库端口--dbUser DBUSER 本程序的数据库用户--dbPwd DBPWD 本程序的数据库密码--mqttServerIP MQTTSERVERIPmqtt服务器IP不设则不启用mqtt--mqttServerUesr MQTTSERVERUESRmqtt服务器用户--mqttServerPasswd MQTTSERVERPASSWDmqtt服务器密码--mqttTopicWildcard MQTTTOPICWILDCARDmqtt订阅主题的通配符--serviceName SERVICENAME服务名不设则不启动服务--serviceAlone 启动的服务不注册到目录服务中不设置则注册这些开关的意义在其说明中已经很清楚了我们只简略的做个说明。其主要包括两类
1、参数
用于设置某个参数具有相应的默认值如果不设则自动设为相应的默认值 n默认是demo。指定主机名每个jxTMS进程都必须设置自己的主机名否则无法通过MQ收发数据。针对分布式构型此参数更为重要两个同名的进程同时启动的话会导致消息收发紊乱 id默认是1001。数据库中各表的主键都是根据id、时间戳、序列号计算出来的所以需要使用数据库的系统也就是设置了dbName参数的系统当需要向数据库中插入新数据时需要设置与众不同的id以避免潜在的数据表主键冲突 restPort默认是10028。对外提供rest服务的TCP端口号只有同时打开web开关才会生效。此外如果是如【/module/web.py】中所演示的利用jxTMS提供的基础设施来提供rest服务则还需要打开auth开关否则用户无法登入。应当注意的是docker版jxTMS在用docker创建容器时需要开放restPort参数所指定的端口 dbName默认是None。需要使用数据库的系统必须设置dbName参数 dbHost默认是127.0.0.1。即默认是连接到docker版jxTMS自带的mysql服务 dbPort默认是3306 dbUser默认是root dbPwd默认是123456 mqttServerIP默认是None。即不连接mqtt服务指定127.0.0.1则连接到docker版jxTMS自带的mqtt服务 mqttServerUesr默认是None mqttServerPasswd默认是None mqttTopicWildcard默认是* serviceName默认是None如果设置了serviceName就会启动一个服务服务名是pyService.{serviceName}服务的全名是pyService.{主机名即n参数}.{serviceName}
注1如果在设置了serviceName的同时又开启了serviceAlone则serviceName服务不会注册到jxTMS主系统的catalogService中
注2如果多个服务设置了相同的serviceName【未开启serviceAlone】那么只有一个会注册到catalogService中其它的同名服务都会被要求等待。如果这些服务都是无状态的那这就相当于实现了在线热备当已经注册的服务宕机后在三个保活时间过去后catalogService会将其删除然后其它服务就可以顺利注册接管服务了
其它参数都是见名知意就不复赘述了。这里需要强调一下参数mqttTopicWildcard。其定义了mqtt主题的通配符即需要订阅的都是什么样的主题。默认是【*】也就是全部订阅。如果设置了相应的通配符则只有配置了该通配符的主题才会被订阅。
注这里的通配符不是mqtt通配符而是数据总线中的通配符如【*】代表所有主题【?xm】代表所有以xm两字母开头的主题【*xm*】代表所有包含了xm两字母的主题等等
由于jxTMS的数据采集系统是以站点名为主题的所以如果设置了mqttTopicWildcard参数则意味着所需加载的站点也会自动执行同样的匹配性过滤。
如果说数据总线是用来纵向拆分数据采集、处理、应用的过程可以将这些不同环境分散到不同的进程、服务器上来实现负载的合理分配。那么mqtt通配符就是用来横向切分数据源使其可以切分为一个个小的系统从而将整个系统的负载在不同的小系统之间进行了切分。
概要之mqtt通配符和数据总线为4.6版jxTMS实现分布式处理灵活而恰当的规划与调整系统负载提供了有力的手段。
2、开关
用于启动某项功能。上述开关中没有参数的都是开关不给出该开关则意味着不启用给出则意味着启用。其中需要重点说明的有 dataBus开启系统的数据总线即默认的名为【dataBus】的数据总线安全、钉钉、站点、mqtt订阅的主题等都需要开启系统数据总线以向jxTMS主系统查询相关的配置 auth开启用户授权与认证如上所述需要同时开启dataBus开关。开启后将完成资源信息的加载、用户信息的加载、权限的加载 web开启web服务端口由restPort指定 webSocket在开启web服务中支持webSocket功能 app和module分别加载app和module目录下的所有.py文件【应在各自的__init__.py文件中import该模块】 site加载站点信息如上所述需要同时开启dataBus开关。按数据采集器目前的处理框架一般需配置mqtt相应的参数 obtainDeviceData开启根据配置递交设备数据。随着站点越来越多、各种类型的设备越来越多、用户也越来越多不同用户之间希望获取的数据、使用方式等都有所不同。如果都以编程来处理会造成代码的臃肿、难以维护。所以4.6版的jxTMS提供了obtainDeviceData功能即通过配置的方式向一个个的用户针对性的提供所需设备的数据。同样也需要同时开启dataBus开关
其它功能都已经反复讲述过了但webSocket和obtainDeviceData开关所涉及的功能都是新增功能且较为复杂所以后文将分别专文讲述。
参考资料
jxTMS设计思想
jxTMS编程手册
下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能
如何用jxTMS开发一个功能
下面的系列文章讲述了jxTMS的一些基本开发能力
jxTMS的HelloWorld