CN115495242A - 一种基于stl结合容器的台区智能终端app通讯处理方法 - Google Patents
一种基于stl结合容器的台区智能终端app通讯处理方法 Download PDFInfo
- Publication number
- CN115495242A CN115495242A CN202211173508.2A CN202211173508A CN115495242A CN 115495242 A CN115495242 A CN 115495242A CN 202211173508 A CN202211173508 A CN 202211173508A CN 115495242 A CN115495242 A CN 115495242A
- Authority
- CN
- China
- Prior art keywords
- data
- container
- thread
- subscription
- stl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
Abstract
本发明公开了一种基于STL结合容器的台区智能终端APP通讯处理方法,包括步骤:1)对容器处理主线程等本发明所需的若干线程进行初始化;2)交互线程将所需要订阅数据中心数据的,按数据中心需订阅的主题和订阅的数据内容,待获取到全局唯一标识后插入订阅数据容器中;3)发布订阅信息线程定时循环检索订阅数据容器并从中读取数据,通过MQTT交互协议发布至数据中心,直至将订阅数据容器中订阅数据发布完;4)数据接收处理线程将数据中心返回数据解析后插入数据响应容器中;步骤5)容器处理主线程定时检索数据响应容器中的数据,供其他线程使用。本发明实现高级应用APP与数据中心APP之间的异步交互。交互处理实现低耦合性,且代码框架清晰,异常情况便于分析处理。
Description
技术领域
本发明属于配电台区设备通讯技术领域,具体涉及一种基于STL结合容器的台区智能终端APP通讯处理方法。
背景技术
随着配电网智能化发展,低压台区智能终端设备承载了台区供电采集、设备状态监测、边缘化计算、就地分析决策、协同处理与主站通讯等功能为一体,随着高级应用的个数以及高级应用之间的交互不断增加,智能终端内部各个高级应用与数据中心频繁的、庞大的数据通讯处理给终端软硬件各方面的性能带来了极大的考验,复杂臃肿的处理方式则会带来不可预期的现象,内存使用率、CPU使用率,内存泄漏风险随着业务功能的复杂度也会随之剧增。
当前低压台区智能终端设备多采用容器技术,容器中安装各类高级APP与基础APP,高级应用APP之间一般采用MQTT通讯方式交互。特别是高级APP与数据中心APP之间的交互,交互频繁,数据量大。而数据中心APP存储一般采用数据库存储技术,随着数据中心数据存储量不断增加,查询检索数据项内容各异,数据库对各类数据请求响应时间也各不一样。
当前高级应用APP多数采用与数据中心交互采用发布数据请求之后等待数据中心响应。这种方式则会带来高级应用APP不定时卡顿现象,且这种方式受牵制于数据中心APP数据响应,出现超时返回或者其他异常情况等导致每个与数据中心交互线程时效性均会受影响。
发明内容
基于以上技术背景,本发明为解决台区智能终端高级应用APP与数据中心同步交互方式造成的卡顿以及其他异常超时等问题,本发明采用STL结合容器的标准模板库,采用高级APP与数据中心异步处理方式,将数据中心请求和数据中心回复均采用STL结合容器存储以及异步处理方式,减小高级APP卡顿现象,将数据组包、订阅发布、数据中心返回数据接收、数据解析等独立处理,每个线程独立运行互不受限。实现高级应用APP与数据中心交互数据处理低耦合性,代码框架清晰,异常情况便于分析处理,本发明提出了使用STL结合容器,将台区智能终端中高级应用APP与数据中心APP之间MQTT通讯采用异步通讯方式处理。具体技术方案如下:一种基于STL结合容器的台区智能终端APP通讯处理方法,方法包括以下步骤:
步骤1)对所需的若干线程进行初始化;
步骤2)交互线程订阅数据中心数据,组织好需要订阅的主题和payload的JSON数据,获取到全局唯一标识后插入订阅数据容器中,并等待从数据响应容器中读取数据中心返回数据;
步骤3)发布订阅信息线程定时循环检索订阅数据容器中内容,逐一读取数据,并通过MQTT交互协议发布至数据中心,从订阅数据容器删除存储,直至将订阅数据容器中订阅数据发布完;
步骤4)数据接收处理线程将数据中心返回数据解析后插入数据响应容器中;
步骤5)容器处理主线程定时检索数据响应容器中的数据,供其他线程使用。
作为本发明的一种改进,所述步骤1)中容器处理主线程创建对象中增加并初始化订阅数据容器和数据响应容器,并提供订阅数据容器和数据响应容器的若干接口。
作为本发明的一种改进,所述步骤2)的唯一标识为关键词,为无符号的32位整型数据,每次使用一次后唯一标识加一,容器内存储数据按照时间管理。
作为本发明的一种改进,所述步骤2)中还包括交互线程在业务规定时间内从数据响应容器中通过数据中心返回数据,读走数据中心返回数据项后且解析处理完,再从数据响应容器中移除并释放内存。
作为本发明的一种改进,所述步骤3)中还包括当订阅数据容器中内存释放完毕后,等待交互线程插入新的发布数据。
作为本发明的一种改进,所述步骤5)中还包括扫描每组数据的生命周期,超时未被读走并删除则默认失去时效并默认从容器中删除。
作为本发明的一种改进,所述接口包括数据插入接口、检索接口、查询接口以及容器内数据生命周期处理接口。
作为本发明的一种改进,超时未读走所需数据,默认此次数据交互失败,返回步骤1)重新发布。
作为本发明的一种改进,交互线程为需求与数据中心交互,安装的高级APP按数据中心格式要求组成正确JSON格式数据,并调用容器管理主线程提供的接口插入订阅数据容器。
作为本发明的一种改进,容器中数据读取、插入、删除操作均添加互斥锁,当一个线程读取、插入、删除等操作容器前需要加锁,操作结束后解锁。另一个线程需要读取、插入、删除操作此容器时需要等待上一次操作结束,即解锁后才可操作,同理操作前需加锁,结束后解锁。这样做的好处是防止当一个线程操作容器时,容器内数据正在被另一个线程修改使用,导致程序崩溃。
相对于现有技术,本发明的有益效果为:本发明采用STL结合容器的标准模板库,采用高级APP与数据中心异步处理方式,将数据中心请求和数据中心回复均采用STL结合容器存储以及异步处理方式,减小高级APP卡顿现象,将数据组包、订阅发布、数据中心返回数据接收、数据解析等独立处理,每个线程独立运行互不受限,实现高级应用APP与数据中心交互数据处理低耦合性,代码框架清晰,异常情况便于分析处理。
附图说明
图1为本发明所述处理方法流程示意图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
实施例:本发明将智能终端中安装的数据中心APP记为app_datacenter,安装的高级APP记为app_x。app_x与app_datacenter需要实时MQTT通讯,为实现本发明方法,app_x中需要增加两个MAP容器map_request和map_response:(注:容器内数据读、插入、删除操作均要加互斥锁,防止容器内数据破坏)。
1)订阅数据容器(向数据中心app_datacenter发布订阅数据容器map_request中数据)
2)数据响应容器(数据中心响应数据插入容器map_response)。
为实现本方法,简单介绍高级app_x中四个相关线程如下:
1)容器处理主线程 thread_map;
此线程管理上述两个容器,提供容器map_request和map_response数据插入、数据读取、删除等操作,管理容器map_request和map_response时效性以及内存。
2)交互线程(与数据中心交互线程thread_app);
此线程为需求与数据中心交互,app_x按数据中心格式要求组成正确JSON格式数据,并调用线程 thread_map提供的接口插入容器map_request。
3)发布订阅信息线程(向数据中心发布订阅信息线程thread_request);
此线程将容器map_request中数据定时、逐条发布给数据中心。并调用接口从此容器中清除。定时发布可降低数据中心CPU使用峰值,保证CPU使用率峰值不超限。
4)数据接收处理线程(数据中心返回处理线程thread_response);
此线程实时接收数据中心返回数据,并将返回数据解析出token和payload,调用接口插入容器map_response。
STL容器std::map介绍:STL容器std::map类模板一个关键词只可与一个数据元素相联系,若需要一个关键词和多个数据元素相联系,可使用STL容器std::multimap类模板。下面将采用map容器介绍本发明。
STL容器std::map类模板提供了许多接口可供调用,本发明主要介绍需使用函数接口如下:
返回指向映射中第一个元素 begin( ) ;
清除映射中的所有元素 clear( ) ;
返回指向映射中的最后一个元素 end( ) ;
向映射中插x,元素的位置是在指示器i所指示的元素之前insert(i,x);
删除由指示器i所指向的映射元素earse(i);
app_x与app_datacenter MQTT通讯流程,本发明将于数据中心交互中唯一标识token作为关键词,本发明要求token为无符号32位整型数据,每次使用一次后token加1,容器内存储数据需要按时间管理,超时从容器中删除并释放内存,使得容器内存储数据个数小于某一特定值,这样才能保证内存不超限使用,token值不重复。本方明将数据订阅和响应payload字符串信息分别和时间信息组合做为MAP容器数据元素结构体,下面介绍本发明使用的接口描述:
容器插入函数接口:
订阅数据容器插入insert_request_map;
数据中心响应数据容器insert_response_map;
容器按token读取函数接口:
订阅数据容器内容获取get_request_value;
数据中心响应数据容器内容获取get_response_value;
容器按token删除函数接口:
订阅数据容器内容删除delete_request_map;
数据中心响应数据容器内容删除delete_response_map;
容器内数据生命周期处理接口:
订阅数据容器内容超时删除接口request_timeout_delete;
数据中心响应容器内容超时删除接口response_timeout_delete。
如图1所示,一种基于STL结合容器的台区智能终端APP通讯处理方法,包括以下步骤:
1)初始化线程thread_app、thread_request、thread_response、thread_map;
thread_map线程需采用C++编程,创建对象中需增加并初始化容器map_request、map_response,用于与数据中心数据交互信息存储,并提供容器map_request、map_response数据插入接口(insert_request_map、insert_response_map)、检索接口(delete_request_map、delete_response_map)、查询接口(get_request_value、get_response_value)、容器内数据生命周期处理接口(request_timeout_delete、response_timeout_delete)等等。
2)thread_app需订阅数据中心数据,首先按数据中心数据交互手册组织好需要订阅的主题和payload的JSON数据,记为payload_request,获取到全局唯一token后,调用线程容器map_request插入函数insert_request_map插入到订阅容器中,记录token后调用get_response_value接口读取数据中心返回信息。
3)thread_request定时循环检索订阅容器map_request中内容,逐一读取出数据,通过MQTT交互协议发布给数据中心,并调用delete_request_map函数从订阅容器map_request删除此条储存,释放内存,直至将map_request中订阅数据项发布完,至此,map_request中内存释放完毕。等待thread_app插入新的发布数据。由于此线程定时周期间隔短,不至于thread_app插入数据过多导致容器数据堆积,内存泄漏。
4)thread_response将数据中心返回数据解析出token和payload,并记录当前系统时间,调用插入函数插入容器map_response,为防止数据响应风暴导致程序崩溃,可根据实际内存情况设置容器条数上限,超过上限后,每插入一条新数据则删除一条生命周期最长数据,并释放内存。实现容器内数据循环存储功能。
5)thread_map 定时调用函数response_timeout_delete。函数检索容器map_response中插入数据中心返回数据,并扫描每组数据的生命周期,超时(可设定有效时长)未被读走并删除则默认失去时效性默认从容器中删除,清空占用内存,为保证内存使用不超限,内存不泄露。
6)thread_app在业务规定时间内从map_response中通过token检索数据中心返回数据payload,读走数据中心返回数据项后且解析处理完,再从map_response移除,释放内存。超时未获取所需数据,默认此次数据交互失败,返回1)重新发布。
需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。
Claims (10)
1.一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述方法包括以下步骤:
步骤1)对所需的若干线程进行初始化;
步骤2)交互线程订阅数据中心数据,组织好需要订阅的主题和payload的JSON数据,获取到全局唯一标识后插入发布订阅数据容器中,并等待读取数据响应容器中数据中心返回的数据;
步骤3)发布订阅信息线程定时循环检索订阅数据容器中内容,逐一读取数据,并通过MQTT交互协议发布至数据中心,从订阅数据容器删除存储,直至将订阅数据容器中订阅数据发布完;
步骤4)数据接收处理线程将数据中心返回数据解析后插入数据响应容器中;
步骤5)容器处理主线程定时检索数据响应容器中的数据,供其他线程使用。
2.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述步骤1)中容器处理主线程创建对象中增加并初始化订阅数据容器和数据响应容器,并提供订阅数据容器和数据响应容器读写等操作的若干接口。
3.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述步骤2)的唯一标识为关键词,为无符号的32位整型数据,每次使用一次后唯一标识加一,容器内存储数据按照生命周期管理。
4.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述步骤2)中还包括交互线程在业务规定时间内从数据响应容器中通过数据中心返回数据,读走数据中心返回数据项后且解析处理完,再从数据响应容器移除释放内存。
5.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述步骤3)中还包括当订阅数据容器中内存释放完毕后,等待交互线程插入新的发布数据。
6.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述步骤5)中还包括扫描每组数据的生命周期,超时未被读走并删除则默认失去时效并默认从容器中删除,并释放其内存。
7.根据权利要求2所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,所述接口包括数据插入接口、检索接口、查询接口以及容器内数据生命周期处理接口。
8.根据权利要求3所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,超时未读到所需数据,默认此次数据交互失败,返回步骤1)重新发布。
9.根据权利要求1所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,交互线程为需求与数据中心交互,安装的高级APP按数据中心格式要求组成正确JSON格式数据,并调用容器管理主线程提供的接口插入订阅数据容器。
10.根据权利要求1-9任意一项所述的一种基于STL结合容器的台区智能终端APP通讯处理方法,其特征在于,容器中数据读取、插入及删除操作时均添加互斥锁,当一个线程读取、插入及删除操作此容器前进行加锁,操作结束后解锁,另一个线程读取、插入及删除操作此容器时等待上一次解锁后才可加锁,结束后解锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211173508.2A CN115495242A (zh) | 2022-09-26 | 2022-09-26 | 一种基于stl结合容器的台区智能终端app通讯处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211173508.2A CN115495242A (zh) | 2022-09-26 | 2022-09-26 | 一种基于stl结合容器的台区智能终端app通讯处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115495242A true CN115495242A (zh) | 2022-12-20 |
Family
ID=84469525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211173508.2A Pending CN115495242A (zh) | 2022-09-26 | 2022-09-26 | 一种基于stl结合容器的台区智能终端app通讯处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495242A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251860A (zh) * | 2008-03-10 | 2008-08-27 | 北京航空航天大学 | 一种Web信息发布管理系统与方法 |
CN109088723A (zh) * | 2018-10-26 | 2018-12-25 | 四川长虹电器股份有限公司 | 一种基于mqtt协议的远程控制方法 |
CN109308202A (zh) * | 2018-09-13 | 2019-02-05 | 武汉斗鱼网络科技有限公司 | 一种链接弹幕的方法及移动终端 |
US20190102402A1 (en) * | 2017-09-29 | 2019-04-04 | 2236008 Ontario Inc. | Platform-independent publish-subscribe |
CN110913000A (zh) * | 2019-11-27 | 2020-03-24 | 浙江华诺康科技有限公司 | 业务信息的处理方法、系统和计算机可读存储介质 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
-
2022
- 2022-09-26 CN CN202211173508.2A patent/CN115495242A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251860A (zh) * | 2008-03-10 | 2008-08-27 | 北京航空航天大学 | 一种Web信息发布管理系统与方法 |
US20190102402A1 (en) * | 2017-09-29 | 2019-04-04 | 2236008 Ontario Inc. | Platform-independent publish-subscribe |
CN109308202A (zh) * | 2018-09-13 | 2019-02-05 | 武汉斗鱼网络科技有限公司 | 一种链接弹幕的方法及移动终端 |
CN109088723A (zh) * | 2018-10-26 | 2018-12-25 | 四川长虹电器股份有限公司 | 一种基于mqtt协议的远程控制方法 |
CN110913000A (zh) * | 2019-11-27 | 2020-03-24 | 浙江华诺康科技有限公司 | 业务信息的处理方法、系统和计算机可读存储介质 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
Non-Patent Citations (1)
Title |
---|
谢川: "《嵌入式Linux开发基础》", 中国铁道出版社, pages: 273 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100625595B1 (ko) | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 | |
CN101208671B (zh) | 管理消息队列 | |
CN108491332A (zh) | 一种基于Redis的实时缓存更新方法和系统 | |
US20070192080A1 (en) | Data tree structure for automatic retention of context information | |
CN101697136B (zh) | 一种资源控制方法和装置 | |
CN108848132B (zh) | 一种基于云的配电调度主站系统 | |
CN111767327B (zh) | 数据流间具有依赖关系的数据仓库构建方法与系统 | |
CN104111958A (zh) | 一种数据查询方法及装置 | |
CN101944119A (zh) | 一种智能电子设备的实时事件管理方法 | |
CN112000649B (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
CN107025279A (zh) | 基于数据库接口层操作流的scd文件在线并行配置系统和方法 | |
US8024374B2 (en) | Computer object conversion using an intermediate object | |
CN115495242A (zh) | 一种基于stl结合容器的台区智能终端app通讯处理方法 | |
WO2023159976A1 (zh) | 数据分段写入方法、数据读取方法及装置 | |
Membrey et al. | A disk based stream oriented approach for storing big data | |
CN102169504B (zh) | 一种用于卫星地面设备监控的数据库索引方法 | |
CN111209652A (zh) | 一种电力系统静态设备模型时序构建方法及装置 | |
CN110955496A (zh) | 内存处理方法及装置、存储介质、电子装置 | |
CN113641765B (zh) | 面向巨量多源遥感数据的统一逻辑模型组织方法及其装置 | |
CN113312386B (zh) | 一种基于分布式消息的批量入库方法 | |
CN109754131B (zh) | 一种基于nxd的scd文件配置方法及装置 | |
CN112231409A (zh) | 数据库同步的初始化装载方法、装置、设备和存储介质 | |
CN112486996A (zh) | 面向对象的内存数据存储系统 | |
CN112650797A (zh) | 同异构dbms数据交换方法及应用该方法的系统 | |
CN111241184B (zh) | 用于配电网多源数据库的高吞吐率数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |