CN112235204B - 一种数据上报方法、系统、电子设备和存储介质 - Google Patents
一种数据上报方法、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112235204B CN112235204B CN202011091698.4A CN202011091698A CN112235204B CN 112235204 B CN112235204 B CN 112235204B CN 202011091698 A CN202011091698 A CN 202011091698A CN 112235204 B CN112235204 B CN 112235204B
- Authority
- CN
- China
- Prior art keywords
- data
- storage space
- sub
- ring buffer
- read
- 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
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据上报方法、系统、电子设备和存储介质,涉及通信技术领域。数据上报方法包括:接收消息队列遥测传输MQTT消息,其中,所述MQTT消息携带所述上报数据;获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置;检测所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置是否相同;若所述下一次写入的子存储空间位置和所述当前被读取数据的存储空间位置不同,向环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用。应用在物联网数据上报过程中,达到高并发情况下,数据上报的效能提高。
Description
技术领域
本发明实施例涉及通信技术领域,特别涉及一种数据上报方法、系统、电子设备和存储介质。
背景技术
物联网中数据上报的过程通常是:终端将根据消息队列遥测传输(MessageQueuing Telemetry Transport,MQTT)协议生成的MQTT消息发送到数据接收平台,数据接收平台将接收到的MQTT消息写入阻塞队列,然后根据需要从阻塞队列里读取数据,并将读取的数据在清洗整合之后上报到云平台。但是,在并发情况下,数据的读取、写入操作可能会同时进行从而给数据带来安全隐患。为了解决这一问题,可以通过设置锁来对线程进行控制,进一步地控制数据的读取操作和写入操作,达到避免冲突,增加数据的安全性地目的。
然而,锁的设置会降低整个上报过程的性能,尤其是多个线程对锁进行竞争的过程。而且,锁还可能会出现两个或两个以上的进程因竞争资源而造成的一种互相等待的死锁现象。因此,高并发情况下,使用阻塞队列会导致数据上报的效能明显降低。
发明内容
本发明实施方式的目的在于提供一种数据上报方法、系统、电子设备和存储介质,使得高并发情况下,数据上报的效能提高。
为解决上述技术问题,本发明的实施方式提供了一种数据上报方法,包括以下步骤:接收消息队列遥测传输MQTT消息,其中,所述MQTT消息携带所述上报数据;获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置;检测所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置是否相同;若所述下一次写入的子存储空间位置和所述当前被读取数据的存储空间位置不同,向环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用。
本发明的实施方式还提供了一种数据上报系统,包括:第一数据接收模块,用于接收消息队列遥测传输MQTT消息,其中,所述MQTT消息携带所述上报数据;数据提交模块,用于在所述数据接收模块接收到数据后,获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置,检测所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置是否相同,若所述下一次写入的子存储空间位置和所述当前被读取数据的存储空间位置不同,向环形缓冲区提交所述上报数据;环形缓冲区,用于接收所述数据提交模块提交数据后,顺序写入所述上报数据;第二数据接收模块,用于从所述环形缓冲区读取所述上报数据并使用。
本发明的实施方式还提供了一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上所述的数据上报方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求以上所述的数据上报方法。
本发明实施方式相对于现有技术而言,使用环形缓冲区替代现有数据上报方法中的阻塞队列,避免并发情况下阻塞队列读写操作需要设置锁并竞争锁带来的性能降低的问题,控制接收携带上报数据的MQTT消息,然后在上报数据被写入环形缓冲区之前,先进行下一次写入的子存储空间位置和当前被读取数据的子存储空间位置是否相同的判断,若不同则向环形缓冲区提交数据,供数据写入和读取操作的进行,从而解决了由锁带来的效率低、死锁等待过长等问题,提高了高并发情况下的数据上报效能。
另外,本发明实施方式提供的数据上报方法,所述接收上报数据之前,还包括:根据预先设置的环形缓冲区中的子存储空间的大小和数量对所述环形缓冲区进行初始化。通过初始化可以灵活地设置环形缓冲区,满足不同地具体需要。
另外,本发明实施方式提供的数据上报方法,所述获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置之前,还包括:根据所述MQTT消息确定数据类型;根据所述数据类型给所述上报数据分配不同的线程,其中,所述不同的线程对应不同的数据缓冲区。通过为不同数据类型分配不同线程和数据缓冲区,提高了线程处理效率,同时一个线程对应一个数据缓冲区,提高了并发情况下的数据安全性。
另外,本发明实施方式提供的数据上报方法,还包括:若所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置相同,进行自旋等待,不向环形缓冲区提交所述上报数据。通过自旋等待,避免读操作和写操作产生冲突,进一步保证数据安全性。
另外,本发明实施方式提供的数据上报方法,所述自旋等待,包括:获取更新后被读取数据的子存储空间位置;检测所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置是否相同;若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置不同,结束所述自旋等待并向所述环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用。若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置相同,继续进行所述自旋等待。通过不断检测直到能够正常写入才结束自旋等待,避免等待时间过长。
另外,本发明实施方式提供的数据上报方法,所述向环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用之后,还包括:更新所述下一次写入的子存储空间位置。在提交操作之后进行写入位置进行更新,下一次检测可以直接使用。
另外,本发明实施方式提供的数据上报方法,还包括:读取环形缓冲区中的数据并更新当前数据读取次数;根据所述数据读取次数获取当前被读取数据的子存储空间位置。通过数据读取次数更新读操作使用的子存储空间,充分利用了环形缓冲区顺序读取的特点简化了更新操作的步骤。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明的第一实施方式提供的数据上报方法的流程图;
图2是本发明的第二实施方式提供的数据上报方法的流程图;
图3是本发明的第三实施方式提供的数据上报方法的流程图;
图4是本发明的第三实施方式提供的数据上报方法的步骤302中的线程和缓冲区分配流程图;
图5是本发明的第四实施方式提供的数据上报方法的流程图;
图6是本发明的第五实施方式提供的数据上报系统的结构示意图;
图7是本发明的第五实施方式提供的数据上报系统的模块功能交互图;
图8是本发明的第六实施方式提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种数据上报方法,其流程如图1所示,包括:
步骤101,接收消息队列遥测传输MQTT消息,其中,MQTT消息携带上报数据。
在本实施方式中,MQTT消息是终端设备根据MQTT协议和待上报数据生成发送出去的消息,主要用于数据的传输,这里的上报数据可以是网关上报数据,也可以是任何一种可以由物联网中的某个设备或装置的上报数据。
步骤102,获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置。
在本实施方式中,数据的写入和读取都是在对环形缓冲区进行划分后得到的多个子存储空间中的某一个子存储空间内进行的。
步骤103,检测下一次写入的子存储空间位置和当前被读取数据的子存储空间位置是否相同,若否,执行步骤104,若是,执行步骤105。
步骤104,向环形缓冲区提交所述上报数据,供环形缓冲区顺序写入上报数据并从环形缓冲区读取上报数据并使用。
在本实施方式中,环形缓冲区接收到提交的上报数据后,在获取的下一次写入的子存储空间内写入上报数据,对于所有写入的过程而言就是顺序写入过程。
步骤105,进行自旋等待,不向环形缓冲区提交所述上报数据。
在本实施方式中,由于自旋等待时,直到自旋等待结束否则不会进行数据提交,因自旋等待过程中数据不会被写入环形缓存区,也就是下一次写入的子存储空间不会更新变化。进一步地说,自旋等待实际就是不断地查询当前被读取数据所在的子存储空间的位置,然后检测当前被读取数据所在的子存储空间的位置是否和下一次写入的子存储空间的位置相同,如果相同,继续查询、检测,如果不同,才能结束自旋等待,提交数据。
本发明实施方式相对于现有技术而言,使用环形缓冲区替代现有数据上报方法中的阻塞队列,避免并发情况下阻塞队列读写操作需要设置锁并竞争锁带来的性能降低的问题,控制接收携带上报数据的MQTT消息,然后在上报数据被写入环形缓冲区之前,先进行下一次写入的子存储空间位置和当前被读取数据的子存储空间位置是否相同的判断,若不同则向环形缓冲区提交数据,供数据写入和读取操作的进行,从而解决了由锁带来的效率低、死锁等待过长等问题,提高了高并发情况下的数据上报效能。
本发明的第二实施方式涉及一种数据上报方法。第二实施方式与第一实施方式大致相同,主要区别之处在于,需要对环形缓冲区进行初始化,如图2所示,还包括:
步骤201,根据预先设置的环形缓冲区中的子存储空间的大小和数量对环形缓冲区进行初始化。
在本实施方式中,预先设置的环形缓冲区中的子存储空间的大小和数量可以是预先存储的数值,从而可以作为一个默认进行使用,也可以是根据需要灵活地进行设置,而且同一环形缓冲区的每个子存储空间的大小可以相同也可以不同,可以根据实际需要进行设定。
具体地说,在启动数据上报流程后,就对环形缓冲区进行初始化,假设该缓冲区具有M个子存储空间,那么启动后首次上报的数据将顺序写入环形缓冲区的子存储空间,由于形状为环形,因此第一个写入的数据和第M个写入的数据响铃,分别存放在第0位和第M-1位中。
本发明实施方式相对于现有技术而言,在实现第一实施方式带来的有益效果基础上,通过初始化可以灵活地设置环形缓冲区,满足不同地具体需要。
本发明的第三实施方式涉及一种数据上报方法,该方法与第一实施方式提供的数据上报方法基本相同,其区别在于,环形缓冲区不止一个,如图3所示,还包括:
步骤301,根据MQTT消息确定数据类型。
在本实施方式中,数据类型可以MQTT消息中的数据类型、MQTT消息的内容对应主题等,其中,MQTT消息中的数据类型是由MQTT协议规定的数据类型,MQTT消息的内容对应的主题可以是数据包的主题为与时间相关的数据、与设备操作信息相关的数据等。当然,以上仅为具体的举例说明,在实际的使用过程中数据类型还可以包括其他类型,此处不做一一赘述。
步骤302,根据数据类型给上报数据分配不同的线程,其中,不同的线程对应不同的数据缓冲区。
在本实施方式中,如图4所示,一个线程对应一个数据缓冲区,因此,当存在多种数据类型时,会存在多个数据缓冲区,这些数据缓冲区之间的读操作和写操作由于使用的是不同的数据缓冲区,因此,其读操作和写操作相互独立,能够在高并发的情况下既保证安全性又保证执行效率。
本发明实施方式相对于现有技术而言,在实现第一实施方式带来的有益效果基础上,通过为不同数据类型分配不同线程和数据缓冲区,提高了线程处理效率,同时一个线程对应一个数据缓冲区,提高了并发情况下的数据安全性和执行效率。
本发明的第四实施方式涉及一种数据上报方法,该方法与第一实施方式提供的数据上报方法基本相同,其区别在于,对步骤102中的下一次写入的子存储空间位置和当前被读取数据的子存储空间位置的来源进行说明,其流程如图5所示,包括:
步骤501,更新下一次写入的子存储空间位置。
在本实施方式中,在提交操作之后进行写入位置进行更新,下一次检测可以直接使用。
需要说明的是在本申请中,也可以直接更新当前写入的子存储空间的位置,相应的地在实际检测时就需要根据当前写入的子存储空间的位置获取下一次写入的子存储空间位置,因为每一次检测实际上是为了避免读操作和写操作产生冲突进而影响数据的安全性,所以比较的应该是正在读取的数据位置和将要写入的数据的位置。
步骤502,读取环形缓冲区中的数据并更新当前数据读取次数。
在本实施方式中,当前数据的读取次数由于环形缓冲区是顺序地进行数据读取的,因此更新当前数据读取次数实际上是在更新前的数据读取次数上加就完成了更新,方便简洁。
步骤503,根据数据读取次数获取当前被读取数据的子存储空间位置。
具体地说,在本实施方式中,由于是环形的缓冲区,在假设环形缓冲区初始化时有M个子存储空间,且当前数据读取次数为N,因此根据数据读取次数获取当前被读取数据的子存储空间位置可以采用公式:X=(N-1)%M进行计算,其中,“%”表示取余,即为当前被读取数据的子存储空间位置是当前数据读取次数对子存储空间的个数取余的结果。那么进一步地说,若步骤501中更新下一次写入的子存储空间位置是Y(0≤Y≤M-1,Y∈Z),则步骤103的检测方法具体为比较X和Y是否相等,若相等,下一次写入的子存储空间位置和当前被读取数据的子存储空间位置就相同,若不等,下一次写入的子存储空间位置和当前被读取数据的子存储空间位置就不同。
需要说明的是,在本实施方式中,步骤501在步骤104之后执行,步骤502之后执行步骤503。但是步骤502和步骤503的位置不一定是在步骤501之后,只要环形缓冲区中存在有存储内容的子存储空间,步骤502和步骤503具体执行的时间就可以为任意步骤之前、之后或与某一步骤同时执行。
本发明实施方式相对于现有技术而言,在实现第一实施方式带来的有益效果基础上,通过数据读取次数更新读操作使用的子存储空间,充分利用了环形缓冲区顺序读取的特点简化了更新操作的步骤。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第五实施方式涉及一种数据上报系统,如图6所示,包括:
第一数据接收模块601,用于接收消息队列遥测传输MQTT消息,其中,MQTT消息携带所述上报数据。
数据提交模块602,用于在数据接收模块接收到数据后,获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置,检测下一次写入的子存储空间位置和当前被读取数据的子存储空间位置是否相同,若下一次写入的子存储空间位置和当前被读取数据的存储空间位置相同,向环形缓冲区提交上报数据。
环形缓冲区603,用于接收数据提交模块提交数据后,顺序写入上报数据。
第二数据接收模块604,用于从环形缓冲区读取上报数据并使用。
需要说明的是,在实际的实现过程中,如图7所示,第二数据接收模块604还需要执行上述的步骤502和步骤503,那么由于模块功能的划分,会存在一个第二数据接收模块604向数据提交模块602反馈当前被读取数据的子存储空间位置用于检测的过程,而且这个反馈过程可以看作一种当前被读取数据的子存储空间位置数据的同步过程。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第六实施方式涉及一种电子设备,如图8所示,包括:
至少一个处理器801;以及,
与所述至少一个处理器801通信连接的存储器802;其中,
所述存储器802存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器801执行,以使所述至少一个处理器801能够执行本发明第一至第四实施方式所述的数据上报方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (8)
1.一种数据上报方法,其特征在于,包括:
接收消息队列遥测传输MQTT消息,其中,所述MQTT消息携带上报数据;
获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置;一个所述MQTT消息中的上报数据在写入时占用一个子存储空间;
检测所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置是否相同;
若所述下一次写入的子存储空间位置和所述当前被读取数据的存储空间位置不同,向环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用;
其中,若所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置相同,进行自旋等待,不向环形缓冲区提交所述上报数据;
所述自旋等待,包括:
获取更新后被读取数据的子存储空间位置;
检测所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置是否相同;
若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置不同,结束所述自旋等待并向所述环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用;
若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置相同,继续进行所述自旋等待。
2.根据权利要求1所述的方法,其特征在于,所述接收消息队列遥测传输MQTT消息之前,还包括:
根据预先设置的环形缓冲区中的子存储空间的大小和数量对所述环形缓冲区进行初始化。
3.根据权利要求1所述的方法,其特征在于,所述获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置之前,还包括:
根据所述MQTT消息确定数据类型;
根据所述数据类型给所述上报数据分配不同的线程,其中,所述不同的线程对应不同的数据缓冲区。
4.根据权利要求1所述的方法,其特征在于,所述向环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用之后,还包括:
更新所述下一次写入的子存储空间位置。
5.根据权利要求1所述的方法,其特征在于,还包括:
读取环形缓冲区中的数据并更新当前数据读取次数;
根据所述数据读取次数获取当前被读取数据的子存储空间位置。
6.一种数据上报系统,其特征在于,包括:
第一数据接收模块,用于接收消息队列遥测传输MQTT消息,其中,所述MQTT消息携带上报数据;
数据提交模块,用于在所述数据接收模块接收到数据后,获取下一次写入的子存储空间位置和当前被读取数据的子存储空间位置,检测所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置是否相同,若所述下一次写入的子存储空间位置和所述当前被读取数据的存储空间位置不同,向环形缓冲区提交所述上报数据;
环形缓冲区,用于接收所述数据提交模块提交数据后,顺序写入所述上报数据;
第二数据接收模块,用于从所述环形缓冲区读取所述上报数据并使用;
其中,若所述下一次写入的子存储空间位置和所述当前被读取数据的子存储空间位置相同,进行自旋等待,不向环形缓冲区提交所述上报数据;
所述自旋等待,包括:
获取更新后被读取数据的子存储空间位置;
检测所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置是否相同;
若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置不同,结束所述自旋等待并向所述环形缓冲区提交所述上报数据,供所述环形缓冲区顺序写入所述上报数据并从所述环形缓冲区读取所述上报数据并使用;
若所述下一次写入的子存储空间位置和所述更新后的被读取数据的子存储空间位置相同,继续进行所述自旋等待。
7.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一项所述的数据上报方法。
8.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的数据上报方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011091698.4A CN112235204B (zh) | 2020-10-13 | 2020-10-13 | 一种数据上报方法、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011091698.4A CN112235204B (zh) | 2020-10-13 | 2020-10-13 | 一种数据上报方法、系统、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112235204A CN112235204A (zh) | 2021-01-15 |
CN112235204B true CN112235204B (zh) | 2023-04-07 |
Family
ID=74112503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011091698.4A Active CN112235204B (zh) | 2020-10-13 | 2020-10-13 | 一种数据上报方法、系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235204B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114418771B (zh) * | 2022-03-28 | 2022-08-09 | 深圳希施玛数据科技有限公司 | 一种数据传输的方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995755A (zh) * | 2014-06-03 | 2014-08-20 | 北京乐动卓越信息技术有限公司 | 基于移动终端的服务器优化方法及服务器系统 |
CN104077113A (zh) * | 2014-07-10 | 2014-10-01 | 中船重工(武汉)凌久电子有限责任公司 | 一种无锁并发消息处理机制的实现方法 |
CN105162727A (zh) * | 2015-08-13 | 2015-12-16 | 东方电子股份有限公司 | 一种基于VxWorks系统在DSFA系统中实现快速对等通信的方法 |
CN106656870A (zh) * | 2015-10-28 | 2017-05-10 | 中国科学院声学研究所 | 一种基于储存端口的二层交换机储存方法 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4305262B2 (ja) * | 2004-04-20 | 2009-07-29 | ソニー株式会社 | リングバッファ制御方法及びリングバッファ装置及びデータ記録再生装置 |
CN101526748B (zh) * | 2009-01-13 | 2010-12-08 | 上海微电子装备有限公司 | 用于光刻对准数据检验的存储装置、方法和对准控制系统 |
CN101800867B (zh) * | 2010-01-19 | 2011-09-28 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
US9223638B2 (en) * | 2012-09-24 | 2015-12-29 | Sap Se | Lockless spin buffer |
CN103491426A (zh) * | 2013-08-31 | 2014-01-01 | 中山大学 | 一种iptv的视频点播系统 |
CN106330764B (zh) * | 2016-08-15 | 2019-11-15 | 北京蓝海讯通科技股份有限公司 | 管理数据缓冲的方法、应用及计算设备 |
CN106302240A (zh) * | 2016-08-19 | 2017-01-04 | 山东智洋电气股份有限公司 | 服务器端接收客户端并发连接和数据处理方法 |
CN107302531A (zh) * | 2017-06-19 | 2017-10-27 | 青岛华潞佳电子科技有限公司 | 一种基于状态机和环形队列的串口命令解析方法 |
CN108768884A (zh) * | 2018-04-27 | 2018-11-06 | 江苏中科芯核电子科技有限公司 | 一种基于环形缓冲区的无线通信数据处理方法 |
CN109617825B (zh) * | 2018-11-30 | 2022-03-25 | 京信网络系统股份有限公司 | 消息处理装置、方法及通信系统 |
-
2020
- 2020-10-13 CN CN202011091698.4A patent/CN112235204B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995755A (zh) * | 2014-06-03 | 2014-08-20 | 北京乐动卓越信息技术有限公司 | 基于移动终端的服务器优化方法及服务器系统 |
CN104077113A (zh) * | 2014-07-10 | 2014-10-01 | 中船重工(武汉)凌久电子有限责任公司 | 一种无锁并发消息处理机制的实现方法 |
CN105162727A (zh) * | 2015-08-13 | 2015-12-16 | 东方电子股份有限公司 | 一种基于VxWorks系统在DSFA系统中实现快速对等通信的方法 |
CN106656870A (zh) * | 2015-10-28 | 2017-05-10 | 中国科学院声学研究所 | 一种基于储存端口的二层交换机储存方法 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112235204A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750341B (zh) | 任务调度方法、装置、系统、终端设备及存储介质 | |
US4556974A (en) | Method for passing a token in a local-area network | |
CN103297456A (zh) | 一种分布式系统下共享资源的访问方法及分布式系统 | |
CN107704325B (zh) | 用于进程间传输消息的方法和装置 | |
US10033546B2 (en) | Method and system for reprogramming | |
WO1988008571A1 (en) | Method and apparatus for initiating transactions on a multiprocessor computer system employing multiple lock indications | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
CN112235204B (zh) | 一种数据上报方法、系统、电子设备和存储介质 | |
CN108415758B (zh) | 分布式事务协调方法及装置 | |
CN115934625A (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
CN110896372B (zh) | 一种i2c链路切换方法、终端及存储介质 | |
CN101169774B (zh) | 一种多处理器系统、共享控制装置及启动从处理器的方法 | |
CN116795454B (zh) | 一种芯片配置方法、设备及介质 | |
US20110200059A1 (en) | BIT Inversion For Communication Interface | |
CN112860595B (zh) | Pci设备或pcie设备、数据存取方法及相关组件 | |
EP4120073A1 (en) | Configuration method for logical address space of hardware single board, device, and storage medium | |
CN113168389B (zh) | 用于锁定具有非透明桥接的PCIe网络的装置和方法 | |
CN109491648B (zh) | 嵌入式软件中库函数独立分区的实现方法和系统以及设备 | |
CN108121580A (zh) | 应用程序通知服务的实现方法及装置 | |
CN112433968A (zh) | 一种控制器共享同步方法和装置 | |
CN111427813A (zh) | 一种基于串口的核间通讯方法、终端及存储介质 | |
US11327908B2 (en) | Method and system for facilitating communication between interconnect and system memory on system-on-chip | |
CN111061673B (zh) | 一种通信方法、通信系统及存储介质 | |
CN110209612B (zh) | 一种基于多状态的dpram访问方法及系统 | |
CN109976675B (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 |