docker版jxTMS使用指南:4.6版升级内容

4.6版jxTMS已经发布,升级了多个重大能力,本系列文章将逐一进行讲解。

docker版本的使用,请查看:docker版jxTMS使用指南

4.0版jxTMS的说明,请查看:4.0版升级内容

4.2版jxTMS的说明,请查看:4.2版升级内容

4.4版jxTMS的说明,请查看:4.4版升级内容

本系列文章包括:

用数据总线来实现数据采集的分布式处理

用命令行开关动态启动功能模块

取代本地文件而使用网络化配置

配置化方式提供设备数据

动态加载与更新模块

webSocket

之前的数据采集由于频率低【秒级或百毫秒级】,一天也就10万左右的数据量,基本没啥压力,所以考虑到方便,数据采集系统的架构为standalone构型。

但近来笔者遇到一个高频采集与处理的需求,而python有一个天然的限制:GIL【全局锁】。所以笔者不得不开始考虑将数据采集系统的standalone构型变更为分布式构型。

增加分布式处理能力,主要思路就两个方向:

  • 横切:将处理对象切分为几个片,每个片交给一个子系统进行处理

  • 纵拆:将处理过程拆分为几个环节,各环节分别交不同的系统进行处理

就jxTMS的数据采集系统来说,数据主要通过mqtt推送,所以只要采取不同子系统订阅各自的主题就可以轻松实现横切。实现这种横切有两种方法:

1、通配符预置:利用mqtt的主题通配符能力,通过规范站点命名的方式来实现横切

这一方案的优点就是简单,不需要任何额外的开发,只需要做好站点命名的规范化管理就可以了。

缺点就是不够灵活,无法适用于动态的、弹性的、可伸缩的应用场景下。

2、动态配置:可以基于数据总线简单实现一个配置中心,由配置中心根据预先的配置、算法、人工干预等多种手段来实现针对性的配置,从而对不同子系统需要订阅的主题进行动态的调整

这一方案的优缺点恰好和通配符预置相反。

由于横切的技术特性较少,所以我们暂不讨论,我们主要考虑纵拆。

之前我们在讨论jxTMS的数据采集框架时,曾经指出应当把数据采集和数据的应用拆开,以避免数据的加工与应用对采集、解析、转换、保存的过程产生干扰。

当时我们采用的机制就是本地数据总线

所以4.6版jxTMS解决数据采集系统分布式处理的关键就是改造本地数据总线,使其依托消息总线成为跨进程、跨服务器的数据总线。

数据采集系统是在原有的jxTMS体系中,通过catalogService体制实现的扩展。原本的这些扩展都考虑为standalone构型的单一功能,现在这个扩展进一步发展为分布式构型后,也需要做一定的适应性调整,如:

  • 以命令行开关的方式动态调整所需启动的功能模块

  • 将本地配置文件的静态配置调整为配置中心的可编程动态配置

  • 支持高可用性

除此之外,还增加了几个小功能。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

相关推荐
数研小生4 分钟前
亚马逊商品列表API详解
前端·数据库·python·pandas
独好紫罗兰4 分钟前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python
jianghua00116 分钟前
Python中的简单爬虫
爬虫·python·信息可视化
小Pawn爷16 分钟前
1.Docker基础
运维·docker·容器
chinesegf18 分钟前
清理docker残留镜像images
运维·docker·容器
喵手25 分钟前
Python爬虫实战:针对Python官网,精准提取出每一个历史版本的版本号、发布日期以及对应的文档/详情页链接等信息,并最终清洗为标准化的CSV文件!
爬虫·python·爬虫实战·零基础python爬虫教学·python官方数据采集·采集历史版本版本号等信息·导出csv文件
小Pawn爷37 分钟前
2.Docker的存储
运维·docker·容器
databook39 分钟前
像搭积木一样思考:数据科学中的“自下而上”之道
python·数据挖掘·数据分析
luoluoal39 分钟前
基于python的医疗问句中的实体识别算法的研究(源码+文档)
python·mysql·django·毕业设计·源码
啊阿狸不会拉杆1 小时前
《机器学习导论》第 9 章-决策树
人工智能·python·算法·决策树·机器学习·数据挖掘·剪枝