CN116389578A - 网通设备mqtt多任务调度方法、系统和可读存储介质 - Google Patents

网通设备mqtt多任务调度方法、系统和可读存储介质 Download PDF

Info

Publication number
CN116389578A
CN116389578A CN202310661490.9A CN202310661490A CN116389578A CN 116389578 A CN116389578 A CN 116389578A CN 202310661490 A CN202310661490 A CN 202310661490A CN 116389578 A CN116389578 A CN 116389578A
Authority
CN
China
Prior art keywords
subscription
interface
terminal
task
network communication
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.)
Granted
Application number
CN202310661490.9A
Other languages
English (en)
Other versions
CN116389578B (zh
Inventor
张灵晶
蔡树伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen SDMC Technology Co Ltd
Original Assignee
Shenzhen SDMC Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen SDMC Technology Co Ltd filed Critical Shenzhen SDMC Technology Co Ltd
Priority to CN202310661490.9A priority Critical patent/CN116389578B/zh
Publication of CN116389578A publication Critical patent/CN116389578A/zh
Application granted granted Critical
Publication of CN116389578B publication Critical patent/CN116389578B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开的一种网通设备MQTT多任务调度方法、系统和可读存储介质,其中方法包括:获取任务进程,并对所述任务进程进行分组,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;执行目标订阅模式,所述目标订阅模式采用订阅接口‑数据更新‑取消订阅的处理机制;当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据。本发明可以实现多终端同时连接使用时,网通设备仍然可以做到及时响应各终端的请求,通过新增更新订阅模式,在多终端订阅同一个接口时可以获取到一致的数据变化,从而极大减轻设备性能与服务器带宽压力。

Description

网通设备MQTT多任务调度方法、系统和可读存储介质
技术领域
本发明涉及智能家居以及数据处理技术领域,更具体的,涉及一种网通设备MQTT多任务调度方法、系统和可读存储介质。
背景技术
随着硬件性能提高与成本的降低,各种家电产品可以在低成本下实现智能化控制甚至是联网远程控制。网通设备也是如此,在设备本身就有联网功能的情况下,实现联网控制并不会增加多少硬件成本。由于网通等智能设备本身性能有限,通常采用MQTT(MessageQueuing Telemetry Transport)协议实现端到端的通信。
MQTT本身实现了一套简易的发布/订阅机制,由服务端负责消息转发,每个需要通信的客户端向服务端注册ID,并订阅TOPIC,当有客户端向某个TOPIC发送消息,服务端接收到就会转发给所有订阅了该TOPIC的客户端,以此实现通讯。
现有的智能设备通过MQTT实现的通讯方案是请求/响应模式如图1所示,其中,获取一次信息需要请求端发送一条MQTT消息到网通设备,网通设备按照任务顺序逐个处理后再发送一条MQTT消息到发送端。该模式下存在两个问题:
1、网通设备对请求任务逐个进行处理,当遇到某些耗时较多的任务,比如向后台查询最新固件版本再返回客户端,就会导致后续到来的MQTT请求处于等待状态,而如果此时用户等待了很短时间便退出更新检查,前往查看别的设置功能,就会出现所有页面的请求都没有返回数据的情况,而设备还在等待后台返回信息。
2、智能家居很多场景是需要实时更新的数据,比如查看网速,理想环境下至少要每秒更新一次网速数据绘制成图表才够实时和准确,但如果同时存在多个客户端正在查看网速变化,则设备每秒需要处理的任务数量将成倍增长,而设备的每一次响应都会被转发到每个客户端,有的场景甚至需要多个接口的实时数据,这对网通设备性能和服务端带宽带来巨大压力。
发明内容
本发明的目的是提供一种网通设备MQTT多任务调度方法、系统和可读存储介质,可以实现多终端同时连接使用时,网通设备仍然可以做到及时响应各终端的请求,从而极大减轻设备性能与服务器带宽压力。
本发明第一方面提供了一种网通设备MQTT多任务调度方法,包括以下步骤:
获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;以及
执行目标订阅模式,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;其中,
当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据;
基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
本方案中,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
本方案中,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
本方案中,所述目标订阅模式中数据更新阶段为循环更新阶段。
本方案中,所述当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,具体包括:
不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式;
基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端。
本方案中,所述基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,具体包括:
识别到用户结束进程时,基于所述宽限期来确定当前所述终端是否与对应的所述目标订阅模式离线,其中,
在所述宽限期获取对应的标记数据,以重新发送一次订阅,其中,若重新订阅时间为零,则表示当前终端已离线,并且当所述宽限期到期时,删除对应终端的订阅记录。
本发明第二方面还提供一种网通设备MQTT多任务调度系统,包括存储器和处理器,所述存储器中包括网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被所述处理器执行时实现如下步骤:
获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;以及
执行目标订阅模式,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;其中,
当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据;
基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
本方案中,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
本方案中,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
本方案中,所述目标订阅模式中数据更新阶段为循环更新阶段。
本方案中,所述当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,具体包括:
不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式;
基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端。
本方案中,所述基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,具体包括:
识别到用户结束进程时,基于所述宽限期来确定当前所述终端是否与对应的所述目标订阅模式离线,其中,
在所述宽限期获取对应的标记数据,以重新发送一次订阅,其中,若重新订阅时间为零,则表示当前终端已离线,并且当所述宽限期到期时,删除对应终端的订阅记录。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括机器的一种网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被处理器执行时,实现如上述任一项所述的一种网通设备MQTT多任务调度方法的步骤。
本发明公开的一种网通设备MQTT多任务调度方法、系统和可读存储介质,可以实现多终端同时连接使用时,网通设备仍然可以做到及时响应各终端的请求,通过新增目标订阅模式,在多终端订阅同一个接口时可以获取到一致的数据变化,减少了设备的请求处理次数,从而极大减轻设备性能需求与服务器带宽压力。
附图说明
图1示出了现有的智能设备通过MQTT实现的通讯方案是请求/响应模式示意图;
图2示出了本发明一种网通设备MQTT多任务调度方法的流程图;
图3示出了本发明一种网通设备MQTT多任务调度方法的任务调度的示意图;
图4示出了本发明一种网通设备MQTT多任务调度系统的框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
其中,现有技术中,获取一次信息需要请求端发送一条MQTT消息到网通设备,网通设备按照任务顺序逐个处理后再发送一条MQTT消息到发送端,出于数据安全考虑,网通设备通常只对鉴权后绑定的TOPIC进行回应,所以Client1和Client2两个客户端属于同个家庭,使用同一个家庭TOPIC进行订阅。为此,需要解决上述的两个技术问题,其一是1、网通设备对请求任务逐个进行处理,当遇到某些耗时较多的任务,比如向后台查询最新固件版本再返回客户端,就会导致后续到来的MQTT请求处于等待状态;其二是如果同时存在多个客户端正在查看网速变化,则设备每秒需要处理的任务数量将成倍增长,而设备的每一次响应都会被转发到每个客户端,有的场景甚至需要多个接口的实时数据,这对网通设备性能和服务端带宽带来巨大压力。
具体地,图2示出了本申请一种网通设备MQTT多任务调度方法的流程图。
如图2所示,本申请公开了一种网通设备MQTT多任务调度方法,包括以下步骤:
S202,获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;
S204,执行目标订阅模式,其中,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;
S206,当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据;
S208,基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
需要说明的是,于本实施例中,对于任务队列阻塞问题,在于区分哪些任务是可以并行的,哪些不可以,因此可以采用读写分离的思想,通常多个读取操作可以并发进行,因为一个任务读取数据不会影响另一个任务读取数据的结果,写入操作可以按照模块进行划分,不同模块的写入通常可以并发,同一个模块的写入则按照队列顺序执行,另外,网通设备的请求任务大部分都是查询,而设置通常每个页面也就执行一两次,采用此方案进行优化可以大大提高设备的响应速度。
进一步地,多终端同时进行高频率实时数据查询带来的性能和资源浪费问题,其主要原因在于请求/响应的模式,每次获取信息都需要至少两条消息才能完成,并且每个终端都只关注自己的请求,对别的终端的响应数据都不做处理,因此可以执行目标订阅模式,其中,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制,具体地,当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,其中,不同的终端都需要获取I1接口的实时数据时,可通过订阅的方式告知网通设备当I1接口数据更新时通知终端,由于有的数据刷新频率很高,有的偶尔刷新一次,具体通知间隔由设备控制,每次通知的数据终端1(Client 1)与终端2(Client 2)都使用了,既减少了设备的请求处理次数,又减少了服务器带宽压力,当终端不需要时可以取消该接口数据订阅,而基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
根据本发明实施例,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
需要说明的是,于本实施例中,如图3所示,任务进程包括了读取任务以及写入任务,具体地,配置读取任务队列所有任务的都可以并发,当有空闲的线程即可从该队列获取任务进行执行,其他队列的任务需要按照各自的队列顺序逐个执行;由于需要后台服务支持的任务的特殊性(可能网络超时需要等待20秒),读取任务对需要后台执行的任务单独开了一个队列,使其最多同时占用一个线程等待,这样即使有多个终端请求版本信息也不会同时占用多个线程;写入接口按照多模块并发,模块内任务串行执行,同样对于需要后台支持的任务,为了使其最多占用一条线程,当有线程正在执行后台写入任务时,标记该线程,并在后台写入线程存在时,跳过其他后台写入任务,优先执行其他类型的任务。
根据本发明实施例,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
需要说明的是,于本实施例中,如图3所示,上述实施例中说明当有空闲的线程即可从该队列获取任务进行执行,其他队列的任务需要按照各自的队列顺序逐个执行,因此,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
根据本发明实施例,所述目标订阅模式中数据更新阶段为循环更新阶段。
需要说明的是,于本实施例中,所述目标订阅模式对应为新增的一种接口数据更新订阅模式,采用订阅接口->数据更新...数据更新->取消订阅的方式,其中,数据更新阶段存在多个循环更新阶段,即至少包括两个数据更新阶段。
根据本发明实施例,所述当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,具体包括:
不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式;
基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端。
需要说明的是,上述实施例中,不同的终端都需要获取I1接口的实时数据时,可通过订阅的方式告知网通设备当I1接口数据更新时通知终端,而于本实施例中,具体说明了不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式,基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端,而单个终端最理想的情况可以实现N个信息获取只需要2+N条消息,而原先需要2*N条消息,M个终端订阅同一个接口,只需要2*M+N*M条消息,而不是N*M+N*M*M条消息,而终端的请求处理从M*N条减少为N条,并且不会因为两个终端分开两个请求,网通设备处理请求的时间不一致出现结果不同的情况。
根据本发明实施例,所述基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,具体包括:
识别到用户结束进程时,基于所述宽限期来确定当前所述终端是否与对应的所述目标订阅模式离线,其中,
在所述宽限期获取对应的标记数据,以重新发送一次订阅,其中,若重新订阅时间为零,则表示当前终端已离线,并且当所述宽限期到期时,删除对应终端的订阅记录。
需要说明的是,于本实施例中,由于终端取消订阅存在不确定性,比如用户结束APP进程,导致设备以为客户端还在订阅,一直发送数据。可以通过宽限期通知重新订阅来确认终端是否离线了。例如:I1接口每秒发送一次更新通知,由于该接口高频率更新,我们可以设置过期点为“60”次通知,宽限期设定为过期后的“10”次通知。假设C1(Client 1)已经订阅“30”秒,C2(Client 2)已经订阅“60”秒,接下来的“10”秒C2处于宽限期内给通知数据带上标记(订阅到期:C2),当终端接收到的消息发现该标记时,重新发送一次订阅,此时设备端刷新订阅时间C1已经订阅“30”秒,C2已经订阅“0”秒。若C2确实离线了,则会在第“70”秒删除订阅记录,只剩下C1已经订阅“40”秒,不同的接口可以根据实际情况实现不同的过期计数与宽限期。
值得一提的是,在实际应用时,在多终端执行不同操作,网通设备实现高并发响应,具体步骤包括:步骤11:同时开启三个终端(C1、C2、C3)与网通设备(Cwt,假设为三线程T1、T2、T3);步骤12:API后台将备份接口设置为超时返回状态;步骤13:C1停留在网络拓扑图页面,实时刷新当前拓扑图状态(网速、网通设备列表、下挂设备列表);步骤14:Cwt接收到请求,T1执行网速查询并返回,T2执行网通设备列表查询并返回,T3执行下挂设备列表查询并返回,实现请求并发处理;步骤15:C2在备份与恢复页面,发出请求创建新备份;步骤16:Cwt接收到创建备份请求,等待到空闲线程T1,T1执行备份创建并上传后台,此时由于网络原因,T1会一直阻塞直到超时并返回失败,但这期间T2、T3会继续处理C1的查询请求,C1客户端页面数据仍可正常刷新;步骤17:C3在Wi-Fi设置页面,设置新的Wi-Fi密码并保存;步骤18:Cwt接收到设置Wi-Fi密码的请求,等到T2处理完当前任务空闲出来,即使此时还有C1查询任务待处理,但由于优先级没有设置功能接口高,T2优先执行设置Wi-Fi密码的请求,T3执行C1的请求,此时C3的设置很快完成,C1的使用体验也不受影响。
值得一提的是,在实际应用时,使用订阅的方式获取需要定时刷新的数据,减轻网通设备性能与服务器带宽压力,具体步骤包括:步骤21:同时开启三个终端(C1、C2、C3)与网通设备(Cwt,假设为三线程T1、T2、T3);步骤22:C1、C2、C3分别间隔10秒进入网速折线图页面,以订阅的方式订阅网速接口I1的变化,此时Cwt的接口I1订阅状态(过期计数60,宽限计数10,终端列表[C1:20,C2:10,C3:0]);步骤23:Cwt以每秒一次的速度获取最新网速数据发送T1的更新到服务器,服务器将消息分发给C1、C2、C3,C1、C2、C3也以每秒一次的速度更新网速图表,在三个终端绘制出一致的网速变化图表;步骤24:C1在第40秒结束进程,Cwt接口I1订阅状态(终端列表[C1:40,C2:30,C3:20]);步骤25:第60秒,Cwt接口I1订阅状态(终端列表[C1:60,C2:50,C3:40]),在I1的网速数据中,携带过期设备列表(C1),C1此时已经离线,无法重新订阅;步骤26:第70秒,Cwt接口I1订阅状态(终端列表[C1:70,C2:60,C3:50]),由于C1超过了宽限期,C1被移除订阅,Cwt接口I1订阅状态(终端列表[C2:60,C3:50]),在I1的网速数据中,携带过期设备列表(C2);步骤27:C2接收到第70秒的数据,发现自己订阅快过期了,重新发送订阅请求;步骤28:Cwt接收到C2订阅I1,接口I1订阅状态(终端列表[C2:0,C3:50]),继续定时发送更新数据;步骤S209:第72秒,C3退出订阅,Cwt接口I1订阅状态(终端列表[C2:2]),继续定时发送更新数据;步骤29:第74秒,C2退出订阅,Cwt接口I1订阅状态(终端列表[]),停止I1定时发送更新数据。
其中,在应用时,获取任务进程以及执行目标订阅模式是同步进行的,是本申请提出的网通设备MQTT多任务调度方法的共同组成部分,上述说明书背景技术中具体说明了两个问题,其一是对请求任务逐个处理存在等待问题,对应于任务进程分组,而智能家居很多场景需要实时更新的数据,多个客户查看导致性能和资源浪费对应目标订阅模式(订阅接口-数据更新-取消订阅),因此,经由本申请达到的技术效果就是要通过对任务进程进行分组来减少任务队列拥塞的同时,可以基于对应的目标订阅模式实现N个信息获取只需要2+N条消息,而按照现有的方式需要2*N条消息。M个终端订阅同一个接口,只需要2*M+N*M条消息,而不是N*M+N*M*M条消息,而终端的请求处理从M*N条减少为N条,并且不会因为两个终端分开两个请求,网通设备处理请求的时间不一致出现结果不同的情况。
图4示出了本发明一种网通设备MQTT多任务调度系统的框图。
如图4所示,本发明公开了一种网通设备MQTT多任务调度系统,包括存储器和处理器,所述存储器中包括网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被所述处理器执行时实现如下步骤:
获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;
执行目标订阅模式,其中,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;
当任一终端获取接口的实时数据时,基于所述目标订阅模式告知网通设备所述终端对应接口的更新数据;
基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
需要说明的是,于本实施例中,对于任务队列阻塞问题,在于区分哪些任务是可以并行的,哪些不可以,因此可以采用读写分离的思想,通常多个读取操作可以并发进行,因为一个任务读取数据不会影响另一个任务读取数据的结果,写入操作可以按照模块进行划分,不同模块的写入通常可以并发,同一个模块的写入则按照队列顺序执行,另外,网通设备的请求任务大部分都是查询,而设置通常每个页面也就执行一两次,采用此方案进行优化可以大大提高设备的响应速度。
进一步地,多终端同时进行高频率实时数据查询带来的性能和资源浪费问题,其主要原因在于请求/响应的模式,每次获取信息都需要至少两条消息才能完成,并且每个终端都只关注自己的请求,对别的终端的响应数据都不做处理,因此可以执行目标订阅模式,其中,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制,具体地,当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,其中,不同的终端都需要获取I1接口的实时数据时,可通过订阅的方式告知网通设备当I1接口数据更新时通知终端,由于有的数据刷新频率很高,有的偶尔刷新一次,具体通知间隔由设备控制,每次通知的数据终端1(Client 1)与终端2(Client 2)都使用了,既减少了设备的请求处理次数,又减少了服务器带宽压力,当终端不需要时可以取消该接口数据订阅,而基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
根据本发明实施例,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
需要说明的是,于本实施例中,如图3所示,任务进程包括了读取任务以及写入任务,具体地,配置读取任务队列所有任务的都可以并发,当有空闲的线程即可从该队列获取任务进行执行,其他队列的任务需要按照各自的队列顺序逐个执行;由于需要后台服务支持的任务的特殊性(可能网络超时需要等待20秒),读取任务对需要后台执行的任务单独开了一个队列,使其最多同时占用一个线程等待,这样即使有多个终端请求版本信息也不会同时占用多个线程;写入接口按照多模块并发,模块内任务串行执行,同样对于需要后台支持的任务,为了使其最多占用一条线程,当有线程正在执行后台写入任务时,标记该线程,并在后台写入线程存在时,跳过其他后台写入任务,优先执行其他类型的任务。
根据本发明实施例,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
需要说明的是,于本实施例中,如图3所示,上述实施例中说明当有空闲的线程即可从该队列获取任务进行执行,其他队列的任务需要按照各自的队列顺序逐个执行,因此,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
根据本发明实施例,所述目标订阅模式中数据更新阶段为循环更新阶段。
需要说明的是,于本实施例中,所述目标订阅模式对应为新增的一种接口数据更新订阅模式,采用订阅接口->数据更新...数据更新->取消订阅的方式,其中,数据更新阶段存在多个循环更新阶段,即至少包括两个数据更新阶段。
根据本发明实施例,所述当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,具体包括:
不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式;
基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端。
需要说明的是,上述实施例中,不同的终端都需要获取I1接口的实时数据时,可通过订阅的方式告知网通设备当I1接口数据更新时通知终端,而于本实施例中,具体说明了不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式,基于所述目标订阅模式与所述网通设备进行通信,其中,当对应所述接口数据存在更新时,将对应的所述更新数据告知给所述终端,而单个终端最理想的情况可以实现N个信息获取只需要2+N条消息,而原先需要2*N条消息,M个终端订阅同一个接口,只需要2*M+N*M条消息,而不是N*M+N*M*M条消息,而终端的请求处理从M*N条减少为N条,并且不会因为两个终端分开两个请求,网通设备处理请求的时间不一致出现结果不同的情况。
根据本发明实施例,所述基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,具体包括:
识别到用户结束进程时,基于所述宽限期来确定当前所述终端是否与对应的所述目标订阅模式离线,其中,
在所述宽限期获取对应的标记数据,以重新发送一次订阅,其中,若重新订阅时间为零,则表示当前终端已离线,并且当所述宽限期到期时,删除对应终端的订阅记录。
需要说明的是,于本实施例中,由于终端取消订阅存在不确定性,比如用户结束APP进程,导致设备以为客户端还在订阅,一直发送数据。可以通过宽限期通知重新订阅来确认终端是否离线了。例如:I1接口每秒发送一次更新通知,由于该接口高频率更新,我们可以设置过期点为“60”次通知,宽限期设定为过期后的“10”次通知。假设C1(Client 1)已经订阅“30”秒,C2(Client 2)已经订阅“60”秒,接下来的“10”秒C2处于宽限期内给通知数据带上标记(订阅到期:C2),当终端接收到的消息发现该标记时,重新发送一次订阅,此时设备端刷新订阅时间C1已经订阅“30”秒,C2已经订阅“0”秒。若C2确实离线了,则会在第“70”秒删除订阅记录,只剩下C1已经订阅“40”秒,不同的接口可以根据实际情况实现不同的过期计数与宽限期。
值得一提的是,在实际应用时,在多终端执行不同操作,网通设备实现高并发响应,具体步骤包括:步骤11:同时开启三个终端(C1、C2、C3)与网通设备(Cwt,假设为三线程T1、T2、T3);步骤12:API后台将备份接口设置为超时返回状态;步骤13:C1停留在网络拓扑图页面,实时刷新当前拓扑图状态(网速、网通设备列表、下挂设备列表);步骤14:Cwt接收到请求,T1执行网速查询并返回,T2执行网通设备列表查询并返回,T3执行下挂设备列表查询并返回,实现请求并发处理;步骤15:C2在备份与恢复页面,发出请求创建新备份;步骤16:Cwt接收到创建备份请求,等待到空闲线程T1,T1执行备份创建并上传后台,此时由于网络原因,T1会一直阻塞直到超时并返回失败,但这期间T2、T3会继续处理C1的查询请求,C1客户端页面数据仍可正常刷新;步骤17:C3在Wi-Fi设置页面,设置新的Wi-Fi密码并保存;步骤18:Cwt接收到设置Wi-Fi密码的请求,等到T2处理完当前任务空闲出来,即使此时还有C1查询任务待处理,但由于优先级没有设置功能接口高,T2优先执行设置Wi-Fi密码的请求,T3执行C1的请求,此时C3的设置很快完成,C1的使用体验也不受影响。
值得一提的是,在实际应用时,使用订阅的方式获取需要定时刷新的数据,减轻网通设备性能与服务器带宽压力,具体步骤包括:步骤21:同时开启三个终端(C1、C2、C3)与网通设备(Cwt,假设为三线程T1、T2、T3);步骤22:C1、C2、C3分别间隔10秒进入网速折线图页面,以订阅的方式订阅网速接口I1的变化,此时Cwt的接口I1订阅状态(过期计数60,宽限计数10,终端列表[C1:20,C2:10,C3:0]);步骤23:Cwt以每秒一次的速度获取最新网速数据发送T1的更新到服务器,服务器将消息分发给C1、C2、C3,C1、C2、C3也以每秒一次的速度更新网速图表,在三个终端绘制出一致的网速变化图表;步骤24:C1在第40秒结束进程,Cwt接口I1订阅状态(终端列表[C1:40,C2:30,C3:20]);步骤25:第60秒,Cwt接口I1订阅状态(终端列表[C1:60,C2:50,C3:40]),在I1的网速数据中,携带过期设备列表(C1),C1此时已经离线,无法重新订阅;步骤26:第70秒,Cwt接口I1订阅状态(终端列表[C1:70,C2:60,C3:50]),由于C1超过了宽限期,C1被移除订阅,Cwt接口I1订阅状态(终端列表[C2:60,C3:50]),在I1的网速数据中,携带过期设备列表(C2);步骤27:C2接收到第70秒的数据,发现自己订阅快过期了,重新发送订阅请求;步骤28:Cwt接收到C2订阅I1,接口I1订阅状态(终端列表[C2:0,C3:50]),继续定时发送更新数据;步骤S209:第72秒,C3退出订阅,Cwt接口I1订阅状态(终端列表[C2:2]),继续定时发送更新数据;步骤29:第74秒,C2退出订阅,Cwt接口I1订阅状态(终端列表[]),停止I1定时发送更新数据。
其中,在应用时,获取任务进程以及执行目标订阅模式是同步进行的,是本申请提出的网通设备MQTT多任务调度方法的共同组成部分,上述说明书背景技术中具体说明了两个问题,其一是对请求任务逐个处理存在等待问题,对应于任务进程分组,而智能家居很多场景需要实时更新的数据,多个客户查看导致性能和资源浪费对应目标订阅模式(订阅接口-数据更新-取消订阅),因此,经由本申请达到的技术效果就是要通过对任务进程进行分组来减少任务队列拥塞的同时,可以基于对应的目标订阅模式实现N个信息获取只需要2+N条消息,而按照现有的方式需要2*N条消息。M个终端订阅同一个接口,只需要2*M+N*M条消息,而不是N*M+N*M*M条消息,而终端的请求处理从M*N条减少为N条,并且不会因为两个终端分开两个请求,网通设备处理请求的时间不一致出现结果不同的情况。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括一种网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被处理器执行时,实现如上述任一项所述的一种网通设备MQTT多任务调度方法的步骤。
本发明公开的一种网通设备MQTT多任务调度方法、系统和可读存储介质,可以实现多终端同时连接使用时,网通设备仍然可以做到及时响应各终端的请求,通过新增更新订阅模式,在多终端订阅同一个接口时可以获取到一致的数据变化,从而极大减轻设备性能与服务器带宽压力。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种网通设备MQTT多任务调度方法,其特征在于,包括以下步骤:
获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;以及
执行目标订阅模式,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;其中,
当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据;
基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
2.根据权利要求1所述的一种网通设备MQTT多任务调度方法,其特征在于,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
3.根据权利要求2所述的一种网通设备MQTT多任务调度方法,其特征在于,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
4.根据权利要求1所述的一种网通设备MQTT多任务调度方法,其特征在于,所述目标订阅模式中数据更新阶段为循环更新阶段。
5.根据权利要求1所述的一种网通设备MQTT多任务调度方法,其特征在于,所述当任一终端获取接口的实时数据时,基于所述目标订阅模式利用网通设备告知所述终端对应接口的更新数据,具体包括:
不同终端基于所述接口获取实时数据时,识别终端对应的所述目标订阅模式;
基于所述目标订阅模式与所述网通设备进行通信,其中,当对应接口数据存在更新时,将对应的所述更新数据告知给所述终端。
6.根据权利要求2所述的一种网通设备MQTT多任务调度方法,其特征在于,所述基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,具体包括:
识别到用户结束进程时,基于所述宽限期来确定当前所述终端是否与对应的所述目标订阅模式离线,其中,
在所述宽限期获取对应的标记数据,以重新发送一次订阅,其中,若重新订阅时间为零,则表示当前终端已离线,并且当所述宽限期到期时,删除对应终端的订阅记录。
7.一种网通设备MQTT多任务调度系统,其特征在于,包括存储器和处理器,所述存储器中包括网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被所述处理器执行时实现如下步骤:
获取任务进程,并对所述任务进程进行分组,其中,分组方式至少包括基于读写分离进行分组、基于模块并发进行分组以及基于后台服务需求进行分组;以及
执行目标订阅模式,所述目标订阅模式采用订阅接口-数据更新-取消订阅的处理机制;其中,
当任一终端获取接口的实时数据时,基于所述目标订阅模式告知网通设备所述终端对应接口的更新数据;
基于宽限期通知重新订阅来确定任一所述终端是否与当前所述目标订阅模式离线,其中,当所述宽限期到期时,删除对应终端的订阅记录。
8.根据权利要求7所述的一种网通设备MQTT多任务调度系统,其特征在于,所述获取任务进程,并对所述任务进程进行分组,具体包括:
基于所述任务进程获取读取任务队列,基于空闲线程将所述读取任务队列的读取任务进行执行;其中,对于存在所述后台服务需求的所述读取任务,则新建一个队列以供其进行等待执行;
基于写入接口按照模块并发机制串行执行对应的写入任务队列,其中,对于存在所述后台服务需求的写入任务,将对应的线程进行标记。
9.根据权利要求8所述的一种网通设备MQTT多任务调度系统,其特征在于,在执行所述读取任务队列时,基于任务进程的优先级排序进行分次执行。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括一种网通设备MQTT多任务调度方法程序,所述网通设备MQTT多任务调度方法程序被处理器执行时,实现如权利要求1至6中任一项所述的一种网通设备MQTT多任务调度方法的步骤。
CN202310661490.9A 2023-06-06 2023-06-06 网通设备mqtt多任务调度方法、系统和可读存储介质 Active CN116389578B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310661490.9A CN116389578B (zh) 2023-06-06 2023-06-06 网通设备mqtt多任务调度方法、系统和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310661490.9A CN116389578B (zh) 2023-06-06 2023-06-06 网通设备mqtt多任务调度方法、系统和可读存储介质

Publications (2)

Publication Number Publication Date
CN116389578A true CN116389578A (zh) 2023-07-04
CN116389578B CN116389578B (zh) 2023-08-08

Family

ID=86971696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310661490.9A Active CN116389578B (zh) 2023-06-06 2023-06-06 网通设备mqtt多任务调度方法、系统和可读存储介质

Country Status (1)

Country Link
CN (1) CN116389578B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025697A (zh) * 2009-09-14 2011-04-20 中兴通讯股份有限公司 用于cab的邀请订阅、订阅和订阅更新通知方法及装置
US20170242887A1 (en) * 2016-02-24 2017-08-24 Salesforce.Com, Inc. Efficient access scheduling for super scaled stream processing systems
WO2018205532A1 (zh) * 2017-05-12 2018-11-15 京东方科技集团股份有限公司 生成和订阅通知的方法和装置
CN110266794A (zh) * 2019-06-20 2019-09-20 四川长虹电器股份有限公司 基于mqtt服务器的代理订阅方法及系统
CN113364671A (zh) * 2021-06-28 2021-09-07 刘文平 节省流量电量的跨平台办公实时通讯系统
KR20220047796A (ko) * 2019-08-06 2022-04-19 트위터, 인크. 실시간 메시지들을 전달하기 위한 메시징 플랫폼

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025697A (zh) * 2009-09-14 2011-04-20 中兴通讯股份有限公司 用于cab的邀请订阅、订阅和订阅更新通知方法及装置
US20170242887A1 (en) * 2016-02-24 2017-08-24 Salesforce.Com, Inc. Efficient access scheduling for super scaled stream processing systems
WO2018205532A1 (zh) * 2017-05-12 2018-11-15 京东方科技集团股份有限公司 生成和订阅通知的方法和装置
CN110266794A (zh) * 2019-06-20 2019-09-20 四川长虹电器股份有限公司 基于mqtt服务器的代理订阅方法及系统
KR20220047796A (ko) * 2019-08-06 2022-04-19 트위터, 인크. 실시간 메시지들을 전달하기 위한 메시징 플랫폼
CN113364671A (zh) * 2021-06-28 2021-09-07 刘文平 节省流量电量的跨平台办公实时通讯系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李洋;: "基于消息队列遥测传输协议的智能家居消息中间件设计", 计算机应用, no. 1 *
荣文晶等: "基于消息中间件的电力系统数据安全传输方法研究", 电子产品可靠性与环境试验 *

Also Published As

Publication number Publication date
CN116389578B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN105338086B (zh) 一种分布式的消息转发方法
CN101668031B (zh) 一种消息处理方法及系统
CN108390933B (zh) 消息分发方法、装置、服务器及存储介质
US11991779B2 (en) Subscription message processing method and apparatus, and computer device and storage medium
CN110808948B (zh) 远程过程调用方法、装置及系统
CN111510469B (zh) 一种消息处理方法和装置
CN105554142B (zh) 消息推送的方法、装置及系统
US20160065660A1 (en) Computer system, computer, and load balancing method
CN116389578B (zh) 网通设备mqtt多任务调度方法、系统和可读存储介质
CN112019452B (zh) 一种业务需求的处理方法、系统及相关装置
CN106790354B (zh) 一种防数据拥堵的通信方法及其装置
CN106550021B (zh) 推送消息的推送方法及装置
CN107888677B (zh) 一种通信实现方法、控制端、智能设备及系统
US20030023775A1 (en) Efficient notification of multiple message completions in message passing multi-node data processing systems
CN114328156B (zh) 协议端口的健康检测方法、装置、设备及可读存储介质
US20210289570A1 (en) Low power dissipation Bluetooth mesh network system and communication method
JPWO2006043411A1 (ja) 通信装置および端末存在確認方法
CN115883639A (zh) 一种web实时消息推送方法及装置、设备、存储介质
CN114048017B (zh) 一种物联网设备协同联动方法和装置
KR101969652B1 (ko) 데이터 전달 장치, 방법과 그를 이용한 사물 인터넷 시스템, 데이터 전달 방법을 실행하기 위한 프로그램이 기록된 기록매체 및 하드웨어와 결합하여 데이터 전달 방법을 실행하기 위하여 매체에 저장된 프로그램
CN117591318A (zh) 一种基于Kafka的延时队列实现方法
CN114500660B (zh) 请求处理方法、装置、设备及计算机可读存储介质
US9847919B2 (en) Data network device discovery optimization to reduce data transfer volume
CN115086414B (zh) 消息处理方法和装置、存储介质及电子设备
CN114125486B (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
GR01 Patent grant
GR01 Patent grant