docker版jxTMS使用指南:数据采集系统的分布式处理

本文讨论4.6版jxTMS的数据采集系统的分布式处理,整个系列的文章请查看:docker版jxTMS使用指南:4.6版升级内容

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

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

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

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

从构思jxTMS之初,笔者就考虑过分布式处理的问题,所以jxTMS系统是构筑在rabbitMQ之上的:jxTMS分为两个主要部分:web服务和ORG【代表一个个组织】,可以有多个web服务和多个ORG,全部都通过MQ勾连。

由于实现企业业务与管理操作的capa虽然是基于python【运行于java之上的jython,停在了python2.7】编写,但出于安全的考虑【参考:jxTMS设计思想之安全】,jxTMS限制了import语句的使用,所以只使用python编写的capa时jxTMS能力有限,即只能使用笔者所编写并开放给capa的java模块。

为了能让jxTMS具备全能力【包括操作系统、系统软件、应用软件、第三方软件、python丰富的软件包库】,发展出catalogService,将提供全能力的功能模块挂到MQ上,再注册到catalogService中,然后就可以在capa中以远过程调用的方式来访问这些扩展功能了:jxTMS设计思想之能力扩展

在此基础上,笔者用go写了一些基础部件开放给python,在此基础上又用python实现了python侧的catalogService服务客户端部件以及其它基础模块。所以docker版的jxTMS包括了jxTMS的主系统以及一个用来提供全能力的扩展,然后以数据采集作为示例。

所以本质上,docker版的jxTMS本身已经是一个分布式系统了,只是数据采集这个功能扩展是standalone构型。所以数据采集系统的分布式,只需我们将python侧的jxTMS数据采集系统拆分为多个大块的组件,然后用MQ勾连起来,就可以实现数据采集系统的分布式处理了。

而standalone构型拆分为分布式构型的核心,就是不同模块间的数据交换方式的改变:

  • standalone构型中各功能模块间是通过模块接口直接调用来执行功能、读取数据,后期增加了通过本地数总线进行隔离与间接递送

  • 分布式构型中各功能模块间的数据交换需要通过消息系统或高速缓存来间接获取

所以很简单的,我们就看向了之前曾讲述过的本地数据总线。本地数据总线的初衷,就是解构数据采集与处理、应用的耦合。那么,把本地数据总线也通过MQ来实现也就自然而然的实现了分布式构型。

所以,基于jxTMS的数据采集系统变更为分布式构型主要是:

1、jxTMS本就建构在MQ之上,python侧的数据采集系统也是通过catalogService注册到主系统中并通过MQ来接受主系统的管理的,所以只要将数据采集系统拆分为子系统后分别注册到catalogService中即可

2、将本地的数据总线基于MQ重构,然后将数据采集系统拆散的子系统通过数据总线进行工作衔接即可

即,重构数据总线,然后将数据采集系统依托数据总线进行拆分。

参考资料:

jxTMS设计思想

jxTMS编程手册

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

如何用jxTMS开发一个功能

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

jxTMS的HelloWorld

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现JavaScript中AES加密有关填充问题

1. 先展示一下JS端的格式(没找到没混淆的。。。,将就看吧) 2. 在python加密中是没有选择填充模式的,需要自己来填充 3. 对加密不懂的朋友可能跟我一样刚开始很懵逼,因为遇到的基本都是pksc7填充模式,但是网…

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀,今天依旧是小雅兰的51单片机的内容,内容主要是:独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位,下面,让我们进入51单片机的世界吧!&a…

大数据技术标准推进委员会发布《地球大数据白皮书(2023年)》

导读 地球大数据的应用领域范围广阔,包括生态保护、自然资源管理、气象服务、城市规划、应急容灾等方面,但目前仍处于发展初期,面临着数据来源、结构多样,数据管理门槛高,数据应用场景复杂、落地方法论较少等痛点。如…

使用postman 调用 Webservice 接口

1. 先在浏览器地址栏 访问你的webService地址 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv?wsdl 2. post man POST 访问wwebService接口 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv <soapenv:Envelope xmlns:soapenv…

PCB放置过孔技巧

合理的放置过孔能有效的节约面积。 我们根据嘉立创的pcb工艺能力中写出单双面板最小过孔为0.3mm(内径)/0.5mm(外径) 设置过孔尺寸外直径为24mil&#xff08;0.61mm&#xff09;&#xff09;内直径为12mil&#xff08;0.305mm&#xff09; 嘉立创PCB工艺加工能力范围说明-嘉立…

Java常见设计模式

单例模式&#xff1a;程序自始至终只创建一个对象。 应用场景&#xff1a;1.整个程序运行中只允许一个类的实例时 2.需要频繁实例化然后销毁的对象 3.创建对象时耗时过多但又经常用到的对象 4.方便资源相互通信的环境 懒汉式线程不安全问题解决方案&#xff1a; 双重检查加锁机…

Java中几种不同的引用

