CN112698927A - 双向通信方法、装置、电子设备及机器可读存储介质 - Google Patents
双向通信方法、装置、电子设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN112698927A CN112698927A CN201911013499.9A CN201911013499A CN112698927A CN 112698927 A CN112698927 A CN 112698927A CN 201911013499 A CN201911013499 A CN 201911013499A CN 112698927 A CN112698927 A CN 112698927A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- task data
- threshold
- target
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
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 Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种双向通信方法、装置、电子设备及机器可读存储介质,该方法包括:通过所述双向通信连接接收所述服务端发送的目标任务数据;若数据池中存在任务数据,或/和,存在正在执行的任务,则将所述目标任务数据与目标任务数据的权重关联保存至所述数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;若所述数据池中不存在任务数据,且不存在正在执行的任务,则执行所述目标任务数据对应的任务。该方法可以避免服务端发送的任务数据打断当前正在执行的任务,并提高任务执行顺序的可控性。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种双向通信方法、装置、电子设备及机器可读存储介质。
背景技术
WebSocket是一种在单个TCP(Transmission Control Protocol,传输控制协议)连接上进行全双工通信的协议,其使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
目前,WebSocket协议中,客户端与服务端之间一般采用异步通信的方式进行双向通信。对于服务端发送的任务数据,客户端在接收到该任务数据时,执行回调进行加载,可能会出现上一个任务还未执行完成,就被当前返回的任务数据对应的任务打断的情况,任务执行顺序不可控。
发明内容
有鉴于此,本申请提供一种双向通信方法、装置、电子设备及机器可读存储介质。
根据本申请实施例的第一方面,提供一种双向通信方法,应用于双向通信系统中的客户端,该双向通信系统中还包括服务端,该客户端与该服务端之间建立有双向通信连接,并基于该双向通信连接进行异步通信,该方法包括:
通过该双向通信连接接收服务端发送的目标任务数据;
若数据池中存在任务数据,或/和,存在正在执行的任务,则将目标任务数据与目标任务数据的权重关联保存至数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;
若数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务。
根据本申请实施例的第二方面,提供一种双向通信装置,应用于双向通信系统中的客户端,该双向通信系统中还包括服务端,该客户端与该服务端之间建立有双向通信连接,并基于该双向通信连接进行异步通信,该装置包括:
接收单元,被配置为通过双向通信连接接收服务端发送的目标任务数据;
判断单元,被配置为判断数据池中是否存在任务数据,以及,是否存在正在执行的任务;
保存单元,被配置为若数据池中存在任务数据,或/和,存在正在执行的任务,则将目标任务数据与目标任务数据的权重关联保存至数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;
执行单元,被配置为若数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务。
根据本申请实施例的第三方面,提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面的双向通信方法。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现第一方面的双向通信方法。
根据本申请实施例的第五方面,提供一种计算机程序,该计算机程序存储于机器可读存储介质,并且当处理器执行该计算机程序时,促使处理器执行第一方面的双向通信的方法。
本申请实施例的双向通信方法,通过设置数据池,当客户端通过与服务端之间的双向通信连接接收服务端发送的目标任务数据时,若数据池中存在任务数据,或/和,存在正在执行的任务,则将目标任务数据与目标任务数据的权重关联保存至所述数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;若所述数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务,避免了服务端发送的任务数据打断当前正在执行的任务,并提高了任务执行顺序的可控性。
附图说明
图1是本申请一示例性实施例示出的一种双向通信方法的流程示意图;
图2A是本申请一示例性实施例示出的一种双向通信系统的架构示意图;
图2B是本申请另一示例性实施例示出的一种双向通信系统的架构示意图;
图2C是本申请一示例性实施例示出的一种服务接口地址获取的流程示意图;
图2D是本申请一示例性实施例示出的一种WebSocket长连接建立的流程示意图;
图2E是本申请一示例性实施例示出的一种任务数据存取的示意图;
图2F是本申请一示例性实施例示出的一种任务执行的流程示意图;
图2G是本申请一示例性实施例示出的一种配置调整的流程示意图;
图3是本申请一示例性实施例示出的一种双向通信装置的结构示意图;
图4是本申请又一示例性实施例示出的一种双向通信装置的结构示意图;
图5是本申请又一示例性实施例示出的一种双向通信装置的结构示意图;
图6是本申请又一示例性实施例示出的一种双向通信装置的结构示意图;
图7是本申请一示例性实施例示出的一种电子设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种双向通信方法的流程示意图,其中,该双向通信方法可以应用于双向通信系统中的客户端,该双向通信系统中还包括服务端,客户端与服务端之间建立有双向通信连接(如WebSocket长连接),并基于该双向通信连接进行异步通信,如图1所示,该双向通信方法可以包括以下步骤:
为了便于理解和描述,下文中以客户端与服务端之间的双向通信连接为WebSocket长连接为例进行说明,但应该认识到,客户端与服务端之间的双向通信连接并不限于WebSocket长连接,也可以是其他支持异步通信的双向通信连接。
步骤S100、通过双向通信连接接收服务端发送的目标任务数据。
本申请实施例中,客户端与服务端之间建立WebSocket长连接的具体实现将在下文中结合具体实例进行说明,本申请实施例在此不再赘述。
本申请实施例中,客户端与服务端之间建立WebSocet长连接之后,服务端可以通过该WebSocket长连接向客户端推送任务数据,客户端可以通过该WebSocket长连接接收到服务端发送的任务数据(本文中称为目标任务数据)。
步骤S110、判断数据池中是否存在任务数据。若是,则转至步骤S140;否则,转至步骤S120。
步骤S120、判断是否存在正在执行的任务。若是,则转至步骤S140;否则,转至步骤S130。
本申请实施例中,为了避免服务端推送的任务数据打断客户端当前执行的任务,并提高客户端任务执行顺序的可控性,客户端可以设置一个用于存储服务端推送的任务数据的存储空间(本文中称为数据池),客户端将服务端推送的任务数据保存至数据池时,需要设置权重属性,该权重属性决定了客户端从数据池中读取任务数据的顺序。
示例性的,数据池中的任务数据的权重越高,客户端从数据池中读取该任务数据的优先级越高,即客户端执行该任务数据对应的任务的优先级越高。本申请实施例中,当客户端通过WebSocket长连接接收到服务端发送的目标任务数据时,客户端在执行该目标任务数据对应的任务之前,需要判断数据池中是否存在任务数据,并当数据池中不存在任务数据时,判断当前是否存在正在执行的任务。
当客户端确定数据池中存在任务数据,或/和,存在正在执行的任务时,客户端可以将目标任务数据与目标任务数据的权重关联保存至数据池。
示例性的,任务数据的权重可以由客户端和服务端之间预先协商确定,如根据任务数据的类型确定任务数据的权重。
举例来说,假设任务数据的类型可以包括告警类型、警告类型、信息类型以及提示类型,其权重依次降低(假设权重值依次为4、3、2和1,权重值越小,权重越低),则客户端可以根据服务端发送的目标任务数据中的类型标识确定任务数据的权重,进而将目标任务数据与目标任务数据的关联保存至数据池。
需要说明的是,在本申请实施例中,判断数据池中是否存在任务数据与判断是否存在正在执行的任务之间并不存在必然的时序关系,即可以按照图1所示流程中的先判断数据池中是否存在任务数据,后判断是否存在正在执行的任务,或者,也可以先判断是否存在正在执行的任务,后判断数据池中是否存在任务数据;或者,还可以并行判断是否存在正在执行的任务,以及判断数据池中是否存在任务数据。
步骤S130、执行目标任务数据对应的任务。
本申请实施例中,当客户端确定数据池中不存在任务数据,且不存在正在执行的任务时,客户端可以执行目标任务数据对应的任务。
步骤S140、将目标任务数据与目标任务数据的权重关联保存至数据池。
本申请实施例中,当客户端确定数据池中存在任务数据,或者,存在正在执行的任务时,客户端可以将目标任务数据与目标任务数据的权重关联保存至数据池。
在一个示例中,将目标任务数据与目标任务数据的权重关联保存至数据池,可以包括:
将目标任务数据和目标任务数据的权重保存至数据池。
示例性的,当客户端确定数据池中存在任务数据,或/和,存在正在执行的任务时,客户端可以将目标任务数据与目标任务数据的权重均保存至数据池,如将目标任务数据与目标任务数据的权重保存在数据池中一段连续的存储空间。
当需要从数据池中读取任务数据时,可以根据数据池中保存的各任务数据的权重,确定任务数据的读取顺序。
在另一个示例中,将目标任务数据与目标任务数据的权重关联保存至数据池,可以包括:
将目标任务数据保存至数据池中的目标存储区域;其中,该目标存储区域为数据池中用于保存权重与目标任务数据的权重相同的任务数据的存储区域。
示例性的,可以根据不同任务数据的权重,预先将数据池划分为多个不同的存储区域(如存储队列),不同的存储区域用于存储不同权重的任务数据。
当客户端确定数据池中存在任务数据,或/和,存在正在执行的任务时,客户端可以根据目标任务数据的权重,确定匹配的存储区域(本文中称为目标存储区域),并将目标任务数据保存到目标存储区域。
当需要从数据池中读取任务数据时,可以根据各存储区域匹配的权重,确定从各存储区域中读取任务数据的顺序。
上述两个示例中,前者不需要预先划分存储区域,可以有效避免某些存储区域内较为空闲,而其他存储区域的存储空间不足的情况,提高了存储空间的利用率;后者不需要每次均对任务数据的权重进行保存,节省了存储空间,且进行任务数据读取时,可以根据任务数据所在的存储区域确定任务数据的权重,提高了任务数据读取的效率。
可见,在图1所示方法流程中,通过设置数据池,当客户端接收到服务端通过双向通信连接发送的目标任务数据时,若数据池中存在任务数据,或/和,存在正在执行的任务,根据目标任务数据的权重,将目标任务数据保存至数据池;若数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务,避免了服务端发送的任务数据打断当前正在执行的任务,并提高了任务执行顺序的可控性。
在一种可能的实施方式中,上述双向通信方法还可以包括:
当数据池中的任务数据的总量达到第一阈值时,判断当前任务执行线程数量是否达到最大多开线程数;
若未达到,则增加任务执行线程数量;其中,增加后的任务执行线程数量不超过最大多开线程数。
示例性的,考虑到当数据池中保存的任务数据过多时,可能会对内存造成很大的压力,且影响任务处理性能,因而,可以预先设定一个阈值(本文中称为第一阈值),当数据池中的任务数据的总量达到该第一阈值时,可以触发客户端增加任务执行线程数量,提高任务处理效率,以减少数据池中积压的任务数据的总量。
此外,考虑到客户端上多开的线程的数量通常会存在限制,且过多的任务执行线程也会占用大量的本地资源(如内存资源、CPU(Center Process Unit,中央处理单元)等资源),因此,可以预先设置多开线程的最大数量(本文中称为最大多开线程数)。
示例性的,客户端可以监控数据池中任务数据的总量,当客户端确定数据池中的任务数据的总量达到第一阈值时,判断当前任务执行线程数量是否达到最大多开线程数。
若未达到,则客户端可以增加任务执行线程数量。
需要说明的是,客户端增加任务执行线程数量时,需要保证增加后的任务执行线程的数量不超过最大多开线程数,且客户端增加任务执行线程数量之后,可以继续监控数据池中的任务数据的总量,并根据监控结果按照上述方式进行处理。
此外,若当前任务执行线程数量已达到最大多开线程数,则可以保持当前任务执行线程数量不变。
在一个示例中,上述双向通信方法还可以包括:
当数据池中的任务数据的总量达到第二阈值时,按照任务数据的权重从低到高的顺序,删除数据池中的任务数据,使数据池中剩余的任务数据的总量小于等于第二阈值;其中,第一阈值小于第二阈值。
示例性的,考虑到数据池中的任务数据的总量达到一定数量时,可能会影响设备的正常运行,此时,通过新增任务执行线程可能无法有效减少数据池中的数据总量,因而,可以设定另一个阈值(本文中称为第二阈值,第二阈值大于第一阈值),当数据池中的任务数据的总量达到该第一阈值时,可以触发客户端删除数据池中的任务数据,以减少数据池中积压的任务数据的总量。
示例性的,当客户端监控到数据池中的任务数据的总量达到第二阈值时,客户端可以按照任务数据的权重从低到高的顺序,删除数据池中的任务数据。
举例来说,当客户端监控到数据池中任务数据的总量达到第二阈值时,客户端可以删除数据池中保存的任务数据中权重最低的任务数据,并继续监控数据池中的任务数据总量,若数据池中任务数据的总量任大于等于第二阈值,则客户端可以继续删除数据池中保存的任务数据中权重最低的任务数据,直至数据池中剩余的任务数据的总量小于第二阈值。
在一个示例中,上述双向通信方法还包括:
基于本地资源利用情况调整第一阈值、第二阈值以及最大多开线程数。
示例性的,考虑到客户端的本地资源除了需要用于存储任务数据,并执行任务数据对应的任务之外,还会存在其他使用需求,因此,为了保证客户端具有足够的资源存储任务数据以及执行任务数据对应的任务,并避免任务数据存储以及任务执行占用过多资源,在设定上述第一阈值、第二阈值以及最大多开线程数时,可以根据本地资源利用情况进行设置,并且在设备运行过程中,可以基于本地资源利用情况对第一阈值、第二阈值以及最大多开线程数进行调整。
示例性的,本地资源利用情况可以包括但不限本地资源占用量或本地资源利用率等。
举例来说,以本地资源为内存资源为例,本地内存资源利用情况可以包括已占用的内存资源或内存资源利用率。
又举例来说,以本地资源为CPU资源为例,本地CPU资源利用情况可以包括已占用的CPU资源或CPU资源利用率。
在一个示例中,上述基于本地资源利用率调整第一阈值、第二阈值以及最大多开线程数,可以包括:
监控本地资源利用情况;
根据预设资源利用情况与最优配置值的对应关系,确定当前资源利用情况对应的目标最优配置值;其中,最优配置值包括第一阈值、第二阈值以及最大多开线程数的预设最优值;
若第一阈值、第二阈值以及最大多开线程数与目标最优配置值不一致,则将第一阈值、第二阈值以及最大多开线程数调整为与目标最优配置一致。
示例性的,为了保证客户端具有足够的资源存储任务数据以及执行任务数据对应的任务,并避免任务数据存储以及任务执行占用过多资源,可以预先设定资源利用情况与最优配置值(即第一阈值、第二阈值以及最大多开线程数的最优值)的对应关系。
例如,以资源利用情况为资源利用率为例,预设资源利用率与最优配置值的对应关系可以如表1所示:
表1、预设资源利用率与最优配置值的对应关系
资源利用率 | 第一阈值 | 第二阈值 | 最大多开线程数 |
0~20% | A1 | B1 | C1 |
20~40% | A2 | B2 | C2 |
… | … | … | … |
示例性的,A1<B1,A2<B2,A2<A1,B2<B1,C2小于C1。
示例性的,客户端可以监控本地资源利用情况,并根据预设资源利用情况与最优配置值的对应关系,确定当前资源利用情况对应的最优配置值(本文中称为目标最优配置值),并比较实际使用的第一阈值、第二阈值以及最大多开线程数与目标最优配置值。
若不一致,则将实际使用的第一阈值、第二阈值以及最大多开线程数调整为与目标最优配置值一致;否则,保持第一阈值、第二阈值以及最大多开线程数不变。
举例来说,以表1所示对应关系为例,假设本地资源利用率为本地内存资源利用率,且当前本地内存资源利用率为10%,当前实际使用的第一阈值为A2,第二阈值为B2,最大多开线程数为C2,则客户端可以确定其与最优配置值不一致,此时,客户端可以将第一阈值、第二阈值以及最大多开线程数分别调整为A1、B1以及C1。
需要说明的是,在本申请实施例中,也可以根据本地资源利用情况对第一阈值、第二阈值以及最大多开线程数中的部分进行调整,其具体实现在此不做赘述。
作为一种可能的实施方式,上述双向通信方法还可以包括:
监控目标进程的状态;其中,目标进程为双向通信连接对应的进程;
若目标进程的状态异常,则与服务端重新建立双向通信连接,直至连接建立成功,或连接建立失败的次数达到预设最大次数时,关闭连接。
示例性的,考虑到客户端与服务端建立WebSocket长连接后,可能会由于网络故障等原因造成WebSocket长连接中断,若客户端不能及时检测到该WebSocket长连接中断,可能会一直处于等待状态,因此,需要保证客户端能及时检测到WebSocket长连接的异常。
示例性的,客户端可以通过监控本地的WebSocket进程的状态来确定WebSocket长连接的状态。
当客户端监控到WebSocket进程状态异常时,客户端可以与服务端重新建立WebSocket长连接,直至连接建立成功。
示例性的,为了避免客户端一直发起重连空耗资源,可以设定连接建立失败的最大次数,当客户端与服务端建立连接失败的次数达到预设最大次数时,可以关闭连接。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体应用场景对本申请实施例提供的技术方案进行说明。
请参见图2A,为本申请实施例提供的一种双向通信系统的架构示意图,在该实施例中,以客户端为支持WebSocket(WS/WSS)协议的浏览器为例,服务端可以是单个服务器或多个服务器组成的服务器集群,该服务器集群可以统一对外提供接口服务和应用服务,如数据增加、删除、修改和查询功能。
如图2A所示,该双向通信系统可以包括服务端(单服务器或服务器集群)、API(Application Programming Interface,应用程序编程接口)网关、浏览器载体监控组件、浏览器(支持WebSocket协议)以及视图UI(User Interface,用户界面)。
需要说明的是,在本申请实施例中,双向通信系统中也可以不包括API网关,即浏览器直接与服务端建立连接,其系统架构示意图可以如图2B所示。
下文中以图2A所示的双向通信系统为例。
在该实施例中,API网关作为浏览器载体(如计算机或手机)与服务端的接口的中转站,可以保护服务端IP,防御网络攻击,对请求的接口进行均衡负载(在服务端为服务器集群的情况下)、信息的基本校验功能和接口权限校验功能。
浏览器载体监控组件具有监控浏览器载体的资源利用率(如内存使用率、CPU使用率等)、进程状态等功能。
视图UI可以兼容当前主流浏览器的可视化操作界面,对接浏览器的WebSocket服务,根据WebSocket返回的响应数据展示出相对应的UI界面,通过操作UI界面可以通过浏览器WebSocket向服务端返回操作信息。
在该实施例中,为了实现对服务端的保护,API网关可以提供一个获取服务接口地址的接口,浏览器可以通过该接口获取服务接口地址;API网关接收到浏览器发送的服务接口地址获取请求时,在返回服务接口地址之前需要进行必要的校验,校验通过后返回服务接口地址,其处理流程图可以如图2C所示。
此外,为了更好地保护服务端,API网关将服务接口地址返回给浏览器时,可以对服务接口地址进行一一映射,并将映射后的服务接口地址返回给浏览器。
例如,假设真实的服务接口地址为IP1,API网关将IP1映射为IP2,则API网关可以记录IP1与IP2的映射关系,并将IP2返回给浏览器。
在该实施例中,浏览器获取到服务接口地址时,可以基于该服务接口地址与服务端建立WebSocket长连接,其处理流程图可以如图2D所示。
浏览器与服务端成功建立WebSocket长连接之后,可以通过该WebSocket长连接向服务端发送需要请求的数据;服务端接收到该请求后,整理好相应的数据,并通过该WebSocket长连接发送给浏览器。
在该实施例中,为了避免在网络原因或者session(会话)过期等原因造成服务端中断WebSocket长连接时,浏览器无法感知该中断,导致浏览器一直处于等待状态;浏览器可以通过浏览器载体监控组件监控浏览器载体上的WebSocket进程状态;当监控到WebSocket进程状态异常时,可以重新与服务端建立WebSocket长连接,保证WebSocket长连接的正常连接。
示例性的,为了避免浏览器一直发起重复连接造成资源空耗,当连接建立失败的次数达到预设最大次数时,可以关闭连接。
在该实施例中,考虑到服务端向浏览器返回的任务数据的时间和频次是浏览器无法预估的,在有执行顺序需求的场景,可能会出现当前任务还未执行完成,浏览器又接收到新的任务数据,等当前任务处理完成时,可能已经接收到了多条任务的任务数据,造成任务数据的丢失或任务顺序错乱。
针对该问题,可以在浏览器载体上设置一个数据池,当浏览器接收到服务端发送的任务数据时,若该数据池中存在任务数据,或存在正在执行的任务,则浏览器根据接收到的任务数据的权重,将该任务数据保存至数据池;当浏览器执行完当前执行的任务时,可以从数据池中取出权重最高的任务数据,并执行对应的任务,其处理流程示意图可以如图2E所示。
在该实施例中,浏览器执行完当前任务时,可以对数据池进行检测,若数据池中存在任务数据,则取出当前数据池中权重最高的任务数据,执行对应任务,其处理流程示意图可以如图2F所示。
在该实施例中,考虑到受到内存和浏览器性能限制,当数据池中有大量任务数据堆积时,会对内存和浏览器造成很大的压力,进而导致内存泄露和浏览器崩溃。为应对该问题在数据池中任务数据达到一定数量时,可以根据一定规则删除部分未执行任务数据或者增加任务执行线程,已达到保证内存稳定和浏览器稳定。
示例性的,可以预先设置预警容量值(即上述第一阈值)和最大容量值(即上述第二阈值);当数据池中的任务数据的总量达到预警容量值时,触发浏览器增加任务执行线程,直至达到最大多开线程数;数据池中的任务数据的总量达到最大容量值时,触发浏览器删除数据池中权重最低的任务数据。
示例性的,由于不同的浏览器载体的载体配置以及可利用的资源可能不同的,若将预警最大值、容量最大值以及最大多开线程数设置为固定值会无法满足性能稳定和资源利用率高的最佳配置。因此,可以通过浏览器载体监控组件,监控当前浏览器载体的资源利用率,如CPU和内存利用率,并以此为依据,设置最佳的预警最大值、容量最大值以及最大多开线程数,保证浏览器不会崩溃而且能得到更好的浏览器利用率,其处理流程示意图可以如图2G所示。
本申请实施例中,通过设置数据池,当客户端通过与服务端之间的双向通信连接接收服务端发送的目标任务数据时,若数据池中存在任务数据,或/和,存在正在执行的任务,则将目标任务数据与目标任务数据的权重关联保存至所述数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;若所述数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务,避免了服务端发送的任务数据打断当前正在执行的任务,并提高了任务执行顺序的可控性。
以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:
请参见图3,为本申请实施例提供的一种双向通信装置的结构示意图,如图3所示,该双向通信装置可以包括:
接收单元310,被配置为通过双向通信连接接收服务端发送的目标任务数据;
判断单元320,被配置为判断数据池中是否存在任务数据,以及,是否存在正在执行的任务;
保存单元330,被配置为若数据池中存在任务数据,或/和,存在正在执行的任务,则将目标任务数据与目标任务数据的权重关联保存至数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;
执行单元340,被配置为若数据池中不存在任务数据,且不存在正在执行的任务,则执行目标任务数据对应的任务。
作为一种可能的实施方式,判断单元320,还被配置为当数据池中的任务数据的总量达到第一阈值时,判断当前任务执行线程数量是否达到最大多开线程数;
如图4所示,双向通信装置还包括:
控制单元350,被配置为若当前任务执行线程数量未达到最大多开线程数,则增加任务执行线程数量;其中,增加后的任务执行线程数量不超过最大多开线程数。
作为一种可能的实施方式,控制单元350,还被配置为当数据池中的任务数据的总量达到第二阈值时,按照任务数据的权重从低到高的顺序,删除数据池中的任务数据,使数据池中剩余的任务数据的总量小于第二阈值;其中,第一阈值小于第二阈值。
作为一种可能的实施方式,控制单元350,还被配置为基于本地资源利用率调整第一阈值、第二阈值以及最大多开线程数。
作为一种可能的实施方式,如图5所示,双向通信装置还包括:
第一监控单元360,被配置为监控本地资源利用情况;
控制单元350,具体被配置为根据预设资源利用情况与最优配置值的对应关系,确定当前资源利用情况对应的目标最优配置值;其中,最优配置值包括第一阈值、第二阈值以及最大多开线程数的预设最优值;若第一阈值、第二阈值以及最大多开线程数与目标最优配置值不一致,则将第一阈值、第二阈值以及最大多开线程数调整为与目标最优配置一致。
作为一种可能的实施方式,如图6所示,双向通信装置还包括:
第二监控单元370,被配置为监控目标进程的状态;其中,目标进程为双向通信连接对应的进程;
连接建立单元380,被配置为若目标进程的状态异常,则与服务端重新建立双向通信连接,直至连接建立成功,或连接建立失败的次数达到预设最大次数时,关闭连接。
请参见图7,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可以包括处理器701、通信接口702、存储器703和通信总线704。处理器701、通信接口702以及存储器703通过通信总线704完成相互间的通信。其中,存储器703上存放有计算机程序;处理器701可以通过执行存储器703上所存放的程序,执行上文描述的双向通信方法。
本文中提到的存储器703可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器702可以是:RAM(Radom AccessMemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
本申请实施例还提供了一种存储有计算机程序的机器可读存储介质,例如图7中的存储器703,所述计算机程序可由图7所示电子设备中的处理器701执行以实现上文中描述的双向通信方法。
本申请实施例还提供了一种计算机程序,存储于机器可读存储介质,例如图7中的存储器703,并且当处理器执行该计算机程序时,促使处理器701执行上文中描述的双向通信方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (14)
1.一种双向通信方法,其特征在于,应用于双向通信系统中的客户端,所述双向通信系统中还包括服务端,所述客户端与所述服务端之间建立有双向通信连接,并基于所述双向通信连接进行异步通信,所述方法包括:
通过所述双向通信连接接收所述服务端发送的目标任务数据;
若数据池中存在任务数据,或/和,存在正在执行的任务,则将所述目标任务数据与所述目标任务数据的权重关联保存至所述数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;
若所述数据池中不存在任务数据,且不存在正在执行的任务,则执行所述目标任务数据对应的任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述数据池中的任务数据的总量达到第一阈值时,判断当前任务执行线程数量是否达到最大多开线程数;
若未达到,则增加任务执行线程数量;其中,增加后的任务执行线程数量不超过所述最大多开线程数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述数据池中的任务数据的总量达到第二阈值时,按照任务数据的权重从低到高的顺序,删除所述数据池中的任务数据,使所述数据池中剩余的任务数据的总量小于所述第二阈值;其中,所述第一阈值小于所述第二阈值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
基于本地资源利用情况调整所述第一阈值、所述第二阈值以及所述最大多开线程数。
5.根据权利要求4所述的方法,其特征在于,所述基于本地资源利用情况调整所述第一阈值、所述第二阈值以及所述最大多开线程数,包括:
监控本地资源利用情况;
根据预设的资源利用情况与最优配置值的对应关系,确定当前资源利用情况对应的目标最优配置值;其中,最优配置值包括第一阈值、第二阈值以及最大多开线程数的预设最优值;
若所述第一阈值、所述第二阈值以及所述最大多开线程数与所述目标最优配置值不一致,则将所述第一阈值、所述第二阈值以及所述最大多开线程数调整为与所述目标最优配置一致。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监控目标进程的状态;其中,所述目标进程为所述双向通信连接对应的进程;
若所述目标进程的状态异常,则与所述服务端重新建立双向通信连接,直至连接建立成功,或连接建立失败的次数达到预设最大次数时,关闭连接。
7.一种双向通信装置,其特征在于,应用于双向通信系统中的客户端,所述双向通信系统中还包括服务端,所述客户端与所述服务端之间建立有双向通信连接,并基于所述双向通信连接进行异步通信,所述装置包括:
接收单元,被配置为通过所述双向通信连接接收所述服务端发送的目标任务数据;
判断单元,被配置为判断数据池中是否存在任务数据,以及,是否存在正在执行的任务;
保存单元,被配置为若数据池中存在任务数据,或/和,存在正在执行的任务,则将所述目标任务数据与所述目标任务数据的权重关联保存至所述数据池;其中,数据池中的任务数据的权重越高,任务数据对应的任务被执行的优先级越高;
执行单元,被配置为若所述数据池中不存在任务数据,且不存在正在执行的任务,则执行所述目标任务数据对应的任务。
8.根据权利要求7所述的装置,其特征在于,
所述判断单元,还被配置为当所述数据池中的任务数据的总量达到第一阈值时,判断当前任务执行线程数量是否达到最大多开线程数;
所述装置还包括:
控制单元,被配置为若当前任务执行线程数量未达到最大多开线程数,则增加任务执行线程数量;其中,增加后的任务执行线程数量不超过所述最大多开线程数。
9.根据权利要求8所述的装置,其特征在于,
所述控制单元,还被配置为当所述数据池中的任务数据的总量达到第二阈值时,按照任务数据的权重从低到高的顺序,删除所述数据池中的任务数据,使所述数据池中剩余的任务数据的总量小于所述第二阈值;其中,所述第一阈值小于所述第二阈值。
10.根据权利要求9所述的装置,其特征在于,
所述控制单元,还被配置为基于本地资源利用情况调整所述第一阈值、所述第二阈值以及所述最大多开线程数。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第一监控单元,被配置为监控本地资源利用情况;
所述控制单元,具体被配置为根据预设资源利用情况与最优配置值的对应关系,确定当前资源利用情况对应的目标最优配置值;其中,最优配置值包括第一阈值、第二阈值以及最大多开线程数的预设最优值;若所述第一阈值、所述第二阈值以及所述最大多开线程数与所述目标最优配置值不一致,则将所述第一阈值、所述第二阈值以及所述最大多开线程数调整为与所述目标最优配置一致。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二监控单元,被配置为监控目标进程的状态;其中,所述目标进程为所述双向通信连接对应的进程;
连接建立单元,被配置为若所述目标进程的状态异常,则与所述服务端重新建立双向通信连接,直至连接建立成功,或连接建立失败的次数达到预设最大次数时,关闭连接。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一项所述的方法。
14.一种机器可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911013499.9A CN112698927A (zh) | 2019-10-23 | 2019-10-23 | 双向通信方法、装置、电子设备及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911013499.9A CN112698927A (zh) | 2019-10-23 | 2019-10-23 | 双向通信方法、装置、电子设备及机器可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112698927A true CN112698927A (zh) | 2021-04-23 |
Family
ID=75505186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911013499.9A Pending CN112698927A (zh) | 2019-10-23 | 2019-10-23 | 双向通信方法、装置、电子设备及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698927A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806175A (zh) * | 2021-09-22 | 2021-12-17 | 杭州遥望网络科技有限公司 | 一种终端控制方法、装置、电子设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026424A (en) * | 1998-02-23 | 2000-02-15 | Hewlett-Packard Company | Method and apparatus for switching long duration tasks from synchronous to asynchronous execution and for reporting task results |
CN103365708A (zh) * | 2012-04-06 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 任务调度方法和装置 |
CN103634224A (zh) * | 2012-08-22 | 2014-03-12 | 深圳市腾讯计算机系统有限公司 | 网络中数据传输的方法和系统 |
EP2936310A1 (en) * | 2012-12-18 | 2015-10-28 | Microsoft Technology Licensing, LLC | Application intelligent request management based on server health and client information |
CN106844055A (zh) * | 2017-01-25 | 2017-06-13 | 北京百分点信息科技有限公司 | 一种任务的执行方法和装置 |
CN107122237A (zh) * | 2017-04-27 | 2017-09-01 | 珠海格力电器股份有限公司 | 数据通信方法及装置 |
CN107220033A (zh) * | 2017-07-05 | 2017-09-29 | 百度在线网络技术(北京)有限公司 | 用于控制线程池中线程数量的方法和装置 |
CN107689968A (zh) * | 2016-08-03 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 任务的处理系统、方法及装置 |
CN108009010A (zh) * | 2017-12-01 | 2018-05-08 | 携程旅游信息技术(上海)有限公司 | 瘦客户端的管理装置、系统、方法、电子设备、存储介质 |
CN109558224A (zh) * | 2018-10-26 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 任务推送方法、装置、计算机设备及存储介质 |
-
2019
- 2019-10-23 CN CN201911013499.9A patent/CN112698927A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026424A (en) * | 1998-02-23 | 2000-02-15 | Hewlett-Packard Company | Method and apparatus for switching long duration tasks from synchronous to asynchronous execution and for reporting task results |
CN103365708A (zh) * | 2012-04-06 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 任务调度方法和装置 |
CN103634224A (zh) * | 2012-08-22 | 2014-03-12 | 深圳市腾讯计算机系统有限公司 | 网络中数据传输的方法和系统 |
EP2936310A1 (en) * | 2012-12-18 | 2015-10-28 | Microsoft Technology Licensing, LLC | Application intelligent request management based on server health and client information |
CN107689968A (zh) * | 2016-08-03 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 任务的处理系统、方法及装置 |
CN106844055A (zh) * | 2017-01-25 | 2017-06-13 | 北京百分点信息科技有限公司 | 一种任务的执行方法和装置 |
CN107122237A (zh) * | 2017-04-27 | 2017-09-01 | 珠海格力电器股份有限公司 | 数据通信方法及装置 |
CN107220033A (zh) * | 2017-07-05 | 2017-09-29 | 百度在线网络技术(北京)有限公司 | 用于控制线程池中线程数量的方法和装置 |
CN108009010A (zh) * | 2017-12-01 | 2018-05-08 | 携程旅游信息技术(上海)有限公司 | 瘦客户端的管理装置、系统、方法、电子设备、存储介质 |
CN109558224A (zh) * | 2018-10-26 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 任务推送方法、装置、计算机设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806175A (zh) * | 2021-09-22 | 2021-12-17 | 杭州遥望网络科技有限公司 | 一种终端控制方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200029110A1 (en) | Bandwidth Control Method and Apparatus, and Device | |
US8086714B2 (en) | Load balancing system | |
WO2010100859A1 (ja) | 分散システム | |
KR101363167B1 (ko) | 개선된 분산형 커널 운영 시스템 | |
US10230644B2 (en) | Distributed API proxy system and apparatus and method for managing traffic in such system | |
CN110247856B (zh) | 服务器资源释放方法和装置 | |
US20110173319A1 (en) | Apparatus and method for operating server using virtualization technique | |
US9800504B2 (en) | Methods, systems, and computer readable media diverting diameter traffic from an overloaded policy and charging rules function (PCRF) | |
CN106713378B (zh) | 实现多个应用服务器提供服务的方法和系统 | |
CN111147573A (zh) | 一种数据传输的方法和装置 | |
JP2016051446A (ja) | 計算機システム、計算機、負荷分散方法及びそのプログラム | |
JP2020080059A (ja) | 評価装置、評価方法および評価プログラム | |
US10645183B2 (en) | Redirection of client requests to multiple endpoints | |
CN116233018A (zh) | 报文处理方法、装置、电子设备及存储介质 | |
CN112698927A (zh) | 双向通信方法、装置、电子设备及机器可读存储介质 | |
EP3593516B1 (en) | Method and control node for managing cloud resources in a communications network | |
CN112416594A (zh) | 一种微服务分配方法、电子设备和计算机存储介质 | |
CN112165495B (zh) | 一种基于超融合架构防DDoS攻击方法、装置及超融合集群 | |
US20210004308A1 (en) | Data processing method and system | |
JP6233141B2 (ja) | データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント及びデータベースクライアントプログラム | |
CN113220491B (zh) | 远程调用自适应负载均衡方法、装置、系统及计算机装备 | |
CN114679412B (zh) | 一种流量向业务节点的转发方法、装置、设备及介质 | |
CN111049754B (zh) | 数据通信方法、装置、设备和计算机可读存储介质 | |
CN114422333B (zh) | 基于消息中间件背压的消息消费的方法和系统 | |
CN116431074A (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 |