CN110427266A - 基于mqtt服务的数据冗余架构 - Google Patents

基于mqtt服务的数据冗余架构 Download PDF

Info

Publication number
CN110427266A
CN110427266A CN201910596511.7A CN201910596511A CN110427266A CN 110427266 A CN110427266 A CN 110427266A CN 201910596511 A CN201910596511 A CN 201910596511A CN 110427266 A CN110427266 A CN 110427266A
Authority
CN
China
Prior art keywords
message
data
mqtt
server
indicates
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
CN201910596511.7A
Other languages
English (en)
Other versions
CN110427266B (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.)
Guangzhou Creation Cloud Technology Co Ltd
Original Assignee
Guangzhou Creation Cloud 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 Guangzhou Creation Cloud Technology Co Ltd filed Critical Guangzhou Creation Cloud Technology Co Ltd
Priority to CN201910596511.7A priority Critical patent/CN110427266B/zh
Publication of CN110427266A publication Critical patent/CN110427266A/zh
Application granted granted Critical
Publication of CN110427266B publication Critical patent/CN110427266B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于MQTT服务的数据冗余架构,包括多个数据库、多个数据服务器、多个缓存、多个MQTT服务器、多个WEB服务器和移动设备,每个数据库与对应的数据服务器连接,每个数据服务器至少与一个MQTT服务器连接,每个WEB服务器与一个或多个MQTT服务器连接,移动设备与WEB服务器连接,移动设备还与一个或多个MQTT服务器连接,数据服务器、WEB服务器和移动设备均为MQTT服务器的终端,MQTT服务器能注册到其它MQTT服务器,任意一个MQTT服务器都能作为其它MQTT服务器的终端。本发明能降低数据库压力,提高数据的可靠性,提高系统的响应速度,可扩容,数据可控,运算少,响应效率高。

Description

基于MQTT服务的数据冗余架构
技术领域
本发明涉及数据查询领域,特别涉及一种基于MQTT服务的数据冗余架构。
背景技术
在传统的软件架构中,用户查询数据时都需要不少的数据库运算,如果用户操作频繁,那么系统的响应速度就会降低,就会给用户带来不好的体验。后来,人们引进了缓冲机制,可以较好地降低数据库压力,但是数据库瓶颈仍然存在,而且数据库之间的同步带来的压力和资源消耗仍然不小。
传统的冗余架构技术方案如下:(1)堆叠技术:通过服务器和数据库的堆叠实现数据冗余和负载均衡。在这个架构中,数据库之间的同步需要消耗很多资源。(2)资源冲突:资源冲突是一个很大的问题,如果两个用户通过不同的WEB服务器同时修改同一个资源,那么就会导致资源冲突,导致修改失败。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种能降低数据库压力,提高数据的可靠性,提高系统的响应速度,可扩容,数据可控,运算少,响应效率高的基于MQTT服务的数据冗余架构。
本发明解决其技术问题所采用的技术方案是:构造一种基于MQTT服务的数据冗余架构,包括多个数据库、多个数据服务器、多个缓存、多个MQTT服务器、多个WEB服务器和移动设备,每个所述数据库与对应的数据服务器连接,每个所述缓存与对应的数据服务器连接,每个所述数据服务器至少与一个所述MQTT服务器连接,每个所述WEB服务器与一个或多个所述MQTT服务器连接,所述移动设备与所述WEB服务器连接,所述移动设备还与一个或多个所述MQTT服务器连接,所述数据服务器、WEB服务器和移动设备均为所述MQTT服务器的终端,所述MQTT服务器能注册到其它MQTT服务器,任意一个MQTT服务器都能作为其它MQTT服务器的终端,任意一个MQTT服务器接收到终端推送的主题消息后,都向其它MQTT服务器发送所述主题消息,任何数据服务器都能接收到并保存所述主题消息,实现数据冗余,当收到数据请求消息时,任意一个数据服务器都能查询所述数据库,返回数据消息。
在本发明所述的基于MQTT服务的数据冗余架构中,当所有数据服务器都接收到数据请求时,延时一段时间后再对所述数据请求进行处理;如果在延时时间内收到所述数据请求的响应数据,则丢弃所述数据请求,不再去查询数据。
在本发明所述的基于MQTT服务的数据冗余架构中,如果终端在多个MQTT服务器中都订阅了同一条消息,终端根据消息ID判断消息是否已经存在,如果消息已经存在,则剔除重复的消息;对于WEB服务器,如果接收到消息后WEB请求已经结束,则丢弃该消息。
在本发明所述的基于MQTT服务的数据冗余架构中,当一个实例存在多条冲突的记录时,数据服务器对数据进行优先选择,按照一定的优先级选出最可靠的记录作为实例的值。
在本发明所述的基于MQTT服务的数据冗余架构中,所述MQTT服务器采用权限组的方法控制终端发布消息。
在本发明所述的基于MQTT服务的数据冗余架构中,消息的主题名称包括第一级主题和第二级主题,所述第一级主题包括消息共享主题、消息请求主题和消息请求回复主题。
在本发明所述的基于MQTT服务的数据冗余架构中,所述消息共享主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/SHARE/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,SHARE表示这则消息是共享主题消息,TO_USERID表示这则消息指定共享给谁,USERID表示这则消息是谁产生的,TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,TOPIC_NAME表示二级主题名称。
在本发明所述的基于MQTT服务的数据冗余架构中,所述消息请求主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/WANT/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,WANT表示这则消息是请求消息,TO_USERID表示询问哪些终端,USERID表示这则消息是谁产生的,TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,TOPIC_NAME表示二级主题名称。
在本发明所述的基于MQTT服务的数据冗余架构中,所述消息请求回复主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/KNOWN/TO_USERID/USERID/TIMESTAMP/MSG_ID/USERID2/TIMESTAMP2/MSG_ID2/USERID3/TIMESTAMP3/MSG_ID3/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,KNOWN表示这则消息是请求回复主题的消息,TO_USERID表示消息回复给哪个终端,USERID表示谁回复这个消息,TIMESTAMP表示回复消息的UNIX时间戳,MSG_ID表示本消息的UUID,USERID2表示本消息回复的请求消息的发起者,TIMESTAMP2指表示本消息回复的请求消息的发起时间戳,MSG_ID2表示本消息回复的请求消息的ID,USERID3表示本消息回复的内容的产生者,TIMESTAMP3表示本消息回复的内容的产生时间戳,MSG_ID3表示本消息回复的内容的UUID。
在本发明所述的基于MQTT服务的数据冗余架构中,所述MQTT服务器的消息内容采用TLV格式。
实施本发明的基于MQTT服务的数据冗余架构,具有以下有益效果:由于设有多个数据库、多个数据服务器、多个缓存、多个MQTT服务器、多个WEB服务器和移动设备,MQTT服务器能注册到其它MQTT服务器,任意一个MQTT服务器都能作为其它MQTT服务器的终端,任意一个MQTT服务器接收到终端推送的主题消息后,都向其它MQTT服务器发送主题消息,任何数据服务器都能接收到并保存主题消息,实现数据冗余,当收到数据请求消息时,任意一个数据服务器都能查询数据库,返回数据消息,本发明能降低数据库压力,提高数据的可靠性,提高系统的响应速度,可扩容,数据可控,运算少,响应效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为传统技术中冗余架构的结构示意图;
图2为本发明基于MQTT服务的数据冗余架构一个实施例中的结构示意图;
图3为所述实施例中消息内容的TLV格式示意图;
图4为所述实施例中消息内容的签名方法的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明基于MQTT服务的数据冗余架构实施例中,该基于MQTT服务的数据冗余架构的结构示意图如图1所示。图1中,该基于MQTT服务的数据冗余架构包括多个数据库1、多个数据服务器2、多个缓存3、多个MQTT服务器4、多个WEB服务器5和移动设备6(图中作为例子画出了四个数据库4,四个缓存4,其中,每个数据库1与对应的数据服务器2连接,每个缓存3与对应的数据服务器2连接,每个数据服务器2至少与一个MQTT服务器4连接,每个WEB服务器5与一个或多个MQTT服务器4连接,移动设备6与WEB服务器5连接,移动设备6还与一个或多个MQTT服务器4连接。
数据服务器2、WEB服务器5和移动设备6均为MQTT服务器4的终端,他们可以注册到一个或多个MQTT服务器4,都被订阅他们感兴趣的消息。一个MQTT服务器4也可以是其它MQTT服务器4的终端,与其它MQTT服务器4互连。不同的终端,关心的数据不同,可以通过订阅技术来接收他们关心的数据,并通过发布技术来共享数据。
多MQTT服务器4互连,MQTT服务器4能注册到其它MQTT服务器4,接收其它MQTT服务器4送过来的主题消息,并把主题消息发送到注册到其上的终端(MQTT服务器4除外,防止消息循环),提高系统的有效性。
本实施例中,移动设备6可以为电脑或手机等。
任意一个MQTT服务器4都能作为其它MQTT服务器4的终端,任意一个MQTT服务器4接收到终端推送的主题消息后,都向其它MQTT服务器4发送这则主题消息,任何数据服务器2都能接收到并保存主题消息,实现数据冗余,当收到数据请求消息时,任意一个数据服务器2都能查询数据库,返回数据消息。本发明能降低数据库压力,提高数据的可靠性,提高系统的响应速度,可扩容,数据可控,运算少,响应效率高。
本发明具有延时响应功能。具体而言,当所有数据服务器2都接收到数据请求时,这些数据服务器2延时一段时间后再对这个数据请求进行处理。如果在延时时间内收到该数据请求的响应数据,则会丢弃这个数据请求,不再去查询数据。延时时间由几个因素决定:1、上次查询的数据与本次的越接近,延时时间越短;2、当前存在查询任务数越多,延时时间越长;3、本服务器资源越多,延时时间越短。
本发明具有数据剔除功能。如果终端在多个MQTT服务器中4都订阅了同一条消息,那么终端可能会接收到多条相同的消息,终端需要根据自己的特点剔除多余的消息和过时的消息。终端可以根据消息ID判断消息是否已经存在,如果消息已经存在,则剔除重复的消息;对于WEB服务器5,如果接收到消息后WEB请求已经结束,则丢弃该条消息。
本发明具有数据优先选择。具体而言,用户对一个实例的数据进行修改后,将重新发布一条包含这个实例数据的消息。数据服务器2把接收到的数据进行保存,作为这个实例的一条新记录。这样,如果当多个用户同时对同一个实例进行修改,那么所有修改记录都会保存起来,不会因为冲突而导致数据丢失。当一个实例存在多条冲突的记录时,数据服务器2对数据进行优先选择,按照一定的优先级选出最可靠的记录作为实例的值。数据优先选择与应用有关,应根据具体情况来定。
对于订阅消息控制技术,传统的订阅控制技术方案如下:在传统的MQTT订阅中,终端可以为所欲为地订阅自己关心的消息。这样就会破坏数据的保密性,终端可以接收一些不该发送给他的机密消息。而本发明改进的订阅控制技术方案如下:在改进的订阅控制技术中,由管理员为终端进行消息订阅,终端无法自己订阅消息,保护消息的机密。
对于发布消息控制技术,传统的发布消息控制技术方案如下:在传统的发布消息技术中,终端可以为所欲为地发布消息。这样就会导致终端可以发布伪造的消息。本发明改进的发布消息控制技术方案如下:在改进的发布消息技术中,由管理员指定终端只能发布哪些消息,否则MQTT服务将丢弃不合法的消息。发布消息控制JSON配置信息如下:
在本发明的MQTT服务中(MQTT服务器4)采用权限组的方法控制终端发布消息。JSON文件的第一层right、group、user分别保存发布权限、发布权限组、用户信息。用户通过glist来指定发布消息时使用哪个发布权限组。发布权限组通过rlist来指定本组中存在哪些发布权限。发布权限通过path来判断可发布消息,只有level与2异或未非零时,且消息主题规则满足path时,消息才能发布。
path支持通配符,其中,$USER_UUID表示主题名节点与用户的UUID匹配;$USER_PHONE表示主题名节点与用户的电话号码匹配;$USER_ID表示主题名节点与用户的ID匹配;
在上述配置例子中,用户名和密码均为center、ID为15、UUDI为0c6d0c5cc42248cfa2c49c58e49e91cb的用户的发布权限包括发布组4。发布组4的发布权限为7。发布权限7的path是#,表示允许所有主题,level与2异或非零表示可以发布消息。因此,用户center可以发布任何消息。
对于消息主题名称规范,传统的消息主题名称规范如下:在传统的MQTT服务中,消息主题名称是随意的,没有规范。由于没有规范,就不存在终端之间相互协作的可能。
为了更好地便于终端之间的相互协作,本发明规范了消息主题名称。本发明规范了二级主题名称,第一级主题所有终端都必须遵守;第二级主题由终端自己定义,只要通讯双方终端可以理解即可。也就是消息的主题名称包括第一级主题和第二级主题,第一级主题包括消息共享主题、消息请求主题和消息请求回复主题。
其中,消息共享主题的主题名称规范如下:DOMAIN/LANG/L_VER/PROTO/SHARE/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;如:D/L/1/PB_V3/SHARE/*/0c6d0c5cc42248cfa2c49c58e49e91cb/1535094818/8aba85425b5a4428b36cdc44dcd6f673/SYS/RUN/STATUS。
其中,DOMAIN表示指定区域范围,用来减少消息广播数,如:D,可以在订阅时限制所有D的数据只在D区域内广播。LANG表示指定通讯双方的语言,如:L,表示终端的语言是L,如果终端不能支持这个语言,那么应该丢弃无法解析的主题消息。L_VER表示指定通讯双方的语言的版本,如:1,如果终端不能支持这个版本,那么也应该丢弃无法解析的主题消息。PROTO表示指定通讯双方的通讯协议,如:PB_V3,表示载体数据将使用protocol buffer v3来处理。
SHARE表示这则消息是共享主题消息,数据服务器2接收到后应该保存这条消息。TO_USERID表示这则消息指定共享给谁,如:*,表示发给所有终端。USERID表示这则消息是谁产生的,如:0c6d0c5cc42248cfa2c49c58e49e91cb,表示这个UUID的终端产生的。TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,如:8aba85425b5a4428b36cdc44dcd6f673,与TIMESTAMP一起唯一表示一条消息。TOPIC_NAME表示二级主题名称,如:SYS/RUN/STATUS。本消息的QOS采用1,即MQTT需要对这条消息进行持久化,确保消息可以送达终端。
消息请求主题的主题名称规范如下:DOMAIN/LANG/L_VER/PROTO/WANT/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;如:
D/L/1/PB_V3/WANT/*/1c40a4706e6d46ff8bc4c78a389549f1/1535094819/eb497ede7422491a9737f19b5d5285d6/SYS/RUN/STATUS。
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,WANT表示这则消息是请求消息,请求终端0c6d0c5cc42248cfa2c49c58e49e91cb的SYS/RUN/STATUS的消息,即读取某个终端的系统运行状态消息。
TO_USERID表示询问哪些终端,因为TO_USERID是*,表示询问所有终端,所以回复这条消息的终端可能是0c6d0c5cc42248cfa2c49c58e49e91cb终端,也可能是其它数据服务器。终端1c40a4706e6d46ff8bc4c78a389549f1接收到回复消息后,应该进行消息优先选择,剔除实时性差的消息,终端0c6d0c5cc42248cfa2c49c58e49e91cb返回的消息优先权最高的,数据服务器返回的优先权较低。
USERID表示这则消息是谁产生的,TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,TOPIC_NAME表示二级主题名称。
本消息的QOS采用0,即MQTT服务器4不需要保证本条消息可靠地传输到终端。本主题的内容可以包含一个查询范围,服务终端根据这个范围返回查询的记录。在实际的应用中,终端和数据服务器直接需要定义好协议。
本实施例中,消息请求回复主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/KNOWN/TO_USERID/USERID/TIMESTAMP/MSG_ID/USERID2/TIMESTAMP2/MSG_ID2/USERID3/TIMESTAMP3/MSG_ID3/TOPIC_NAME;如:
D/L/1/PB_V3/KNOWN/1c40a4706e6d46ff8bc4c78a389549f1/30d3162457614c39969aeb6c7e62dffb/1535094820/1eb05cd5f3164b43aaeeaf22872f6115/1c40a4706e6d46ff8bc4c78a389549f1/1535094819/eb497ede7422491a9737f19b5d5285d6/0c6d0c5cc42248cfa2c49c58e49e91cb/1535094818/8aba85425b5a4428b36cdc44dcd6f673/SYS/RUN/STATUS。
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,KNOWN表示这则消息是请求回复主题的消息,TO_USERID表示消息回复给哪个终端,如:终端1c40a4706e6d46ff8bc4c78a389549f1。USERID表示谁回复这个消息,如:30d3162457614c39969aeb6c7e62dffb,一个数据服务器。TIMESTAMP表示回复消息的UNIX时间戳,如:1535094820。MSG_ID表示本消息的UUID,如:1eb05cd5f3164b43aaeeaf22872f6115。
USERID2表示本消息回复的请求消息的发起者,如:1c40a4706e6d46ff8bc4c78a389549f1;TIMESTAMP2指表示本消息回复的请求消息的发起时间戳,如:1535094819。MSG_ID2表示本消息回复的请求消息的ID,如:eb497ede7422491a9737f19b5d5285d6;USERID3表示本消息回复的内容的产生者,如:0c6d0c5cc42248cfa2c49c58e49e91cb;TIMESTAMP3表示本消息回复的内容的产生时间戳,如:1535094818;MSG_ID3表示本消息回复的内容的UUID,如:8aba85425b5a4428b36cdc44dcd6f673。本消息的QOS采用0,即MQTT服务器4不需要保证本条消息传输到终端。
本发明对第二级主题没有太多限制,但是必须是通讯双方可理解的。第二级主题必须能够描述一件事情或者一个物体。因为请求主题只能请求一件事情或者一个物体,所以在本发明中,第二级主题应该已事物作为消息单位。一件事情或者一个物体可能有多个属性,这些属性应该保存在一条消息中,方便后续的查询。另外数据粒度不能太小,粒度太小,通讯次数就会增加。如第二级主题:SYS/RUN/STATUS。
当某个终端查询其它终端的主题时,这个终端的CPU使用情况、内存使用情况、硬盘使用情况等全部在一个消息包中获得。如第二级主题:SYS/RUN/STATUS/CPU_INFO,这样的主题是不建议的,虽然每次传输的数据量少了,但是数据粒度太小会带来频繁的通讯,给MQTT服务器带来压力。
对于消息内容规范,传统的消息内容规范如下:在传统的MQTT服务中,MQTT的内容是随意的,没有任何规范,这样无法校验数据的完整性。本发明对MQTT的内容进行了规范,用来保证数据的完整性。
MQTT服务器4的内容采用TLV格式,该TLV格式的示意图如图4所示。图4中,T表示类型,0x0001表示版本,0x0002表示签名,0x0003表示载体;L表示长度,即V的长度,如:版本的长度为2;版本0x0001表示第一版;注意:如果没有特殊指出,所有整数均按小端模式(LE)储存。
图4为本实施例中消息内容的签名方法的示意图,图4中,USERID、TIMESTAMP、MSG_ID、TOPIC_NAME来自主题名称;对应请求回复主题则来自USERID3、TIMESTAMP3、MSG_ID3、TOPIC_NAME。对于普通的应用,采用0x0001校验就足够;如果对应安全性要求很高的应用,那么应该采用0x0006校验。载体由DOMAIN/LANG/L_VER/PROTO来决定,LANG决定内容体系,PROTO决定通讯协议和格式。
相对于传统的冗余架构,因为MQTT的持久化技术已经保证数据安全到达终端,所以本发明的基于MQTT服务的数据冗余架构免去了数据同步处理。本发明的基于MQTT服务的数据冗余架构具备请求延时功能,以便由最适合的数据服务器处理最适合的请求,加快响应速度,减少系统开销。本发明的基于MQTT服务的数据冗余架构需要数据优先选择功能,即当请求到多个数据时或者数据冲突时,终端需要根据具体情况选择最优的数据。发明的基于MQTT服务的数据冗余架构具备一个终端发起请求,多个终端并发处理请求的功能,实现快速并发地完成数据请求任务。
相对于传统的冗余架构,本发明的基于MQTT服务的数据冗余架构的数据服务器和其它终端可以随意增加,实现无限制扩容。本发明的基于MQTT服务的数据冗余架构可以通过订阅规则,指定数据服务器所管理的区域,较少不必要的数据处理。
在本发明的基于MQTT服务的数据冗余架构中,任何终端都可以在其发布范围内发布共享主题,任何终端接收到共享主题后都可以储存,作为一个冗余备份。任何终端接收到数据请求后都可以回复请求,在回复请求前进行适当的延时,防止重复查询数据。为了防止主题风暴,管理员需要对订阅数据进行合适的设计,避免共享主题和请求主题发送给过多的终端。
在本发明的基于MQTT服务的数据冗余架构倾向于所有请求都采用面向对象的技术。例如:如果想查询一个班级的期末考试数学平均分,那么在本系统中查询的则是期末考试统计数据,其中包括数学平均分和其他科目的平均分。期末考试统计是一个对象,它由某个数据服务程序生成,并且通过SHARE主题发布。当需要查询数学平均分时,直接查询这个对象就可以,查询过程中几乎没有任何运算,响应速度是瞬间的。如果统计数据还没有生成,那么查询将返回空结果。采用本架构,程序设计思维要变更,很多统计数据可以预先生成,以便于后续查询,减少运算,加快响应速度。
在实际应用中,还可以采用替代方案。对于主题名称代替方案如下:(1)修改主题名称节点顺序或者减少、合并节点:在本发明中,主题名称DOMAIN/LANG/L_VER/PROTO中的几个节点的顺序可以更改,也可以合并或者减少。如果只有一个区域,那么完全不需要DOMAIN这个节点。如果PROTO已经固定,那么完全不需要PROTO这个节点。主题名称TO_USERID/USERID/TIMESTAMP/MSG_ID中的几个节点的顺序也是可以更改。(2)变更主题名称节点名称:在本发明中,主题名称中的SHARE、WANT、KNOWN可以使用其它单词来表示共享主题消息、请求主题消息和返回主题消息。TO_USERID的使用*来表示所有终端,也可以使用其它符合表示。
对于主题内容代替方案如下:(1)直接带负载:不需要签名,直接带上负载,不管负载的完整性;(2)签名方法变更:采用其它的签名方法,保证负载的完整性;(3)内容格式变更:采用不同的格式保存版本、签名和负载,或者直接省去版本。
总之,本发明的基于MQTT服务的数据冗余架构是一个使用到MQTT的持久化特性(Persistence)和MQTT的订阅发布机制(Subscribe/Publish)的架构,是一个通过MQTT实现可扩容、数据可控、运算少、响应效率高的架构。定义了第一级主题的命名规范;提供了主题内容格式和签名方法;提供了订阅消息控制技术,即终端自动订阅主题改为由管理员统一订阅;提供了发布消息控制技术,即通过权限组来限制消息发送;提供了请求主题消息的延时处理技术,通过该技术减少数据库的查询操作,实现最合适的数据服务器处理最合适的数据。本发明免去数据同步处理、具备数据冗余功能、资源消耗少、响应速度快。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于MQTT服务的数据冗余架构,其特征在于,包括多个数据库、多个数据服务器、多个缓存、多个MQTT服务器、多个WEB服务器和移动设备,每个所述数据库与对应的数据服务器连接,每个所述缓存与对应的数据服务器连接,每个所述数据服务器至少与一个所述MQTT服务器连接,每个所述WEB服务器与一个或多个所述MQTT服务器连接,所述移动设备与所述WEB服务器连接,所述移动设备还与一个或多个所述MQTT服务器连接,所述数据服务器、WEB服务器和移动设备均为所述MQTT服务器的终端,所述MQTT服务器能注册到其它MQTT服务器,任意一个MQTT服务器都能作为其它MQTT服务器的终端,任意一个MQTT服务器接收到终端推送的主题消息后,都向其它MQTT服务器发送所述主题消息,任何数据服务器都能接收到并保存所述主题消息,实现数据冗余,当收到数据请求消息时,任意一个数据服务器都能查询所述数据库,返回数据消息。
2.根据权利要求1所述的基于MQTT服务的数据冗余架构,其特征在于,当所有数据服务器都接收到数据请求时,延时一段时间后再对所述数据请求进行处理;如果在延时时间内收到所述数据请求的响应数据,则丢弃所述数据请求,不再去查询数据。
3.根据权利要求1所述的基于MQTT服务的数据冗余架构,其特征在于,如果终端在多个MQTT服务器中都订阅了同一条消息,终端根据消息ID判断消息是否已经存在,如果消息已经存在,则剔除重复的消息;对于WEB服务器,如果接收到消息后WEB请求已经结束,则丢弃该条消息。
4.根据权利要求1所述的基于MQTT服务的数据冗余架构,其特征在于,当一个实例存在多条冲突的记录时,数据服务器对数据进行优先选择,按照一定的优先级选出最可靠的记录作为实例的值。
5.根据权利要求1至4任意一项所述的基于MQTT服务的数据冗余架构,其特征在于,所述MQTT服务器采用权限组的方法控制终端发布消息。
6.根据权利要求1至4任意一项所述的基于MQTT服务的数据冗余架构,其特征在于,消息的主题名称包括第一级主题和第二级主题,所述第一级主题包括消息共享主题、消息请求主题和消息请求回复主题。
7.根据权利要求6所述的基于MQTT服务的数据冗余架构,其特征在于,所述消息共享主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/SHARE/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,SHARE表示这则消息是共享主题消息,TO_USERID表示这则消息指定共享给谁,USERID表示这则消息是谁产生的,TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,TOPIC_NAME表示二级主题名称。
8.根据权利要求6所述的基于MQTT服务的数据冗余架构,其特征在于,所述消息请求主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/WANT/TO_USERID/USERID/TIMESTAMP/MSG_ID/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,WANT表示这则消息是请求消息,TO_USERID表示询问哪些终端,USERID表示这则消息是谁产生的,TIMESTAMP表示这则消息产生的UNIX时间戳,单位秒,MSG_ID表示这则消息的UUID,TOPIC_NAME表示二级主题名称。
9.根据权利要求6所述的基于MQTT服务的数据冗余架构,其特征在于,所述消息请求回复主题的主题名称规范如下:
DOMAIN/LANG/L_VER/PROTO/KNOWN/TO_USERID/USERID/TIMESTAMP/MSG_ID/USERID2/TIMESTAMP2/MSG_ID2/USERID3/TIMESTAMP3/MSG_ID3/TOPIC_NAME;
其中,DOMAIN表示指定区域范围,LANG表示指定通讯双方的语言,L_VER表示指定通讯双方的语言的版本,PROTO表示指定通讯双方的通讯协议,KNOWN表示这则消息是请求回复主题的消息,TO_USERID表示消息回复给哪个终端,USERID表示谁回复这个消息,TIMESTAMP表示回复消息的UNIX时间戳,MSG_ID表示本消息的UUID,USERID2表示本消息回复的请求消息的发起者,TIMESTAMP2指表示本消息回复的请求消息的发起时间戳,MSG_ID2表示本消息回复的请求消息的ID,USERID3表示本消息回复的内容的产生者,TIMESTAMP3表示本消息回复的内容的产生时间戳,MSG_ID3表示本消息回复的内容的UUID。
10.根据权利要求1所述的基于MQTT服务的数据冗余架构,其特征在于,所述MQTT服务器的消息内容采用TLV格式。
CN201910596511.7A 2019-07-03 2019-07-03 基于mqtt服务的数据冗余架构 Active CN110427266B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910596511.7A CN110427266B (zh) 2019-07-03 2019-07-03 基于mqtt服务的数据冗余架构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910596511.7A CN110427266B (zh) 2019-07-03 2019-07-03 基于mqtt服务的数据冗余架构

Publications (2)

Publication Number Publication Date
CN110427266A true CN110427266A (zh) 2019-11-08
CN110427266B CN110427266B (zh) 2023-01-17

Family

ID=68410261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910596511.7A Active CN110427266B (zh) 2019-07-03 2019-07-03 基于mqtt服务的数据冗余架构

Country Status (1)

Country Link
CN (1) CN110427266B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111935296A (zh) * 2020-08-18 2020-11-13 成都长虹网络科技有限责任公司 一种高可用无限mqtt消息服务扩容的系统
CN112328417A (zh) * 2020-11-27 2021-02-05 杭州海兴电力科技股份有限公司 一种嵌入式多程序通讯方法和系统
CN113362501A (zh) * 2021-06-08 2021-09-07 南京邮电大学 一种基于物联网的智能锁系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290015B1 (en) * 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
US20150301875A1 (en) * 2014-04-22 2015-10-22 Andreas Harnesk Persisting and managing application messages
CN109088723A (zh) * 2018-10-26 2018-12-25 四川长虹电器股份有限公司 一种基于mqtt协议的远程控制方法
CN109587228A (zh) * 2018-11-23 2019-04-05 济南浪潮高新科技投资发展有限公司 一种公有协议物联网平台及设备接入方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290015B1 (en) * 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
US20150301875A1 (en) * 2014-04-22 2015-10-22 Andreas Harnesk Persisting and managing application messages
CN109088723A (zh) * 2018-10-26 2018-12-25 四川长虹电器股份有限公司 一种基于mqtt协议的远程控制方法
CN109587228A (zh) * 2018-11-23 2019-04-05 济南浪潮高新科技投资发展有限公司 一种公有协议物联网平台及设备接入方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111935296A (zh) * 2020-08-18 2020-11-13 成都长虹网络科技有限责任公司 一种高可用无限mqtt消息服务扩容的系统
CN111935296B (zh) * 2020-08-18 2023-02-03 成都长虹网络科技有限责任公司 一种高可用无限mqtt消息服务扩容的系统
CN112328417A (zh) * 2020-11-27 2021-02-05 杭州海兴电力科技股份有限公司 一种嵌入式多程序通讯方法和系统
CN112328417B (zh) * 2020-11-27 2023-12-12 杭州海兴电力科技股份有限公司 一种嵌入式多程序通讯方法和系统
CN113362501A (zh) * 2021-06-08 2021-09-07 南京邮电大学 一种基于物联网的智能锁系统

Also Published As

Publication number Publication date
CN110427266B (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
CN102655503B (zh) 使用共享资源池的资源分配
CN110427266A (zh) 基于mqtt服务的数据冗余架构
EP1981219B1 (en) An apparatus for providing the end-to-end qos guarantee and a method thereof
US5983261A (en) Method and apparatus for allocating bandwidth in teleconferencing applications using bandwidth control
US7496602B2 (en) Optimizing communication using scalable peer groups
US8250230B2 (en) Optimizing communication using scalable peer groups
CN108874562A (zh) 分布式高并发消息队列推送系统
CN109120426A (zh) 一种网络切片管理方法、装置及计算机可读存储介质
US20080008106A1 (en) Method and Arrangement for Providing Communication Group Information to a Client
EP2838243B1 (en) Capability aggregation and exposure method and system
EP1865683A1 (en) Group communication server
EP1461717A1 (en) Service control framework for seamless transfer of a multimedia conference over different media
US6873694B2 (en) Telephony network optimization method and system
CN114615154A (zh) 服务质量管理的方法及装置、通信系统
WO2020083322A1 (zh) 一种呼叫方法、设备及系统
US9473316B2 (en) Resource consumption reduction via meeting affinity
CN115883669A (zh) 一种数据分发方法、系统、设备和介质
CN113259118B (zh) 同步节点信息列表的方法
CN113259117B (zh) 同步节点信息列表的方法
CN113259120B (zh) 同步节点信息列表的方法
Heijenk et al. Communication systems supporting multimedia multi-user applications
CN107438098A (zh) 一种动态内容分发方法及其系统
JP2007013804A (ja) 属性指定通信方法および通信装置
CN113612732B (zh) 一种资源调用方法、装置和多方安全计算系统
CN114024976B (zh) 一种基于5g的大数据服务架构及构建大数据业务的方法

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