文章目录 Java中几种不同的引用StrongReference(强引用)SoftReference(软引用)WeakReferenc(弱引用)虚引用PhantomReference Java中几种不同的引用 我们希望能描述这样一类对象&#xff1a;当内存空间还足够时&#xff0c;则能保留在内存中&#xff1b;如果内存空间在进行垃圾…

【ARM Coresight 系列文章 20.1 -- linux perf event 的注册】

文章目录 1.1 Perf 类型1.1.1 struct perf_event1.1.2 struct pmu1.2 事件注册1.2.1 software 事件注册1.2.2 cpu_clock 事件注册1.2.2 task_clock 事件注册1.2.3 tp 事件注册1.2.3.1 tracepoint 事件1.2.4 breakpoint 事件注册1.3 Perf sys1.3.1 perf_event_sysfs_init1.1 Per…

Spring AOP 中被代理的对象一定是单例吗?

今天我们来思考这样一个问题&#xff1a;在 Spring AOP 中&#xff0c;被代理的对象是单例的吗&#xff1f;当我们每次获取到代理对象的时候&#xff0c;都会重新获取一个新的被代理对象吗&#xff1f;还是被代理的对象始终是同一个&#xff1f; 为什么要思考这个问题&#xf…

均值滤波算法及例程

均值滤波算法是一种简单的图像滤波方法&#xff0c;它使用一个固定大小的滤波器来平滑图像。该滤波器由一个矩形的窗口组成&#xff0c;窗口中的像素值取平均值作为中心像素的新值。以下是均值滤波算法的步骤&#xff1a; 定义滤波器的大小&#xff08;窗口大小&#xff09;&a…

【ES的优势和原理及分布式开发的好处与坏处】

文章目录 ES的优势及分布式开发的好处1.ES的优势1.1 优势概述1.2 相关问题1&#xff09;为什么需要 Elasticsearch&#xff1f;MySQL 不行吗&#xff1f;2&#xff09;SQL检索的问题&#xff1a;3&#xff09;ES检索快的原理 2.分布式开发的好处与坏处 ES的优势及分布式开发的好…

09.selenium入门

Selenium采集数据 ​ Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),[Mozilla Chrome](https://baike.baidu.com/item/Mozilla Chrome/3504923),Safari,Google Chrome,Ope…

1200*C. Challenging Cliffs(模拟构造贪心)

Problem - 1537C - Codeforces Challenging Cliffs - 洛谷 解析&#xff1a; 排序数组&#xff0c;然后找出间隔最短的两个相邻的数 a&#xff0c;b&#xff0c;c&#xff0c;d&#xff0c;e&#xff0c;f &#xff08;假设b&#xff0c;c为差最小的两个数&#xff09;。 然后…

BUGKU-simple_SSTI_1漏洞注入

SSTI漏洞注入 SSTI全称Server side template injection.服务端模板注入这节课主要讲flask的模板注入.flask会把类似于 的变量当做参数来渲染并填充到web页面,如果该参数可控并被后台解析则有可能被注入恶意代码导致注入漏洞请注意 模板注入只会存在于二次渲染中,无二次渲染不会…

FPGA 芯片点亮标准?

芯片设计完成&#xff0c;给到工厂制造&#xff0c;封装后回来&#xff0c;要经过最重要的一个点亮的环节&#xff0c;你知道什么叫做点亮吗&#xff1f; 其实&#xff0c;什么样叫做点亮&#xff0c;每家公司有每家的标准&#xff0c;本着自已不为难自已的原则&#xff0c;一…

代码随想录二刷day55

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣392. 判断子序列二、力扣115. 不同的子序列 前言 一、力扣392. 判断子序列 class Solution {public boolean isSubsequence(String s, String t) {int…

Kotlin中的泛型理解与应用

前言 泛型是一种在编程中用于增加代码的灵活性和重用性的概念。它允许我们编写可以在多种类型上工作的通用代码&#xff0c;而不需要为每种类型都编写不同的代码。 泛型应用 在Kotlin中&#xff0c;泛型可以应用于类、函数和接口等。下面是一些关于泛型在Kotlin中的理解和示例…

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP是是一个面向连接的协议&#xff0c;无论哪一方发送数据之前&#xff0c;都必须在双方之间建立一条连接。 一、建立连接 建立TCP连接时&#xff0c;要经历这样的流程&#xff1a; ① 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口&#xff0c;以及初始…

【kubernetes】k8s中的选主机制

leader-election选主机制 1 为什么需要leader-election&#xff1f; 在集群中存在某种业务场景&#xff0c;一批相同功能的进程同时运行&#xff0c;但是同一时刻&#xff0c;只能有一个工作&#xff0c;只有当正在工作的进程异常时&#xff0c;才会由另一个进程进行接管。这…

git全局与单仓库的密码管理

概要 在使用git时&#xff0c;有一个默认的全局配置&#xff0c;每个仓库也有自己的配置&#xff0c;在使用时常常傻傻分不清楚&#xff0c;现在进行一个简单的整理记录&#xff0c;一般情况下全局配置中的git账号和邮箱通常设置成自己的&#xff0c;其他仓库再根据项目需要进…