CN108306926B - 一种车联网设备网关业务数据的推送方法和装置 - Google Patents
一种车联网设备网关业务数据的推送方法和装置 Download PDFInfo
- Publication number
- CN108306926B CN108306926B CN201711238132.8A CN201711238132A CN108306926B CN 108306926 B CN108306926 B CN 108306926B CN 201711238132 A CN201711238132 A CN 201711238132A CN 108306926 B CN108306926 B CN 108306926B
- Authority
- CN
- China
- Prior art keywords
- data receiving
- thread
- data
- service data
- receiving thread
- 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.)
- Active
Links
Images
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- 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/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Mobile Radio Communication Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明实施例提供了一种车联网设备网关业务数据的推送方法和装置,所述方法包括:建立车联网设备与所述数据接收线程之间的链接;采用所述数据接收线程组接收由所述车联网设备发送的业务数据;通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***,从而避免了车辆网设备在接入网关建立链接时造成数据接收线程组出现惊群现象的,进一步来说,也避免了在车联网设备接入网关的过程中,某个环节出现延迟抖动时影响整个流程处理,更进一步来说,还避免线程组间用锁来实现数据交换,加快流程处理速度,进而提高了单个网关的处理速度,降低了车联网的制造成本。
Description
技术领域
本发明涉及数据传输技术领域,特别是涉及一种车联网设备网关业务数据的推送方法和一种车联网设备网关业务数据的推送装置。
背景技术
车联网(Internet of Vehicles)是由车辆位置、速度和路线等信息构成的巨大交互网络。通过GPS、RFID、传感器、摄像头图像处理等装置,车辆可以完成自身环境和状态信息的采集;通过互联网技术,所有的车辆可以将自身的各种信息传输汇聚到中央处理器;通过计算机技术,这些大量车辆的信息可以被分析和处理,从而计算出不同车辆的最佳路线、及时汇报路况和安排信号灯周期。
随着车联网的快速发展,大量车联网设备在接入网关时,对网关造成了很大的压力,这是因为网关处理流程一般都是先接收并解析由车联网设备所发送的数据,再将数据转发到分布式发布订阅消息***,如果采用单线程来完成整个数据传输流程,在任何一个环节出现延迟时,都将影响整个数据传输流程的处理速度,而在大量的终端设备接入网关时,虽然可以通过使用LVS对网关做集群进行横向扩展来分散单个网关的访问压力,但如若不提高单个网关的处理速度,还是无法减少集群数量,最终导致车联网的造价十分高昂。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种车联网设备网关业务数据的推送方法和相应的一种车联网设备网关业务数据的推送装置。
为了解决上述问题,本发明实施例公开了一种车联网设备网关业务数据的推送方法,其特征在于,所述网关包括数据接收线程组、数据推送线程组,以及,双缓存组模,所述网关具有与其相连接的分布式发布订阅消息***,所述数据接收线程组包括数据接收线程,所述方法包括:
建立车联网设备与所述数据接收线程之间的链接;
采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***。
优选地,所述数据接收线程具有用于显示当前已与其建立链接的车联网设备数量的线程连接数,以及,竞争锁,所述建立车联网设备与所述数据接收线程之间的链接的步骤包括:
监听所述线程连接数,并判断所述线程连接数是否大于预设阈值;
若是,则继续接收当前已与所述数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据;
若否,则通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中。
优选地,所述车联网设备具有套接字listenfd,所述拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据的步骤包括:
监听所述套接字listenfd,并判断所述套接字listenfd是否存在于所述数据接收线程组的多路复用接口EPOLL中;
若是,则将其从所述数据接收线程组的多路复用接口EPOLL中移除,并标记所述套接字listenfd的标志位holdID,返回判断所述线程连接数是否大于预设阈值的步骤;
若否,则返回判断所述线程连接数是否大于预设阈值的步骤。
优选地,所述通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中的步骤包括:
采用所述竞争锁锁定当前已与所述数据接收线程建立链接的车联网设备,并判断是否锁定成功;
若否,则返回判断所述线程连接数是否大于预设阈值的步骤;
若是,则获取所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;
判断所述当前已与所述数据接收线程建立链接的车车联网设备的套接字listenfd的标志位holdID的值是否大于-1;
若是,则解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,并返回判断所述线程连接数是否大于预设阈值的步骤;
若否,则标记所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,返回判断所述线程连接数是否大于预设阈值的步骤。
优选地,所述双缓存组模包括第一缓存区域,和,第二缓存区域,所述通过所述双缓存组模将所述业务数据发送至所述数据推送线程组的步骤包括:
当采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;
若是,则将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;
若否,则在下次写入所述数据业务时,采用所述第二缓存区域写入数据业务。
另一方面,本发明实施例公开了一种车联网设备网关业务数据的推送装置,其特征在于,所述网关包括数据接收线程组、数据推送线程组,以及,双缓存组模,所述网关具有与其相连接的分布式发布订阅消息***,所述数据接收线程组包括数据接收线程,所述装置包括:
链接建立模块,用于建立车联网设备与所述数据接收线程之间的链接;
业务数据接收模块,用于采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
业务数据发送模块,用于通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
业务数据推送模块,用于采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***。
优选地,所述数据接收线程具有用于显示当前已与其建立链接的车联网设备数量的线程连接数,以及,竞争锁,所述链接建立模块包括:
阈值判断子模块,用于监听所述线程连接数,并判断所述线程连接数是否大于预设阈值;若是,则调用业务数据接收子模块;若否,则调用车联网设备锁定子模块;
业务数据接收子模块,用于继续接收当前已与所述数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据;
车联网设备锁定子模块,用于通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中。
优选地,所述车联网设备具有套接字listenfd,所述业务数据接收子模块包括:
套接字监听单元,用于监听所述套接字listenfd,并判断所述套接字listenfd是否存在于所述数据接收线程组的多路复用接口EPOLL中;若是,则调用套接字移除单元;若否,则调用第一返回单元;
套接字移除单元,用于将其从所述数据接收线程组的多路复用接口EPOLL中移除,并标记所述套接字listenfd的标志位holdID,返回判断所述线程连接数是否大于预设阈值的步骤;
第一返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤。
优选地,所述车联网设备锁定子模块包括:
车联网设备锁定单元,用于采用所述竞争锁锁定当前已与所述数据接收线程建立链接的车联网设备,并判断是否锁定成功;若否,则调用第二返回单元;若是,则调用套接字获取单元;
第二返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤;
套接字获取单元,用于获取所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;
套接字判断单元,用于判断所述当前已与所述数据接收线程建立链接的车车联网设备的套接字listenfd的标志位holdID的值是否大于-1;若是,则调用解除锁定单元;若否,则调用套接字标记单元;
解除锁定单元,用于解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,并返回判断所述线程连接数是否大于预设阈值的步骤;
套接字标记单元,用于标记所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,返回判断所述线程连接数是否大于预设阈值的步骤。
优选地,所述双缓存组模包括第一缓存区域,和,第二缓存区域,所述业务数据发送模块包括:
待发送业务数据判断子模块,用于在采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;若是,则调用待发送业务数据发送子模块;若否,则调用数据业务写入子模块;
待发送业务数据发送子模块,用于将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;
数据业务写入子模块,用于在下次写入所述数据业务时,采用所述第二缓存区域写入数据业务。
本发明实施例包括以下优点:
本发明实施例通过将网关拆分为数据接收线程组和数据推送线程组两个组模,通过负载平衡的方式建立车联网设备和数据接收线程之间的链接后,采用数据接收线程组接收由车联网设备发送的业务数据,再通过双缓存组模将业务数据发送至数据推送线程组,最后由数据推送线程组将业务数据推送至下游分布式发布订阅消息***,从而避免了车辆网设备在接入网关建立链接时造成数据接收线程组出现惊群现象的,进一步来说,也避免了在车联网设备接入网关的过程中,某个环节出现延迟抖动时影响整个流程处理,更进一步来说,还避免线程组间用锁来实现数据交换,加快流程处理速度,进而提高了单个网关的处理速度,降低了车联网的制造成本。
附图说明
图1是本发明的一种车联网设备网关业务数据的推送方法实施例的步骤流程图;
图2是本发明的一种应用本发明实施例的示例的步骤流程图;
图3是本发明的另一种应用本发明实施例的示例的步骤流程图;
图4是本发明的一种车联网设备网关业务数据的推送装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,引入流水线式处理,将网关的工作线程分为数据接收线程组和数据推送线程组来避免因短暂延时而影响网关的处理能力,通过对业务流水线化避免某个环节延时抖动影响整个流程处理,并引用双缓存技术避免线程组间用锁来实现数据交换,加快流程处理速度,同时,对车联网设备在接入网关时进行负载均衡,避免出现惊群现象,并使每个线程接收的连接数大致相等以实现线程间的负载均衡,从而提高单个网关的处理速度,进而降低车联网的制造成本。
参照图1,示出了本发明的一种车联网设备网关业务数据的推送方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,建立车联网设备与所述数据接收线程之间的链接;
在实际应用中,本发明实施例可以应用在移动终端中,例如,手机、平板电脑、个人数字助理、穿戴设备(如手环、眼镜、手表等)等等。
在具体实现中,本发明实施例的网关可以包括数据接收线程组和数据推送线程组,且网关可以具有用于显示当前已与其建立链接的车联网设备数量的线程连接数,而新数据接收线程组中可以包括多个数据接收线程,另外,在本发明实施例中,车联网设备可以具有套接字listenfd。
一般情况下,在车联网设备接入网关时,由于数据接收线程组ReadThread组内的线程都有对监听套接字进行EPOLL_IN事件处理,所以在有新的车联网设备接入时,数据接收线程组ReadThread组内所有线程都将被唤醒,但事实上最终只会有一个线程成功接受该车联网设备,这样其他线程因接受失败而白白被唤醒,导致在数据接收线程组ReadThread组内出现惊群现象,另外,由于在数据接收线程组ReadThread组内的各线程之间的线程连接数相差甚远,从而导致有些线程负荷过载,另一些则被闲置,进而导致资源被浪费。
在本发明的一个优选实施例中,可以通过如下方式建立车联网设备与数据接收线程之间的链接:
监听线程连接数,并判断线程连接数是否大于预设阈值;若是,则继续接收当前已与数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与数据接收线程建立链接的车联网设备所发送的业务数据;若否,则通过竞争锁建立车联网设备与数据接收线程之间的链接,并将链接保存于数据接收线程中。
在实际应用中,本发明实施例的阈值可以设定为数据接收线程组ReadThread组平均连接数的20%。
在具体实现中,本发明实施例如果在当前线程的连接数大于数据接收线程组ReadThread组平均连接数的20%时,则该线程不再接受新的连接,此时,而那些已经连接了的并且由该线程管理的套接字listenfd所发送的数据还是继续由该线程管理,即,在过载的情况下拒绝新的连接,已有的连接继续由该线程管理,而如果在当前线程的连接数小于数据接收线程组ReadThread组平均连接数的20%时,则可以通过锁定当前已与网关建立链接的车联网设备来将该车联网设备与网关之间的链接保存于所述数据接收线程组中。
在本发明一个更为优选的实施例中,可以通过如下方式拒绝接收未与数据接收线程建立链接的车联网设备所发送的业务数据:
监听套接字listenfd,并判断套接字listenfd是否存在于数据接收线程组的多路复用接口EPOLL中;若是,则将其从数据接收线程组的多路复用接口EPOLL中移除,并标记套接字listenfd的标志位holdID,返回判断线程连接数是否大于预设阈值的步骤;若否,则返回判断线程连接数是否大于预设阈值的步骤。
在实际应用中,本发明实施例如果在当前线程的连接数大于数据接收线程组ReadThread组平均连接数的20%时,如果监听到车联网设备的套接字listenfd存在于该线程本地的EPOLL,则将该套接字listenfd移除出去,并将套接字listenfd的标志位holdID置为-1,如果不在则返回判断线程连接数是否大于预设阈值的步骤。
在本发明另一个更为优选的实施例中,可以通过如下方式通过竞争锁建立车联网设备与数据接收线程之间的链接,并将链接保存于数据接收线程中:
采用所述竞争锁锁定当前已与数据接收线程建立链接的车联网设备,并判断是否锁定成功;若否,则返回判断线程连接数是否大于预设阈值的步骤;若是,则获取当前已与数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;判断当前已与数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID的值是否大于-1;若是,则解除对当前已与数据接收线程建立链接的车联网设备的锁定,并返回判断线程连接数是否大于预设阈值的步骤;若否,则标记当前已与数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除对当前已与数据接收线程建立链接的车联网设备的锁定,在解除对当前已与数据接收线程建立链接的车联网设备的锁定后,返回判断线程连接数是否大于预设阈值的步骤。
在具体实现中,本发明实施例如果在当前线程的连接数小于数据接收线程组ReadThread组平均连接数的20%时,那么第一步,该线程先尝试去对车联网设备的接受互斥命令accept_mutex加锁,如果加锁失败,表明此时已有其他线程将该车联网设备的套接字listenfd加入至所述其他线程的多路复用接口EPOLL中,该则线程返回判断线程连接数是否大于预设阈值的步骤,在下一次执行负载均衡loadBalance时再尝试对接受互斥命令accept_mutex加锁,如果加锁成功,那么判断holdID是否大于-1,如果大于则表明此时该车联网设备的套接字listenfd已经在其他线程的EPOLL中,那么则释放锁并返回判断所述线程连接数是否大于预设阈值的步骤,如果小于-1则表明此时该车联网设备的套接字listenfd不在其他线程的EPOLL中,这时,可以将该车联网设备套接字listenfd加入到该线程的EPOLL中并将holdID设置为该线程的ID,在完成对车联网设备holdID的设置后,释放锁并返回判断所述线程连接数是否大于预设阈值的步骤,即,车联网设备的套接字listenfd在哪个线程的多路复用接口EPOLL中,就由哪个线程来接收新的链接。
在实际应用中,本发明实施例的多路复用接口EPOLL可以是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本。
为使本领域技术人员更好的理解本发明,下面是本发明实施例提供一个具体的参考示例:
假设有在一个读线程组中有4个ReadThread线程来处理设备的接入及数据接收,那么则先申请1个全局INT型长度为4的数组变量szConn,用来保存每个线程当前的连接数,ReadThread0写szConn[0],ReadThread3写szConn[3],szConn四个单元数据之和即为当前网关的总连接数,记为sum(szConn)。然后再申请一个volatile的INT型全局变量holdID,用来记录当前已将套接字listenfd加入到多路复用接口EPOLL的线程ID。
如图2所示,让ReadThread通过一个while循环周期性地对本线程执行负载均衡loadBalance和doWork操作,负载均衡loadBalance是为避免出现惊群现象而设计的函数,doWork用于处理设备的接入、退出、数据解包、数据推送到双缓冲等操作,设备接入时当前线程连接数加1,退出时减1。
如图3所示,在建立车联网设备与所述网关之间的链接的过程中,可以通过如下流程实现数据接收线程组负载均衡:
判断本线程连接数是否大于预设阀值,如果小于则执行流程一,如果大于则执行流程二。阀值定义为超过平均连接数的20%,即threshold=(sum(szConn)/4)*(1+20%)。
流程一,如果尝试加锁返回结果不为0则立即返回,此时表明有线程正在对该车联网设备的套接字listenfd进行处理,若返回结果为0,则判断holdID是否大于-1,如果大于则表明该车联网设备的套接字listenfd已被holdID线程加入到了EPOLL中,此时直接解锁并返回,若结果≤-1则将该车联网设备的套接字listenfd加入到本线程的EPOLL中,并将holdID置为本线程ID,然后解锁并返回。
流程二,判断listenfd是否在本地EPOLL中,若是则将该车联网设备的套接字listenfd从本地EPOLL中移出,并设置holdID=-1,表明当前没有线程对listenfd进行处理。若否,则直接返回,此时表明当前线程已超过连接平均值,需要等到阀值以下才能继续接收新的连接。
当然,上述示例仅作为参考示例,本领域技术人员还可以通过其他方式实现数据接收线程组负载均衡,对此本申请不作限制。
这样,通过同一时刻只有一个readThread在自己的EPOLL中处理监听套接字,可以避免惊群现象的发生,同时,当线程处理的连接数大于阀值时通过将监听套接字移出本地EPOLL,拒绝接受更多的连接,直到小于阀值为止,可以使得各线程处理的连接数大致相等。
步骤102,采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
在具体实现中,本发明实施例可以采用数据接收线程组接收由车联网设备发送的业务数据。
步骤103,通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
在具体实现中,本发明实施例的网关可以包括双缓存组模,其中,双缓存组模可以包括第一缓存区域以及第二缓存区域:
在本发明实施例中,可以通过如下方式通过双缓存组模将业务数据发送至数据推送线程组:
当采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;若是,则将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;若否,则在下次写入所述数据业务时,采用所述第二缓存区域写入数据业务。
例如,ReadThread与PushThread通过双缓存进行数据交换,避免用锁,以提升网关处理速度,具体做法是假设有B1和B2两个缓存,当ReadThread在写B1时,可以先判断B2中是否存在待发送业务数据,若是,则PushThread将B2标记为读缓存区域,并将B2中的待发送业务数据发送至下游分布式发布订阅消息***,发送完成后将B2中的待发送业务数据清空;若否,即,判断B2为空时,则将B2设置为写缓存区域,将B1标记为读缓存区域,当完成对B1写入时,将B1中的待发送业务数据发送至下游分布式发布订阅消息***,并下次将写入数据时,将业务数据写入B2中。这样,通过读写不同的Buffer(缓存)避免锁开销来提升线程的处理速度。
步骤104,采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***。
在实际应用中,网关可以具有与其相连接的下游分布式发布订阅消息***,并可以采用数据推送线程组将业务数据推送至下游分布式发布订阅消息***。
本发明实施例通过将网关拆分为数据接收线程组和数据推送线程组两个组模,通过负载平衡的方式建立车联网设备和数据接收线程之间的链接后,采用数据接收线程组接收由车联网设备发送的业务数据,再通过双缓存组模将业务数据发送至数据推送线程组,最后由数据推送线程组将业务数据推送至下游分布式发布订阅消息***,从而避免了车辆网设备在接入网关建立链接时造成数据接收线程组出现惊群现象的,进一步来说,也避免了在车联网设备接入网关的过程中,某个环节出现延迟抖动时影响整个流程处理,更进一步来说,还避免线程组间用锁来实现数据交换,加快流程处理速度,进而提高了单个网关的处理速度,降低了车联网的制造成本。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种车联网设备网关业务数据的推送装置实施例的结构框图,具体可以包括如下模块:
链接建立模块201,用于建立车联网设备与所述数据接收线程之间的链接;
业务数据接收模块202,用于采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
业务数据发送模块203,用于通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
业务数据推送模块204,用于采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***。
在本发明一个优选实施例中,所述链接建立模块201还可以包括如下子模块:
阈值判断子模块,用于监听所述线程连接数,并判断所述线程连接数是否大于预设阈值;若是,则调用业务数据接收子模块;若否,则调用车联网设备锁定子模块;
业务数据接收子模块,用于继续接收当前已与所述数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据;
车联网设备锁定子模块,用于通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中。
在本发明一个优选实施例中,所述业务数据接收子模块还可以包括如下单元:
套接字监听单元,用于监听所述套接字listenfd,并判断所述套接字listenfd是否存在于所述数据接收线程组的多路复用接口EPOLL中;若是,则调用套接字移除单元;若否,则调用第一返回单元;
套接字移除单元,用于将其从所述数据接收线程组的多路复用接口EPOLL中移除,并标记所述套接字listenfd的标志位holdID,返回判断所述线程连接数是否大于预设阈值的步骤;
第一返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤。
在本发明一个优选实施例中,所述车联网设备锁定子模块还可以包括如下单元:
车联网设备锁定单元,用于采用所述竞争锁锁定当前已与所述数据接收线程建立链接的车联网设备,并判断是否锁定成功;若否,则调用第二返回单元;若是,则调用套接字获取单元;
第二返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤;
套接字获取单元,用于获取所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;
套接字判断单元,用于判断所述当前已与所述数据接收线程建立链接的车车联网设备的套接字listenfd的标志位holdID的值是否大于-1;若是,则调用解除锁定单元;若否,则调用套接字标记单元;
解除锁定单元,用于解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,并返回判断所述线程连接数是否大于预设阈值的步骤;
套接字标记单元,用于标记所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,返回判断所述线程连接数是否大于预设阈值的步骤。
在本发明一个优选实施例中,所述业务数据发送模块203还可以包括如下子模块:
待发送业务数据判断子模块,用于在采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;若是,则调用待发送业务数据发送子模块;若否,则调用数据业务写入子模块;
待发送业务数据发送子模块,用于将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;
数据业务写入子模块,用于在下次写入所述数据业务时,采用所述第二缓存区域写入数据业务。
本发明实施例通过将网关拆分为数据接收线程组和数据推送线程组两个组模,通过负载平衡的方式建立车联网设备和数据接收线程之间的链接后,采用数据接收线程组接收由车联网设备发送的业务数据,再通过双缓存组模将业务数据发送至数据推送线程组,最后由数据推送线程组将业务数据推送至下游分布式发布订阅消息***,从而避免了车辆网设备在接入网关建立链接时造成数据接收线程组出现惊群现象的,进一步来说,也避免了在车联网设备接入网关的过程中,某个环节出现延迟抖动时影响整个流程处理,更进一步来说,还避免线程组间用锁来实现数据交换,加快流程处理速度,进而提高了单个网关的处理速度,降低了车联网的制造成本。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种车联网设备网关业务数据的推送方法和一种车联网设备网关业务数据的推送装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种车联网设备网关业务数据的推送方法,其特征在于,所述网关包括数据接收线程组、数据推送线程组,以及,双缓存组模,所述网关具有与其相连接的分布式发布订阅消息***,所述数据接收线程组包括多个数据接收线程,所述方法包括:
建立车联网设备与所述数据接收线程之间的链接;
采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***;
其中,所述建立车联网设备与所述数据接收线程之间的链接的步骤包括:
监听与所述数据接收线程建立链接的车联网设备数量的线程连接数,并判断所述线程连接数是否大于预设阈值;所述预设阈值与所述数据接收线程组的平均连接数关联;
若是,则继续接收当前已与所述数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据;
其中,所述车联网设备具有套接字listenfd,所述拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据包括:
监听所述套接字listenfd,并判断所述套接字listenfd是否存在于所述数据接收线程组的多路复用接口EPOLL中;
若是,则将其从所述数据接收线程组的多路复用接口EPOLL中移除,并标记所述套接字listenfd的标志位holdID,返回判断所述线程连接数是否大于预设阈值的步骤;
若否,则返回判断所述线程连接数是否大于预设阈值的步骤。
2.根据权利要求1所述的方法,其特征在于,所述数据接收线程具有竞争锁,所述建立车联网设备与所述数据接收线程之间的链接的步骤包括:
若所述线程连接数小于或等于所述预设阈值,则通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中。
3.根据权利要求2所述的方法,其特征在于,所述通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中的步骤包括:
采用所述竞争锁锁定当前已与所述数据接收线程建立链接的车联网设备,并判断是否锁定成功;
若否,则返回判断所述线程连接数是否大于预设阈值的步骤;
若是,则获取所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;
判断所述当前已与所述数据接收线程建立链接的车车联网设备的套接字listenfd的标志位holdID的值是否大于-1;
若是,则解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,并返回判断所述线程连接数是否大于预设阈值的步骤;
若否,则标记所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,返回判断所述线程连接数是否大于预设阈值的步骤。
4.根据权利要求1所述的方法,其特征在于,所述双缓存组模包括第一缓存区域,和,第二缓存区域,所述通过所述双缓存组模将所述业务数据发送至所述数据推送线程组的步骤包括:
当采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;
若是,则将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;
若否,则在下次写入所述业务数据时,采用所述第二缓存区域写入业务数据。
5.一种车联网设备网关业务数据的推送装置,其特征在于,所述网关包括数据接收线程组、数据推送线程组,以及,双缓存组模,所述网关具有与其相连接的分布式发布订阅消息***,所述数据接收线程组包括多个数据接收线程,所述装置包括:
链接建立模块,用于建立车联网设备与所述数据接收线程之间的链接;
业务数据接收模块,用于采用所述数据接收线程组接收由所述车联网设备发送的业务数据;
业务数据发送模块,用于通过所述双缓存组模将所述业务数据发送至所述数据推送线程组;
业务数据推送模块,用于采用所述数据推送线程组将所述业务数据推送至所述分布式发布订阅消息***;
其中,所述链接建立模块包括:
阈值判断子模块,用于监听与所述数据接收线程建立链接的车联网设备数量的线程连接数,并判断所述线程连接数是否大于预设阈值;所述预设阈值与所述数据接收线程组的平均连接数关联;若是,则调用业务数据接收子模块;
业务数据接收子模块,用于继续接收当前已与所述数据接收线程建立链接的车联网设备所发送的业务数据,并拒绝接收未与所述数据接收线程建立链接的车联网设备所发送的业务数据;
其中,所述车联网设备具有套接字listenfd,所述业务数据接收子模块包括:
套接字监听单元,用于监听所述套接字listenfd,并判断所述套接字listenfd是否存在于所述数据接收线程组的多路复用接口EPOLL中;若是,则调用套接字移除单元;若否,则调用第一返回单元;
套接字移除单元,用于将其从所述数据接收线程组的多路复用接口EPOLL中移除,并标记所述套接字listenfd的标志位holdID,返回判断所述线程连接数是否大于预设阈值的步骤;
第一返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤。
6.根据权利要求5所述的装置,其特征在于,所述数据接收线程具有竞争锁,所述链接建立模块包括:
阈值判断子模块,用于若所述线程连接数校友或等于所述预设阈值,则调用车联网设备锁定子模块;
车联网设备锁定子模块,用于通过所述竞争锁建立所述车联网设备与所述数据接收线程之间的链接,并将所述链接保存于所述数据接收线程中。
7.根据权利要求6所述的装置,其特征在于,所述车联网设备锁定子模块包括:
车联网设备锁定单元,用于采用所述竞争锁锁定当前已与所述数据接收线程建立链接的车联网设备,并判断是否锁定成功;若否,则调用第二返回单元;若是,则调用套接字获取单元;
第二返回单元,用于返回判断所述线程连接数是否大于预设阈值的步骤;
套接字获取单元,用于获取所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID值;
套接字判断单元,用于判断所述当前已与所述数据接收线程建立链接的车车联网设备的套接字listenfd的标志位holdID的值是否大于-1;若是,则调用解除锁定单元;若否,则调用套接字标记单元;
解除锁定单元,用于解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,并返回判断所述线程连接数是否大于预设阈值的步骤;
套接字标记单元,用于标记所述当前已与所述数据接收线程建立链接的车联网设备的套接字listenfd的标志位holdID,并在标记完成后解除锁定所述当前已与所述数据接收线程建立链接的车联网设备,返回判断所述线程连接数是否大于预设阈值的步骤。
8.根据权利要求5所述的装置,其特征在于,所述双缓存组模包括第一缓存区域,和,第二缓存区域,所述业务数据发送模块包括:
待发送业务数据判断子模块,用于在采用所述数据接收线程组将所述业务数据写入所述第一缓存区域时,判断所述第二缓存区域中是否存在待发送业务数据;若是,则调用待发送业务数据发送子模块;若否,则调用业务数据写入子模块;
待发送业务数据发送子模块,用于将第二缓存区域的待发送业务数据发送至所述数据推送线程组,并在发送完毕后清空所述第二缓存区域中的待发送业务数据;
业务数据写入子模块,用于在下次写入所述业务数据时,采用所述第二缓存区域写入业务数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711238132.8A CN108306926B (zh) | 2017-11-30 | 2017-11-30 | 一种车联网设备网关业务数据的推送方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711238132.8A CN108306926B (zh) | 2017-11-30 | 2017-11-30 | 一种车联网设备网关业务数据的推送方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108306926A CN108306926A (zh) | 2018-07-20 |
CN108306926B true CN108306926B (zh) | 2021-08-13 |
Family
ID=62870280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711238132.8A Active CN108306926B (zh) | 2017-11-30 | 2017-11-30 | 一种车联网设备网关业务数据的推送方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306926B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552273B (zh) * | 2020-05-08 | 2022-03-11 | 广州小鹏汽车制造有限公司 | 车辆数据采集方法及其采集***、车辆及可读存储介质 |
CN114221818A (zh) * | 2021-12-21 | 2022-03-22 | 深圳铸泰科技有限公司 | 基于交换树上报五元组的方法、***、终端及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610407A (zh) * | 2009-07-15 | 2009-12-23 | 北京化工大学 | 以太网数据与数字视频流转换的网关实现方法 |
CN102082680A (zh) * | 2009-11-27 | 2011-06-01 | ***通信集团北京有限公司 | 采集机控制网元连接的方法、采集机和*** |
CN103684944A (zh) * | 2012-09-10 | 2014-03-26 | 西门子信号有限公司 | 嵌入式网关、采用该网关的铁路监测***及其方法 |
CN104601434A (zh) * | 2013-10-31 | 2015-05-06 | 深圳市赛格导航科技股份有限公司 | 一种数据传输方法及装置 |
CN106776080A (zh) * | 2016-12-29 | 2017-05-31 | 北京奇虎科技有限公司 | 工作线程的连接建立方法及装置 |
CN107135279A (zh) * | 2017-07-07 | 2017-09-05 | 网宿科技股份有限公司 | 一种处理长连接建立请求的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070143428A1 (en) * | 2005-12-21 | 2007-06-21 | Shruti Kumar | Method and system for displaying indications of messages from important persons and from new persons at a high display priority in a gathered threads view of an electronic mail ("email") user interface |
CN101860572A (zh) * | 2010-06-23 | 2010-10-13 | 中兴通讯股份有限公司 | 基于m2m的车载网关、网元、汽车远程控制***和方法 |
CN102955474A (zh) * | 2011-08-26 | 2013-03-06 | 中国航空工业集团公司第六三一研究所 | 一种汽车ecu的测控方法及其*** |
CN106254461B (zh) * | 2016-08-06 | 2019-04-05 | 中国科学院合肥物质科学研究院 | 一种智能车辆感知能力测试平台的数据同步方法 |
CN106971589B (zh) * | 2017-03-29 | 2020-06-05 | 深圳市金溢科技股份有限公司 | 智慧公交***及其实现方法 |
CN107103657B (zh) * | 2017-04-24 | 2020-10-20 | 北京首发公路养护工程有限公司 | 一种环卫车辆工作状态采集器及采集方法 |
-
2017
- 2017-11-30 CN CN201711238132.8A patent/CN108306926B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610407A (zh) * | 2009-07-15 | 2009-12-23 | 北京化工大学 | 以太网数据与数字视频流转换的网关实现方法 |
CN102082680A (zh) * | 2009-11-27 | 2011-06-01 | ***通信集团北京有限公司 | 采集机控制网元连接的方法、采集机和*** |
CN103684944A (zh) * | 2012-09-10 | 2014-03-26 | 西门子信号有限公司 | 嵌入式网关、采用该网关的铁路监测***及其方法 |
CN104601434A (zh) * | 2013-10-31 | 2015-05-06 | 深圳市赛格导航科技股份有限公司 | 一种数据传输方法及装置 |
CN106776080A (zh) * | 2016-12-29 | 2017-05-31 | 北京奇虎科技有限公司 | 工作线程的连接建立方法及装置 |
CN107135279A (zh) * | 2017-07-07 | 2017-09-05 | 网宿科技股份有限公司 | 一种处理长连接建立请求的方法和装置 |
Non-Patent Citations (3)
Title |
---|
Nginx如何解决"惊群"现象;hello_world_hust;《https://blog.csdn.net/wan_hust/article/details/38958545》;20140831;第1-5页 * |
Nginx惊群处理;`Elaine;《https://www.cnblogs.com/chenyang920/p/5527078.html》;20160525;第1-2页 * |
Nginx解决惊群现象;sa;《https://www.centos.bz/2017/07/nginx-disturbing-the-phenomenon/》;20170730;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108306926A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225048B2 (en) | Systems and methods for resource access | |
CN111818136B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN110750341B (zh) | 任务调度方法、装置、***、终端设备及存储介质 | |
CN107423085B (zh) | 用于部署应用的方法和装置 | |
CN109033814B (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN103150149A (zh) | 处理数据库重做数据的方法和装置 | |
CN103647850A (zh) | 一种分布式版本控制***的数据处理方法、设备及*** | |
CN108306926B (zh) | 一种车联网设备网关业务数据的推送方法和装置 | |
CN110708369B (zh) | 设备节点的文件部署方法、装置、调度服务器及存储介质 | |
CN110908797B (zh) | 调用请求数据处理方法、装置、设备、存储介质及*** | |
CN116069493A (zh) | 一种数据处理方法、装置、设备以及可读存储介质 | |
CN111913807B (zh) | 一种基于多个存储区域的事件处理方法、***及装置 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN109791534B (zh) | 可切换拓扑机器 | |
CN107395765B (zh) | 一种分布式文件***、网络通信方法、平台及其创建方法 | |
CN116303211A (zh) | 一种应用于车载场景的cpu多核间通信方法及装置 | |
CN105162837A (zh) | 海量数据存储环境下提升i/o吞吐率的方法及*** | |
CN109067864A (zh) | 通知消息推送方法、装置及电子设备 | |
CN114936106A (zh) | 一种主机故障的处理方法、装置及介质 | |
CN110716814B (zh) | 一种进程间大数据量通讯的性能优化方法和装置 | |
CN111984202A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN113296972A (zh) | 一种信息的注册方法、计算设备及存储介质 | |
US9703506B2 (en) | Storage apparatus and data storage method | |
CN116743589B (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 |