CN102668516B - 一种云消息服务中实现消息传递的方法和装置 - Google Patents
一种云消息服务中实现消息传递的方法和装置 Download PDFInfo
- Publication number
- CN102668516B CN102668516B CN201180003087.2A CN201180003087A CN102668516B CN 102668516 B CN102668516 B CN 102668516B CN 201180003087 A CN201180003087 A CN 201180003087A CN 102668516 B CN102668516 B CN 102668516B
- Authority
- CN
- China
- Prior art keywords
- message
- key
- read
- queue
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000003860 storage Methods 0.000 claims abstract description 74
- 230000005540 biological transmission Effects 0.000 claims description 78
- 238000009826 distribution Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/226—Delivery according to priorities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种云消息服务中实现消息传递的方法和设备,该方法包括:接收第一分布式程序发送的消息,在分布式Key-Value存储系统中存储所述消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;接收第二分布式程序读取消息数据的请求,在所述分布式Key-Value存储系统中读取所述消息数据,将读取的所述消息数据发送给所述第二分布式程序,并在所述消息数据为所述消息队列的接收消息序列号对应的消息数据时,递增所述消息队列的接收消息序列号。本发明实施例通过为消息队列设置发送消息序列号和接收消息序列号,当第一分布式程序发送消息数据时,云消息服务设备按照消息队列的发送消息序列号在分布式Key-Value存储系统中存储接收到的消息数据,并递增修改发送消息序列号;当第二分布式程序请求接收消息数据时,云消息服务设备按照消息队列的接收消息序列号读取消息数据,并递增修改接收消息序列号。从而实现了云消息服务的高可用性和伸缩性要求,同时又保障了消息传递的顺序保证。
Description
技术领域
本发明实施例涉及通信技术领域,并且更具体地,涉及数据安全通道的处理方法及设备。本发明实施例涉及IT技术领域,并且更具体地,涉及云消息服务中实现消息传递的方法和装置。
背景技术
随着云计算和移动互联网等技术的发展,部署在数据中心的各类服务器、PC机、移动设备等构成一个复杂的全球规模的分布式系统,云消息服务就是采用消息中间件为这个分布式系统提供通信的服务。
云消息服务首先应实现消息中间件的高可用性和伸缩性,保证能够为大量的用户提供不间断的服务能力,并且能够根据负载变化动态调整资源;其次是在保证前者的情况下提供消息传递的顺序保证。
云消息服务中实现高可用性和伸缩性的一种通常方法是使用分布式的Key-Value(键值对)存储系统实现数据的存储,但是该方法并不能提供顺序保证:实现云消息服务的云消息服务设备中每条消息都有多个副本存储在多个服务器上,当分布式程序从云消息服务设备上接收消息时,云消息服务设备一般基于带权重的随机选择算法来选择一部分服务器获取消息,如果分布式程序持续向云消息服务设备请求接收消息,那么按照选择算法最终将会遍历所有的服务器,所有消息都会返回给分布式程序,但是由于每次请求都是选择一部分服务器来获取消息,也就无法保证接收消息的顺序与发送消息的顺序相同。而很多程序对顺序保证存在要求,不能提供有效顺序保证的云消息服务存在应用上的局限性。
如上所述,目前的消息中间件系统,还无法实现在满足云消息服务对于高可用性和伸缩性的要求的同时,又能够提供很好的顺序保证,从而造成云消息服务在应用上的局限性。
发明内容
本发明实施例提供了一种云信息服务中实现消息传递的方法和装置,能够在保障云消息服务的高可用性和伸缩性要求的同时,提供很好的顺序保证。
一方面,提供了一种云消息服务中实现消息传递的方法,包括,接收第一分布式程序发送的消息,在分布式Key-Value存储系统中存储该消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;接收第二分布式程序读取消息数据的请求,在分布式Key-Value存储系统中读取消息数据,将读取的消息数据发送给第二分布式程序,并在该消息数据为该消息队列的接收消息序列号对应的消息数据时,递增该消息队列的接收消息序列号。
另一方面,提供了一种云消息服务设备,包括:接口单元,用于接收第一分布式程序发送的消息;接收第二分布式程序读取消息数据的请求,以及将存储单元读取的消息数据发送给所述第二分布式程序;消息队列管理单元,用于通知存储单元存储接口单元接收的消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;根据接口单元接收的所述读取消息数据的请求,通知所述存储单元读取消息数据,并在读取所述消息队列的接收消息序列号对应的消息数据成功时,递增所述消息队列的接收消息序列号。所述存储单元,包括分布式Key-Value存储系统,用于进行所述消息数据的存储或读取。
本发明实施例通过为每个消息队列设置一个发送消息序列号和一个接收消息序列号,当第一分布式程序发送消息数据时,云消息服务设备接收数据并生成包含发送消息队列发送消息序列号的键值Key,用消息数据作为数值Value,在分布式Key-Value存储系统中存储消息数据,并递增修改消息队列的发送消息序列号;当第二分布式程序请求接收消息数据时,云消息服务设备按照消息队列的接收消息序列号在分布式Key-Value存储系统中读取消息数据,并递增修改消息队列的接收消息序列号。实现了云消息服务的高可用性和伸缩性要求,同时又保障了消息传递的顺序保证。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例在分布式系统中实现云消息服务的系统架构图。
图2是本发明实施例中消息队列的元数据的结构示意图。
图3是本发明实施例中消息数据在Key-Value存储系统中的存储格式示意图。
图4是根据本发明一个实施例的云消息服务中实现消息传递的方法。
图5是根据本发明另一个实施例的云消息服务中由分布式程序选择消息传递提供顺序保证的方法。
图6是根据本发明一个实施例的云消息服务设备的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先对顺序保证进行简单说明。顺序保证是指,在进行通信的分布式程序之间,分布式程序接收消息的顺序应与发送消息的顺序相同,不能出现乱序,例如,分布式程序发送4条消息的顺序是:消息A-消息B-消息C-消息D,则分布式程序接收这4条消息的顺序也应该是:消息A-消息B-消息C-消息D,而不能是其他顺序,绝大多数分布式程序都要求能够提供顺序保证。
图1是本发明实施例在分布式系统中实现云消息服务的系统架构图。下面描述的本发明实施例可应用于图1所示的云消息服务系统架构中。
如图1所示,分布式程序发送消息数据给云消息服务设备或从云消息服务设备中获取消息数据,从而实现分布式程序之间的消息传递。分布式程序在分布式模块上运行,分布式程序之间的消息传递实际上是通过分布式模块间的消息传递进行传递,同一分布式模块上运行的分布式程序之间进行消息传递也要通过云消息服务设备。云消息服务设备主要分为三个部分:对消息队列进行维护管理、进行消息传递的消息队列管理单元,实现消息相关的数据存储的存储单元,以及与分布式程序接口的接口单元。
如图2所示,本发明实施例中为每个消息队列设置一个发送消息序列号和一个接收消息序列号作为消息队列的元数据。当然,根据应用需要,每个消息队列还可能设置是否保序、未读取成功消息序列号、消息队列长度等一个或多个其他元数据。发送消息序列号和接收消息序列号均为一个从初始状态开始递增的序列,两者的初始状态应该一致,如均从0开始递增,或均从1开始递增。分布式程序每发送一条消息到消息队列中,该消息队列的发送消息序列号就递增加一,分布式程序每从一个消息队列中接收一条消息,该消息队列的接收消息序列号就递增加一。定义一个消息序列号的最大值,当发送消息序列号超过消息序列号最大值时,发送消息序列号进行反转,即重新从初始状态,例如0开始计数,同样的,接收消息序列号超过消息序列号最大值时也会进行发转。当一个消息队列的接收消息序列号小于发送消息序列号,或接收消息序列号大于发送消息序列号但发送消息队列号比接收消息序列号多进行了一次反转时,表示该消息队列中仍然存在未被分布式程序接收的消息,分布式程序可以从该消息队列接收消息,当接收消息序列号等于发送消息序列号时,表示消息队列中的消息已经被接收完了,则不会从该消息队列读取消息给分布式程序。一般,消息序列号最大值会设置足够大,以避免出现反转的发送消息序列号接收消息数据并递增,最终超过少反转一次的接收消息序列号而导致未读取的消息数据被覆盖的情况。
如图3所示,消息数据在分布式Key-Value存储系统中进行存储时,用包含消息序列号的信息组成Key,具体组成规则中至少要包含消息队列标识、消息序列号,例如Key的组成可以为消息队列标识+消息序列号,或为消息序列号+消息队列标识,并可根据需要添加其他信息作为Key的前缀或后缀等,例如消息长度。用接收到的分布式程序消息中携带的消息数据作为Value,云消息服务设备接收的分布式程序所发送的消息一般会携带消息队列名称、消息数据,有时也会包含时间戳、数字签名等信息,本发明实施例中仅指保存消息数据部分,当然,根据实际应用的消息传递需要也可以保存消息携带的其他信息。因此,实现了在分布式Key-Value存储系统中存储和访问消息数据,通过包含消息序列号的Key直接定位查找到分布式存储系统中的消息数据。
分布式程序发送消息时,云消息服务设备修改消息队列的发送消息序列号,并把发送消息序列号作为消息序列号按照规则生成Key,按照所生成的Key在分布式Key-Value存储系统中进行消息数据的存储。分布式程序需要接收消息时,云消息服务设备把消息队列的接收消息序列号作为消息序列号按照规则生成Key,按照所生成的Key到分布式Key-Value存储系统中读取消息数据,从而实现了消息传递的顺序保证。
此外,程序通过消息中间件进行消息传递,往往还有分发保证的要求。分发保证的模型一般分为三种:最多一次分发、至少一次分发和严格一次分发。最多一次分发是指:对于每一条消息,向消息中间件请求接收消息的分布式程序最多只会接收到一次,但可能会出现接收不到的情况。至少一次分发是指:对于每一条消息,向消息中间件请求接收消息的分布式程序一定可以接收到,但可能会出现重复接收的情况。严格一次分发是指:对于每一条消息,向消息中间件请求接收消息的分布式程序一定可以接收到,并且只会接收到一次。通常来说,大多数应用程序期望严格一次分发的保证。
云消息服务中实现高可用性和伸缩性的通常方法是使用分布式的Key-Value存储系统进行消息数据的存储,但是该方法并不能提供分发保证:云消息服务设备中每条消息数据都有多个副本存储在多个服务器上,当分布式程序从云消息服务设备上接收消息数据时,云消息服务设备一般基于带权重的随机选择算法来选择一部分服务器获取消息数据,分布式程序持续向云消息服务设备请求接收消息数据,那么最终将会遍历所有的服务器,所有消息数据都会返回给程序,如果一次分布式程序请求接收消息数据,而存储了被接收消息数据副本的某个服务器发生故障,那么故障服务器上的这条消息数据的状态不会变为已接收或者删除,在下一次请求接收消息数据时,该服务器从故障状态恢复之后,这条消息数据就会被重复接收,也就是会出现重复消息,只能保证至少一次分发。而很多应用程序对分发保证存在要求,不能提供严格一次分发保证的云消息服务存在应用上的局限性。综上所述,目前的消息中间件系统,还不能在既满足云消息服务的高可用性和伸缩性的要求,又能够提供很好的顺序保证,并进一步提供分发保证的能力,从而造成云消息服务在应用上的局限性。
每个消息队列都设置了至少包括消息队列标识、发送消息序列号、接收消息序列号的元数据,可以将消息队列的元数据存储在关系型数据库中,借助关系型数据库的特点保证元数据操作的事务性,即当云消息服务中多个程序或者多个服务器节点需要同时更新一个消息队列的元数据时,所有操作将被作为一个单独的操作对待,要么成功完成,要么根本不执行,不会出现一部分成功一部分失败的情况,也就不会出现元数据操作重复的情况,按照不会操作重复的消息队列的发送消息序列号、接收消息序列号进行消息数据的读取,也就避免了出现重复消息,从而实现了严格一次的分发保证能力。
本发明实施例在图1所述的系统架构上,当第一分布式程序发送消息数据时,云消息服务设备接收消息数据,按照消息队列的发送消息序列号在分布式Key-Value存储系统中存储消息数据,并递增修改发送消息序列号;当第二分布式程序请求接收消息数据时,云消息服务设备按照消息队列的接收消息序列号读取消息数据,并递增修改接收消息序列号,实现了云消息服务的消息传递的顺序保证。从而满足了云消息服务的高可用性和伸缩性要求,同时又实现了消息的顺序保证。
并进一步地,可以通过将消息队列的包括消息队列标识、发送消息序列号、接收消息序列号的元数据存储在关系型数据库中实现严格一次的分发保证能力。从而满足了云消息服务的高可用性和伸缩性要求,又同时保障了消息的顺序保证及分发保证。
图4是本发明一个实施例云消息服务中实现消息传递的方法。
401,接收第一分布式程序发送的消息,在分布式Key-Value存储系统中存储所接收消息携带的消息数据,并递增消息所对应的消息队列的发送消息序列号。
可以采用如下的方法,接收到第一分布式程序发送的消息,消息携带包含需要传递消息数据的消息队列的消息队列标识,用该消息队列的发送消息序列号生成包含消息序列号的键值Key,键值Key中至少要包含消息队列标识、消息序列号,具体格式可以为消息队列标识+消息序列号,或为消息序列号+消息队列标识,并可根据业务需要添加其他信息,如消息长度等。从而按照所生成的Key在分布式Key-Value存储系统中存储收到的消息携带的消息数据,并将该消息队列的发送消息序列号递增加一。
402,接收第二分布式程序读取消息数据的请求,在分布式Key-Value存储系统中读取消息数据,将读取的消息数据发送给第二分布式程序,并在该消息数据为该消息队列的接收消息序列号对应的消息数据时,递增该消息队列的接收消息序列号。
假如消息数据读取方式为读取的是该消息队列的接收消息序列号对应的消息数据,此时,需要递增该消息队列的接收消息序列号。
可以采用如下的方法,接收第二分布式程序读取消息数据的请求,请求中包含读取消息数据的消息队列标识,当该消息队列的接收消息序列号不等于发送消息序列号时,用接收消息序列号生成键值Key,当然,此处生成Key的格式应与接收消息数据时生成键值Key一致,按照所生成的Key在分布式Key-Value存储系统中读取消息数据,若读取成功,则将读取的消息数据传递给第二分布式程序,并将该消息队列的接收消息序列号递增加一。当该消息队列的接收消息序列号等于发送消息序列号时,不读取消息数据。第二分布式程序读取消息数据请求也可能一次申请读取多条消息数据,这时的实现方法和上面类似,只是会重复进行多次读取消息数据和修改接收消息序列号的操作。
当然,消息队列的发送消息序列号和接收消息序列号均会定义一个最大值,如果消息序列号超过定义的最大值,则消息序列号会进行反转,即重新从初始值开始计数。例如,消息序列号的最大值定义为255,初始值为0,当发送消息序列号为255时又接收到一条消息,此时会把消息队列的发送消息序列号修改为0。上述的401、402步骤中,对消息序列号进行递增处理时,如果达到了消息序列号的最大值,则将消息序列号进行反转处理。
本实施例中优选地将消息队列的元数据存储在关系型数据库中,实现消息传递的严格一次的分发保证能力。也可以以消息队列标识作为键值Key,元数据作为Value存储在分布式Key-Value存储系统中。相应地,步骤401、402会到关系型数据库或分布式Key-Value存储系统中读取或修改元数据。上述元数据中至少包含消息队列标识、发送消息序列号、接收消息序列号信息。
本发明实施例在当第一分布式程序发送消息数据时,云消息服务设备按照消息队列的发送消息序列号在分布式Key-Value存储系统中存储消息,并递增修改消息队列的发送消息序列号;当第二分布式程序请求接收消息数据时,云消息服务设备根据消息队列的接收消息序列号读取消息数据,并递增修改消息队列的接收消息序列号,实现了云消息服务的消息传递的顺序保证。并进一步地,通过在关系型数据库中存储和修改消息队列的元数据,提供了严格一次的分发保证能力,从而保障了消息传递的顺序保证及严格一次分发保证。
图5是根据本发明另一个实施例的云消息服务中由分布式程序选择是否需要消息传递提供顺序保证的方法。图5中在读取消息数据不成功时,由分布式程序选择是否需要消息传递提供顺序保证,来确定消息数据的读取顺序,本实施例在图4所示实施例的基础上对其中的402步骤进行了细化,而接收第一分布式程序发送消息数据的步骤与图4所示实施例中401步骤的方法基本相同,因此省略了接收第一分布式程序发送消息数据步骤的图示和描述。
501,接收第二分布式程序读取消息数据的请求,在分布式Key-Value存储系统中读取消息。
可以采用如下的方法,接收第二分布式程序读取消息数据的请求,请求中包含读取消息数据的消息队列标识,当该消息队列的接收消息序列号不等于发送消息序列号时,用接收消息序列号生成键值Key,生成Key的格式应与接收消息数据时生成Key的格式一样,按照所生成的Key在分布式Key-Value存储系统中读取消息数据。当该消息队列的接收消息序列号等于发送消息序列号时,不读取消息数据。
502,501步骤中在分布式Key-Value存储系统中读取消息数据是否成功。
当存储消息数据的一个或多个存储系统节点发生故障等情况,会导致云消息服务设备读取消息数据不成功。
503,如果502步骤中读取消息数据不成功,则进一步判断该第二分布式程序的消息传递是否需要顺序保证。
第二分布式程序是否需要消息传递的顺序保证可以根据该消息队列的元数据“是否保序”的值来判断,值为是则表示需要顺序保证,为否则表示不需要顺序保证。进一步地,消息队列的“是否保序”的值可以由分布式程序通过命令消息设置,此处的分布式程序可以是消息传递中发送消息数据的第一分布式程序也可以是接收消息数据的第二分布式程序。例如,第一分布式程序发送包含需要保序指示的参数的命令消息,将消息队列的“是否保序”的值设为是。也可以在第二分布式程序读取消息数据的请求中或者在第一分布式程序发送消息数据的消息中提供参数设置消息队列“是否保序”的值,例如在第二分布式程序读取消息数据的请求中包含参数指示需要保序,则将消息队列“是否保序”的值置为是。
此外,判断第二分布式程序是否需要消息传递的顺序保证也可以根据第二分布式程序在读取消息数据的请求中包含的指示是否保序的参数,当指示保序则表示需要顺序保证,指示不保序则表示不需要顺序保证。
如果确定该第二分布式程序消息传递需要提供顺序保证,则本次消息数据读取流程结束,不会修改接收消息序列号。这样,在进行下次消息数据读取流程时,按照接收消息序列号会继续读取本次未读取的消息数据,直到成功读取到该消息数据为止,从而实现顺序保证。
504,如果503步骤中确定该第二分布式程序消息传递不需要提供顺序保证,则记录读取不成功的消息序列号,读取下一接收消息序列号的消息数据。
具体可以为,在该消息队列的未读取成功消息序列号中添加本次未读取成功的消息序列号,并递增消息队列的接收消息序列号,读取下一个接收消息序列号的消息数据,直至读取消息数据成功或消息队列中已无消息数据可读,即该消息队列的接收消息序列号等于发送消息序列号。
505,将读取的消息数据返回给第二分布式程序,并修改消息队列的接收消息序列号。
具体可以为,将读取成功的消息数据返回给第二分布式程序,并修改该消息队列的接收消息序列号为读取成功的消息序列号加1。
正常的消息数据读取方式中,读取的是该消息队列的接收消息序列号对应的消息数据,此时,需要递增该消息队列的接收消息序列号,即该消息队列的接收消息序列号为读取成功的消息序列号加1。
同样的,消息队列的接收消息序列号会定义一个最大值,如果接收消息序列号超过定义的最大值,则消息序列号会进行反转,即重新从初始值开始计数。
在本发明实施例中,进一步地,在步骤501中接收到第二分布式程序读取消息数据的请求,会首先确定该消息队列中是否有原读取不成功被跳过的未读消息数据,如有则读取该消息数据。具体实施方式可以为判断该消息队列的元数据“未读取成功消息序列号”是否为空,如有未读取成功的消息数据,则从未读取成功消息序列号中获取一个消息序列号,采用该消息序列号生成键值Key,按照所生成的Key在分布式Key-Value存储系统中读取消息数据,如果读取成功则将读取的消息数据传递给第二分布式程序,并在该消息队列的未读取成功消息序列号中删除本次已读取的消息序列号,本次消息数据读取过程结束。如读取不成功则继续从未读取成功消息序列号中获取下一个消息序列号,直至读取消息数据成功或未读取成功消息序列号中已没有新的消息序列号可以进行消息数据读取。如该消息队列的未读取成功消息序列号为空或未读取成功消息序列号中所有消息序列号对应的消息数据均读取不成功,则按照正常的消息数据读取方式读取该消息队列的接收消息序列号对应的消息数据。
第二分布式程序读取消息数据请求也可能一次申请读取多条消息数据,这时的实现方法和上面类似,只是会重复进行多次读取消息数据和修改接收消息序列号的操作。
本发明实施例中键值Key至少要包含消息队列标识、消息序列号,具体格式可以为消息队列标识+消息序列号,或为消息序列号+消息队列标识,并可根据业务需要添加其他信息,如消息长度等,在分布式Key-Value存储系统中存储第一分布式模块发送的消息数据与读取消息数据给第二分布式程序时生成键值Key的格式应相同。
本实施例中优选地将消息队列的元数据存储在关系型数据库中,也可以以消息队列标识作为键值Key,元数据作为Value存储在分布式Key-Value存储系统中。相应地,会到关系型数据库或分布式Key-Value存储系统中读取或修改元数据。上述元数据中至少包含消息队列标识、发送消息序列号、接收消息序列号、是否保序、未读取成功消息序列号等信息。
本发明实施例在第一分布式程序发送消息数据时,在分布式Key-Value存储系统中存储消息数据,并递增修改消息队列的发送消息序列号;在第二分布式程序请求消息数据时,根据消息队列的接收消息序列号读取消息数据,当读取消息数据失败时,根据分布式程序是否需要顺序保证的设置确定是否继续读取该消息数据直至读取成功,或者递增修改消息队列的接收消息序列号,继续读取下一个接收消息序列号的消息数据,同时将未读取成功的消息序列号记录下来,在后续第二分布式程序请求读取消息数据时再进行读取。从而实现了根据分布式程序的设置确定是否需要云消息服务提供严格的顺序保证。并进一步地,通过在关系型数据库中存储和修改消息队列的元数据,提供了严格一次的分发保证能力,从而保障了消息传递的顺序保证及分发保证。
图6是根据本发明一个实施例的云消息服务设备的框图。图6的云消息服务设备包括接口单元601、消息队列管理单元602和存储单元603。
接口单元601用于接收第一分布式程序发送的消息;接收第二分布式程序读取消息数据的请求,以及将存储单元603读取的消息数据发送给第二分布式程序。消息队列管理单元602用于通知存储单元603存储接口单元601接收的消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;根据接口单元601接收的读取消息数据的请求,通知存储单元603读取消息数据,并在读取该消息队列的接收消息序列号对应的消息数据成功时,递增该消息队列的接收消息序列号。存储单元603,包括分布式Key-Value存储系统,用于进行所述消息数据的存储或读取。
可以采用如下的方法,接口单元接收到第一分布式程序发送的消息,消息中包含需要传递消息数据的消息队列的消息队列标识,消息队列管理单元用该消息队列的发送消息序列号生成包含消息序列号的键值Key。消息队列管理单元通知存储单元根据键值Key在分布式Key-Value存储系统中存储收到的消息携带的消息数据,消息队列管理单元将该消息队列的发送消息序列号递增加一。
接口单元接收到第二分布式程序读取消息数据的请求,请求中包含读取消息数据的消息队列标识。当该消息队列的接收消息序列号不等于发送消息序列号时,消息队列管理单元用接收消息序列号生成键值Key,通知存储单元在分布式Key-Value存储系统中读取消息数据。若读取成功,接口单元将读取的消息数据传递给第二分布式程序,消息队列管理单元将该消息队列的接收消息序列号递增加一。
进一步地,如果存储单元读取消息数据不成功,则消息队列管理单元判断第二分布式程序的消息传递是否需要顺序保证。如果需要提供顺序保证,则消息队列管理单元会通知存储单元继续读取本次未读取的消息数据,直到成功读取到该消息数据为止。如果第二分布式程序消息传递不需要提供顺序保证,则消息队列管理单元记录读取不成功的消息序列号,并递增消息队列的接收消息序列号,通知存储单元读取下一接收消息序列号的消息数据。具体方法可以为,消息队列管理单元在该消息队列的未读取成功消息序列号中添加本次未读取成功的消息序列号,并读取下一个接收消息序列号的消息数据,直至读取消息数据成功或消息队列中已无消息数据可读,即该消息队列的接收消息序列号等于发送消息序列号。
上述消息队列管理单元判断第二分布式程序是否需要消息传递的顺序保证可以根据该消息队列的元数据“是否保序”的值来判断,值为是则表示需要顺序保证,为否则表示不需要顺序保证。进一步地,消息队列的是否保序的值可以由消息队列管理单元根据分布式程序的命令消息进行设置,分布式程序可以是消息传递中发送消息数据的第一分布式程序也可以是接收消息数据的第二分布式程序。例如,第一分布式程序发送包含需要保序指示的参数的命令消息,由消息队列管理单元将消息队列的是否保序的值设为是。也可以由消息队列管理模块根据第二分布式程序读取消息数据的请求或者第一分布式程序发送消息数据的消息携带的参数进行设置,例如在第二分布式程序读取消息数据的请求中包含参数指示消息传递需要保序,则消息队列管理单元将消息队列是否保序的值置为是。此外,消息队列管理单元判断第二分布式程序是否需要消息传递的顺序保证也可以根据第二分布式程序在读取消息数据的请求中包含的指示是否保序的参数,当指示保序则表示需要顺序保证,指示不保序则表示不需要顺序保证。
在本发明实施例中,进一步地,接收单元接收到第二分布式程序读取消息数据的请求,消息队列管理单元会先确定该消息队列中是否有原未读取成功被跳过的未读消息数据,具体可以通过判断该消息队列的元数据“未读取成功消息序列号”是否为空。如有未读取成功的消息数据,则通知存储单元读取该消息数据。具体的实施方式可以为,消息队列管理单元从未读取成功消息序列号中获取一个消息序列号,采用该消息序列号生成键值Key,通知存储单元在分布式Key-Value存储系统中读取消息数据,如果读取成功则由接口单元将读取的消息数据传递给第二分布式程序,并由消息队列管理单元在该消息队列的未读取成功消息序列号中删除本次已读取成功的消息序列号。如读取不成功,则消息队列管理单元继续从该消息队列的未读取成功消息序列号中获取下一个消息序列号,直至读取消息数据成功或未读取成功消息序列号中已没有新的消息序列号可以进行消息数据读取。如该消息队列的未读取成功消息序列号为空或未读取成功消息序列号中所有消息序列号对应的消息数据均读取不成功,则消息队列管理单元通知存储单元获取消息队列的接收消息序列号对应的消息数据。
本发明实施例中键值Key至少要包含消息队列标识、消息序列号,具体格式可以为消息队列标识+消息序列号,或为消息序列号+消息队列标识,并可根据业务需要添加其他信息,如消息长度等,在分布式Key-Value存储系统中存储第一分布式模块发送的消息数据与读取消息数据给第二分布式程序时生成键值Key的格式应相同。键值Key可以由消息队列管理单元生成后,然后通知存储单元根据Key在分布式Key-Value存储系统中存储或读取消息数据。消息队列管理单元也可以仅传递消息队列的消息队列标识、消息序列号等信息给存储单元,由存储单元生成键值Key,在分布式Key-Value存储系统中存储或读取消息数据。
当然,本实施例中消息队列的发送消息序列号和接收消息序列号均会定义一个最大值,消息序列号超过定义的最大值,则消息序列号会进行反转,即重新从初始值开始计数。消息队列管理单元对消息序列号进行递增处理时,如果达到了消息序列号的最大值,则将消息序列号进行反转处理。
本实施例中存储单元还可以进一步地包括关系型数据库,并优选地将消息队列的元数据存储在关系型数据库中,也可以以消息队列标识作为键值Key,元数据作为Value存储在分布式Key-Value存储系统中。存储单元也会相应地在关系型数据库或分布式Key-Value存储系统中读取或修改消息队列的元数据。上述元数据中至少包含消息队列标识、发送消息序列号、接收消息序列号、是否保序、未读取成功消息序列号等信息中的一种或几种。
本实施例中的分布式Key-Value存储系统和关系型数据库,作为存储单元的一部分,在物理上可以和云消息服务设备的其他部分在一起,也可以分布在多个网络物理实体上。
因此,本发明实施例的云消息服务设备在第一分布式程序发送消息时,在分布式Key-Value存储系统中存储该消息携带的消息数据,并递增修改消息队列的发送消息序列号;在第二分布式程序请求接收消息数据时,根据消息队列的接收消息序列号读取消息数据,并递增修改消息队列的接收消息序列号,实现了云消息服务的消息传递的顺序保证。并进一步地,当读取消息数据失败时,根据分布式程序是否需要顺序保证的需求确定是否继续读取该消息数据直至读取成功,或者继续读取下一个接收消息序列号的消息数据,同时将未读取成功的消息序列号记录下来,在后续分布式程序请求读取消息数据时再进行读取,从而实现了根据分布式程序的设置确定是否需要云消息服务提供严格的顺序保证。并进一步地,通过在关系型数据库中存储和修改消息队列的元数据,提供了严格一次的分发保证能力,从而保障了消息传递的顺序保证及分发保证。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (20)
1.一种云消息服务中实现消息传递的方法,其特征在于,包括,
接收第一分布式程序发送的消息,在分布式Key-Value存储系统中存储所述消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;
接收第二分布式程序读取消息数据的请求,在所述分布式Key-Value存储系统中读取所述消息数据,将读取的所述消息数据发送给所述第二分布式程序,并在所述消息数据为所述消息队列的接收消息序列号对应的消息数据时,递增所述消息队列的接收消息序列号;
其中,所述在分布式Key-Value存储系统中存储所述消息携带的消息数据,包括:生成包含所述发送消息序列号的键值Key,按照所述键值Key在所述分布式Key-Value存储系统中存储所述消息携带的消息数据;所述在所述分布式Key-Value存储系统中读取所述消息数据,包括:生成包含所述接收消息序列号的键值Key,按照所述键值Key在所述分布式Key-Value存储系统中读取所述消息数据。
2.如权利要求1所述的方法,其特征在于,所述发送消息序列号和接收消息序列号存储在关系型数据库中。
3.如权利要求1所述的方法,其特征在于,所述消息队列的发送消息序列号和接收消息序列号初始值相同。
4.如权利要求1所述的方法,其特征在于,当递增所述消息队列的发送消息序列号时,若所述发送消息序列号超过消息序列号的最大值,则将所述发送消息序列号重新置为初始值;或
当递增所述消息队列的接收消息序列号时,若所述接收消息序列号超过消息序列号的最大值,则将所述接收消息序列号重新置为初始值。
5.如权利要求1-4任一所述的方法,其特征在于,如果所述读取消息数据的请求对应的消息队列的接收消息序列号不等于发送消息序列号,或者所述读取消息数据的请求对应的消息队列中有未读取成功的消息数据时,则在所述分布式Key-Value存储系统中读取消息数据。
6.如权利要求5所述的方法,其特征在于,当所述消息队列的未读取成功消息序列号不为空,则所述消息队列中有未读取成功的消息数据。
7.如权利要求1所述的方法,其特征在于,如果在所述分布式Key-Value存储系统中读取所述消息数据不成功,则判断所述第二分布式程序的消息传递是否需要顺序保证,如果需要顺序保证,则继续读取未读取成功的所述消息数据,直到成功读取所述消息数据;如果不需要顺序保证,则在所述消息队列的未读取成功消息序列号中记录未读取成功的所述消息数据对应的消息序列号,并递增所述消息队列的接收消息序列号,继续读取下一个消息数据。
8.如权利要求7所述的方法,其特征在于,根据所述消息队列的是否保序的值或所述第二分布式程序读取消息数据的请求中的参数判断所述第二分布式程序的消息传递是否需要顺序保证。
9.如权利要求8所述的方法,其特征在于,所述消息队列的是否保序的值由所述第一分布式程序或所述第二分布式程序通过消息设置。
10.如权利要求5所述的方法,其特征在于,所述读取消息数据的请求对应的消息队列中有未读取成功的消息数据时,在所述分布式Key-Value存储系统中读取消息数据,具体为:
从所述读取消息数据的请求对应的消息队列的未读取成功消息序列号中获取一个消息序列号,生成包含所述消息序列号的键值Key,按照所述键值Key在所述分布式Key-Value存储系统中读取所述消息数据,如读取成功,从所述消息队列的未读取成功消息序列号中删除所述消息序列号。
11.一种云消息服务设备,其特征在于,包括:
接口单元,用于接收第一分布式程序发送的消息;接收第二分布式程序读取消息数据的请求,以及将存储单元读取的所述消息数据发送给所述第二分布式程序;
消息队列管理单元,用于通知存储单元存储所述接口单元接收的所述消息携带的消息数据,并递增所述消息对应的消息队列的发送消息序列号;根据所述接口单元接收的所述读取消息数据的请求,通知所述存储单元读取所述消息数据,并在读取所述消息队列的接收消息序列号对应的消息数据成功时,递增所述消息队列的接收消息序列号;
所述存储单元,包括分布式Key-Value存储系统,用于进行所述消息数据的存储或读取;
其中,所述通知存储单元存储所述接口单元接收的所述消息携带的消息数据,包括:
生成包含所述消息对应的消息队列的发送消息序列号的键值Key,通知所述存储单元按照所述键值Key在所述分布式Key-Value存储系统中存储所述接口单元接收的所述消息携带的消息数据;或者,
通知所述存储单元生成包含所述消息对应的消息队列的发送消息序列号的键值Key,按照所述键值Key在所述分布式Key-Value存储系统中存储所述接口单元接收的所述消息携带的消息数据;
所述通知所述存储单元读取所述消息数据,包括:
生成包含所述读取消息数据的请求对应的消息队列的接收消息序列号的键值Key,通知所述存储单元按照所述键值Key在所述分布式Key-Value存储系统中读取消息数据;或者,
通知所述存储单元生成包含所述读取消息数据的请求对应的消息队列的接收消息序列号的键值Key,按照所述键值Key在所述分布式Key-Value存储系统中读取所述消息数据。
12.如权利要求11所述的云消息服务设备,其特征在于,所述存储单元将所述消息队列的发送消息序列号和接收消息序列号存储在关系型数据库中。
13.如权利要求11所述的云消息服务设备,其特征在于,所述消息队列的发送消息序列号和接收消息序列号初始值相同。
14.如权利要求11所述的云消息服务设备,其特征在于,所述递增消息队列的发送消息序列号,当所述发送消息序列号超过消息序列号的最大值时,则所述发送消息序列号重新置为初始值;或所述递增所述消息队列的接收消息序列号,当所述接收消息序列号超过消息序列号的最大值时,所述接收消息序列号重新置为初始值。
15.如权利要求11-14任一所述的云消息服务设备,其特征在于,如果所述读取消息数据的请求对应的消息队列的接收消息序列号不等于发送消息序列号,或者所述读取消息数据的请求对应的消息队列中有未读取成功的消息数据时,消息队列管理单元通知所述存储单元读取所述消息数据。
16.如权利要求15所述的云消息服务设备,其特征在于,当所述消息队列的未读取成功消息序列号不为空,则所述消息队列中有未读取成功的消息数据。
17.如权利要求11所述的云消息服务设备,其特征在于,如果所述存储单元在所述分布式Key-Value存储系统中读取所述消息数据不成功,则所述消息队列管理单元判断所述第二分布式程序的消息传递是否需要顺序保证,如果需要顺序保证,则通知所述存储单元继续读取未读取成功的所述消息数据,直到成功读取所述消息数据;如果不需要顺序保证,则所述消息队列管理单元在所述消息队列的未读取成功消息序列号中记录未读取成功的所述消息数据对应的消息序列号,并递增所述消息队列的接收消息序列号,通知所述存储单元继续读取下一个消息数据。
18.如权利要求17所述的云消息服务设备,其特征在于,所述消息队列管理单元根据所述消息队列的是否保序的值或所述第二分布式程序读取消息数据的请求中包含的参数判断所述第二分布式程序的消息传递是否需要顺序保证。
19.如权利要求18任一所述的云消息服务设备,其特征在于,所述消息队列的是否保序的值由所述消息队列管理单元根据所述第一分布式程序或所述第二分布式程序的消息进行设置。
20.如权利要求15所述的云消息服务设备,其特征在于,所述消息队列中有未读取成功的消息数据时,通知所述存储单元读取所述消息数据,具体为:
所述消息队列管理单元从所述消息队列的未读取成功消息序列号中获取一个消息序列号,生成包含所述消息序列号的键值Key,通知所述存储单元按照所述键值Key在所述分布式Key-Value存储系统中读取所述消息数据,如读取成功,所述消息队列管理从所述消息队列的所述未读取成功消息序列号中删除所述消息序列号。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/083400 WO2013078689A1 (zh) | 2011-12-02 | 2011-12-02 | 一种云消息服务中实现消息传递的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102668516A CN102668516A (zh) | 2012-09-12 |
CN102668516B true CN102668516B (zh) | 2014-09-17 |
Family
ID=46774773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180003087.2A Active CN102668516B (zh) | 2011-12-02 | 2011-12-02 | 一种云消息服务中实现消息传递的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102668516B (zh) |
WO (1) | WO2013078689A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955717B (zh) * | 2012-11-05 | 2015-05-20 | 北京奇虎科技有限公司 | 在分布式消息处理系统中的消息管理设备和方法 |
CN103034541B (zh) * | 2012-11-16 | 2016-09-28 | 北京奇虎科技有限公司 | 一种分布式消息系统及其中的设备和方法 |
CN103870464A (zh) * | 2012-12-10 | 2014-06-18 | 腾讯科技(北京)有限公司 | 一种未读消息处理方法、展示方法和装置 |
CN103761141A (zh) * | 2013-12-13 | 2014-04-30 | 北京奇虎科技有限公司 | 一种实现消息队列的方法及装置 |
CN103984734B (zh) * | 2014-05-20 | 2017-05-17 | 中国科学院软件研究所 | 一种面向高性能计算的云服务消息传递方法 |
CN105119801B (zh) * | 2015-07-08 | 2019-04-05 | Oppo广东移动通信有限公司 | 一种社交消息管理方法、系统、用户终端及服务器 |
CN105955895B (zh) * | 2016-04-20 | 2019-04-12 | 北京小米移动软件有限公司 | 分布式消息队列的逻辑控制方法和装置、数据处理设备 |
CN106170013B (zh) * | 2016-06-29 | 2019-06-07 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于Redis的Kafka消息唯一性方法 |
CN106708427B (zh) * | 2016-11-17 | 2019-05-10 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
CN108345617B (zh) * | 2017-01-24 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
CN108038007B (zh) * | 2017-11-30 | 2022-04-05 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及系统 |
CN109600302A (zh) * | 2018-11-27 | 2019-04-09 | 金瓜子科技发展(北京)有限公司 | 一种有序通讯的方法、装置、存储介质及电子设备 |
US11055313B2 (en) | 2018-12-05 | 2021-07-06 | Ebay Inc. | Free world replication protocol for key-value store |
CN109767834B (zh) * | 2019-01-04 | 2023-04-07 | 浪潮软件集团有限公司 | 一种医疗影像数据共享服务方法和系统 |
CN112448898A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于序列号机制的消息保序方法 |
CN113365231A (zh) * | 2020-03-05 | 2021-09-07 | 北京沃东天骏信息技术有限公司 | 一种发送短信的方法和装置 |
CN111464621B (zh) * | 2020-03-30 | 2022-06-24 | 四川新网银行股份有限公司 | 分布式系统异步通信中消息发送与接收的数量检测方法 |
CN113824636A (zh) * | 2020-06-18 | 2021-12-21 | 中兴通讯股份有限公司 | 报文发送方法、接收方法、电子设备、系统及存储介质 |
CN113766437B (zh) * | 2020-08-31 | 2023-04-07 | 北京沃东天骏信息技术有限公司 | 一种短信发送方法和装置 |
CN112040001A (zh) * | 2020-09-07 | 2020-12-04 | 平安科技(深圳)有限公司 | 一种基于分布式存储的请求处理方法及装置 |
CN112860460B (zh) * | 2021-02-23 | 2022-01-04 | 创盛视联数码科技(北京)有限公司 | 用于实时课堂的事件分发方法及系统 |
US20230010417A1 (en) * | 2021-07-08 | 2023-01-12 | Dell Products L.P. | Message oriented middleware cluster synchronization |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058389A (en) * | 1997-10-31 | 2000-05-02 | Oracle Corporation | Apparatus and method for message queuing in a database system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509378B2 (en) * | 2003-03-11 | 2009-03-24 | Bea Systems, Inc. | System and method for message ordering in a message oriented network |
US7522590B2 (en) * | 2003-10-14 | 2009-04-21 | International Business Machines Corporation | Managing message arrival to ensure proper matching of unordered messages |
-
2011
- 2011-12-02 CN CN201180003087.2A patent/CN102668516B/zh active Active
- 2011-12-02 WO PCT/CN2011/083400 patent/WO2013078689A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058389A (en) * | 1997-10-31 | 2000-05-02 | Oracle Corporation | Apparatus and method for message queuing in a database system |
Also Published As
Publication number | Publication date |
---|---|
CN102668516A (zh) | 2012-09-12 |
WO2013078689A1 (zh) | 2013-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102668516B (zh) | 一种云消息服务中实现消息传递的方法和装置 | |
KR102240557B1 (ko) | 데이터 저장 방법, 장치 및 시스템 | |
CN106708653B (zh) | 一种基于纠删码与多副本的混合税务大数据安全保护方法 | |
US20150213100A1 (en) | Data synchronization method and system | |
CN102938784A (zh) | 应用于分布式存储系统中的数据存储方法和系统 | |
CN102413156B (zh) | 一种分布式数据存储系统和方法 | |
CN102282544A (zh) | 存储系统 | |
CN102591947A (zh) | 用于数据去重复的快速且低ram占用的索引 | |
CN104537076A (zh) | 一种文件读写方法及装置 | |
CN101997823A (zh) | 一种分布式文件系统及其数据访问方法 | |
CN103812849A (zh) | 一种本地缓存更新方法、系统、客户端及服务器 | |
CN109302495A (zh) | 一种数据存储方法及装置 | |
CN103167026A (zh) | 一种云存储环境数据处理方法、系统及设备 | |
CN105468302A (zh) | 一种处理数据的方法、装置及系统 | |
CN103152390A (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN105338078A (zh) | 用于存储系统的数据存储方法和装置 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN109491832A (zh) | 数据容灾方法与站点 | |
CN102012899A (zh) | 一种数据更新的方法、系统及设备 | |
CN105160018A (zh) | 一种复制/粘贴图片的方法、装置和系统 | |
WO2021145915A1 (en) | Memory health tracking for differentiated data recovery configurations | |
CN102282545B (zh) | 存储系统 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN105279020A (zh) | 一种任务调度方法及系统 | |
CN104079623A (zh) | 多级云存储同步控制方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |