码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    【python】python面向对象——类的使用
    第3部分 原理篇2去中心化数字身份标识符(DID)(2)
    练[FBCTF2019]RCEService
    将imagenet2012数据为tensorflow格式
    【MATLAB教程案例5】常见无线通信信道的matlab模拟和仿真分析——自由空间损耗模型,Okumura-Hata模型以及COST231 Hata模型
    QGIS如何给元素添加属性
    vue3仿网易云界面
    计算机设计大赛心得总结-软件开发组
    入阿里P6?最少啃完这本阿里最新Java多线程编程手册,建议收藏
    突破使用debugger反调试的网页
  • 原文地址:https://blog.csdn.net/jxandrew/article/details/133636813
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号