CN109254853B - 数据共享方法、数据共享系统及计算机可读存储介质 - Google Patents
数据共享方法、数据共享系统及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109254853B CN109254853B CN201810816112.2A CN201810816112A CN109254853B CN 109254853 B CN109254853 B CN 109254853B CN 201810816112 A CN201810816112 A CN 201810816112A CN 109254853 B CN109254853 B CN 109254853B
- Authority
- CN
- China
- Prior art keywords
- data
- key
- producer
- consumer
- sent
- 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
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据共享方法、数据共享系统及计算机可读存储介质,方法包括:将数据生产者与其发送的数据的键进行关联,得到第一关联关系;将数据消费者与其请求的数据的键进行关联,得到第二关联关系;当接收到数据生产者发送的数据时,若一第二关联关系中的键与数据的键相同,则将数据发送至所述一第二关联关系中的数据消费者;当接收到数据消费者发送的请求时,若一第一关联关系中的键与请求的数据的键相同,则将一第一关联关系中的键对应的数据发送至数据消费者。本发明不仅使用更加简单,而且极大地降低了系统耦合度,变动通知机制也避免了频繁查询数据变更带来的性能消耗,同时可以轻松实现跨机器,跨网络的数据共享。
Description
技术领域
本发明涉及数据处理领域,尤其涉及数据共享方法、数据共享系统及计算机可读存储介质。
背景技术
在现代的应用系统中,特别是存在多个服务器的复杂应用组中,多个应用/服务之间存在大量的共享数据的需求,比如一些共同的参数配置等;如何灵活地在多应用/服务之间共享这些数据,并且在数据变动的时候,所有端都能得到及时的通知,就成为了一个值得研究的课题。
目前,针对多应用程序之间数据的共享,常规的做法有两种,一种是采用内存共享的方式,将需要的数据写入共享内存,需要该数据的需求者从共享内存中读取数据;这个做法的缺点很明显,只能局限于本机进行数据共享,同时由于这种共享方式,多应用/服务增加了耦合度,而且依然无法解决变动实时通知的需求。另外一种常规做法是,采用文件或DBMS作为媒介,将需要共享的数据写入,需求者需要的时候定时查询,以获得最新的共享数据;这种方式虽然有效地降低了耦合度,也能解决跨机器数据共享的问题,但依然存在变动无法通知,需要频繁查询消耗大,调用不直观的问题。
发明内容
本发明所要解决的技术问题是:提供数据共享方法、数据共享系统及计算机可读存储介质,可实现数据的变动自动通知,且具有使用简单、无耦合、拓展灵活等优点。
为了解决上述技术问题,本发明采用的技术方案为:一种数据共享方法,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明还涉及一种数据共享方法,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
当接收到数据消费者发送的请求时,将数据消费者与其请求的数据的键进行关联,得到第二关联关系,并将请求的数据的键与第一关联关系中的键进行匹配;
若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明还涉及一种数据共享系统,包括数据生产者、数据消费者和数据共享服务,所述数据生产者和数据消费者分别与所述数据共享服务连接;
所述数据生产者用于发送数据至数据共享服务;
所述数据消费者用于向数据共享服务请求数据;
所述数据共享服务用于将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
所述数据共享服务还用于将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
所述数据共享服务还用于当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者;
所述数据共享服务还用于当接收到数据消费者发送的请求时,将请求的数据的键与第一关联关系中的键进行匹配;若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
本发明的有益效果在于:通过将数据生产者与其提供的数据进行关联,实现输入登记,通过将数据消费者与其请求的数据进行关联,实现请求登记。当数据生产者发送数据,实时将数据发送给需要的数据消费者;当数据消费者请求数据时,若有数据消费者需要的数据,实时发送给数据消费者。当数据更新时,数据生产者提供的数据曾经被某个数据消费者请求过,则将该数据发送给该数据消费者,实现变更自动通知。本发明不仅使用更加简单,而且极大地降低了系统耦合度,变动通知机制也避免了频繁查询数据变更带来的性能消耗,同时可以轻松实现跨机器,跨网络的数据共享。
附图说明
图1为本发明一种数据共享方法的流程图;
图2为本发明另一种数据共享方法的流程图;
图3为本发明实施例一的方法流程图;
图4为本发明实施例二的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:通过输入登记和请求登记,实时将数据发送给需要的数据消费者,数据更新实时通知。
请参阅图1,一种数据共享方法,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者。
请参阅图2,本发明还提出了一种数据共享方法,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
当接收到数据消费者发送的请求时,将数据消费者与其请求的数据的键进行关联,得到第二关联关系,并将请求的数据的键与第一关联关系中的键进行匹配;
若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
从上述描述可知,本发明的有益效果在于:当获取数据消费者需要的数据时,实时发送给数据消费者,具有使用简单、无耦合、拓展灵活等优点。
进一步地,所述将数据生产者与其发送的数据的键进行关联,得到第一关联关系具体为:
接收并保存数据生产者发送的数据,所述数据为键值对的形式;
将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。
由上述描述可知,通过将数据生产者与其提供的数据进行关联,实现输入登记。
进一步地,所述将数据消费者与其请求的数据的键进行关联,得到第二关联关系具体为:
接收数据消费者发送的请求,所述请求包括数据的键;
将所述数据消费者与其请求的数据的键进行关联,得到第二关联关系;
判断是否存在一第一关联关系,所述一第一关联关系中的键与所述数据消费者请求的数据的键相同;
若存在,则实时将所述一第一关联关系中的键对应的数据返回至所述数据消费者。
由上述描述可知,通过将数据消费者与其请求的数据进行关联,实现请求登记,当收到数据生产者发送数据消费者需要的数据时,可根据该关联关系实时将数据发送给数据消费者。
进一步地,还包括:
保存所述第一关联关系和第二关联关系。
由上述描述可知,通过持久化保存第一关联关系和第二关联关系,使得异常重启时还可获得第一关联关系和第二关联关系。
进一步地,还包括:
当异常重启时,加载所述第一关联关系和第二关联关系;
根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求数据;
接收数据生产者返回的数据,并保存至内存;
若存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,则实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
由上述描述可知,通过第一关联关系重新向数据生产者请求数据,通过第二关联关系重新向数据消费者提供数据,可避免因异常重启造成共享数据丢失的问题,提高数据共享的稳定性。
进一步地,还包括:
当接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,并将所述更新数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述更新数据的键相同,则实时将所述更新数据发送至所述一第二关联关系中的数据消费者。
由上述描述可知,可实现数据更新的自动变更通知,使得数据消费者可及时地得知更新后的数据。
本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明还提出了一种数据共享系统,包括数据生产者、数据消费者和数据共享服务,所述数据生产者和数据消费者分别与所述数据共享服务连接;
所述数据生产者用于发送数据至数据共享服务;
所述数据消费者用于向数据共享服务请求数据;
所述数据共享服务用于将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
所述数据共享服务还用于将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
所述数据共享服务还用于当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者;
所述数据共享服务还用于当接收到数据消费者发送的请求时,将请求的数据的键与第一关联关系中的键进行匹配;若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
进一步地,所述数据生产者和数据消费者与数据共享服务的连接方式为短连接。
由上述描述可知,各个数据生产者和数据消费者与数据共享服务之间的通讯均为短连接,向数据共享服务发送数据或请求的时候均为一次性发送,发送后立即销毁,通过数据共享服务所在的服务器是否应答来确认消息是否发送成功,使得服务端不需要同时和多个使用者保持长久的链接关系,这样子既降低了服务器网络消耗又可以实现即连即用的效果,以防止网络中断导致的持久性通讯失败。当网络通讯存在问题时,数据生产者发送数据后,数据共享服务没有应答,则数据生产者会认为数据未发送成功,继续发送,直至数据共享服务返回应答信息,从而使数据生产者清楚了解数据是否发送成功。而现有技术中,数据生产者和数据共享服务间采用长连接,当网络通讯存在问题,数据生产者向数据共享服务发送数据后,数据共享服务并不会像数据生产者返回是否收到的信息,数据生产者默认发送成功,不再继续发送,而数据共享服务实际上并未收到。所以,在长连接且网络出现异常时,数据生产者发送的数据易丢失。
进一步地,所述数据生产者处于局域网或广域网,所述数据消费者处于局域网或广域网,所述数据共享服务处于局域网或广域网。
由上述描述可知,本发明的数据共享系统不仅可应用于局域网的数据共享,还可以应用于广域网的数据共享。
实施例一
请参照图3,本发明的实施例一为:一种数据共享方法,可运用于多应用程序或多终端之间的数据共享,本实施例中,引入一个数据共享服务的角色,所有能提供共享数据或者需要共享数据的应用服务或终端都需要和该数据共享服务进行通讯。由该服务提供统一的接口,统一管理所有共享的数据,负责接收变更和通知变更工作,同时维护所有应用程序或终端,在架构上形成一种星形结构。进一步地,当运用于多终端之间的数据共享时,所述数据共享服务可集成在服务器上。
如图3所示,所述方法包括如下步骤:
S101:接收数据生产者发送的数据,并保存到内存中,其中,数据均为键值对(key-value)形式的数据。
如果数据生产者检测到数据发送失败,即数据共享服务没有应答,则会重新发送,直至数据共享服务应答为止。
进一步地,当内存中已存在该数据生产者发送的同一个键的数据,则用最新的数据的值覆盖内存中该数据的值。
S102:将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。进一步地,第一关联关系中数据生产者的信息为数据生产者的IP和端口号。
S103:接收数据消费者发送的请求,所述请求包括数据的键;
S104:将所述数据消费者与其请求的数据的键进行关联,得到第二关联关系。进一步地,第二关联关系中数据消费者的信息为数据消费者的IP和端口号。
对于上述四个步骤,其中,S101-S102与S103-S104可不分先后顺序执行,只要接收到数据生产者发送的数据,则执行步骤S101,如果还未存在该数据生产者与其当前发送的数据的键的关联关系,则执行步骤S102;只要接收到数据消费者的请求且还未存在该数据消费者与其当前请求的数据的键的关联关系,则执行步骤S103-S104。
S105:在步骤S103接收到数据消费者发送的请求后,判断是否存在一第一关联关系,所述一第一关联关系中键与所述请求的数据的键相同,进一步地,也可以判断是否存在所述键对应的数据,即判断内存中是否存在数据消费者所请求的数据,若是,则执行步骤S106,若否,则等待数据生产者提供。进一步地,本步骤也可以为在步骤S102得到第一关联关系和S104得到第二关联关系之后,判断是否存在键相同的第一关联关系和第二关联关系,即是否存在对应键相同的数据生产者和数据消费者。
S106:实时将所述一第一关联关系中的键对应的数据返回至所述数据消费者。
S107:在步骤S101接收到数据生产者发送的数据后,将数据生产者发送的数据的键与第二关联关系中的键进行匹配,判断是否存在一第二关联关系,所述一第二关联关系中的键与所述数据的键相同,若是,则执行步骤S108。进一步地,本步骤也可以为在步骤S102得到第一关联关系和S104得到第二关联关系之后,判断是否存在键相同的第一关联关系和第二关联关系,即是否存在对应键相同的数据生产者和数据消费者。
S108:实时将所述数据发送至所述一第二关联关系中的数据消费者,该数据消费者接收到数据后,更新其存储的数据。
本实施例采用的是变动登记和变动自动异步通知的方式,而非传统的RPC(RemoteProcedure Call,远程过程调用)方式,使得多个系统服务之间完全解耦,极大降低了系统耦合度,提高了系统的稳定性或扩展性。通过采用变更通知的方式,可将系统耗费降到最低,从而降低了系统性能耗用。需要共享数据的应用程序、服务,只需注册自身的IP和端口,即可完成数据的共享和使用,即本实施例支持跨机器,跨网络使用,且可提供统一的接口,方便使用该数据共享服务的开发者,直接调用提供的函数来使用该数据共享服务,通过简单的注册登记即可接入并实现数据共享,提高了使用方便性。
进一步地,数据生产者在提供数据时或数据消费者在获取数据时,如果异常会重试,直到正常工作为止,解决崩溃期间数据无法存取的问题。
实施例二
请参照图4,本实施例是实施例一的进一步拓展。
在步骤S102得到第一关联关系和步骤S104得到第二关联关系后,还将所述第一关联关系和第二关联关系进行保存,进一步地,可保存至用户信息列表,该用户信息列表持久化保存在数据共享服务中。
当数据共享服务所在终端崩溃或者断电,在该终端重启后,如图4所示,执行以下步骤:
S201:加载用户信息列表,即加载所述第一关联关系和第二关联关系;
S202:若所述用户信息列表的第一关联关系不为空,则根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求对应的数据,即根据第一关联关系,向数据生产者请求其曾经提供过的数据。数据生产者接收到请求后,会返回最新的数据。
S203:接收数据生产者返回的数据,并保存至内存。
S204:判断用户信息列表中是否存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,即判断数据生产者返回的数据是否曾经被某个数据消费者请求过,若是,则执行步骤S205。
S205:实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
进一步地,当数据生成者中的数据更新时,会发送更新后的数据至数据共享服务;当数据共享服务接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,即用更新数据的值覆盖内存中更新数据的键对应的值,同时将所述更新数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述更新数据的键相同,则将所述更新数据发送至所述一第二关联关系中的数据消费者。从而可实现数据更新的自动变更通知,使得数据消费者可及时地得知更新后的数据。
本实施例通过第一关联关系重新向数据生产者请求数据,通过第二关联关系重新向数据消费者提供数据,可避免因异常重启造成共享数据丢失的问题,提高数据共享的稳定性。
实施例三
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者。
进一步地,所述将数据生产者与其发送的数据的键进行关联,得到第一关联关系具体为:
接收并保存数据生产者发送的数据,所述数据为键值对的形式;
将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。
进一步地,所述将数据消费者与其请求的数据的键进行关联,得到第二关联关系具体为:
接收数据消费者发送的请求,所述请求包括数据的键;
将所述数据消费者与其请求的数据的键进行关联,得到第二关联关系;
判断是否存在一第一关联关系,所述一第一关联关系中的键与所述数据消费者请求的数据的键相同;
若存在,则实时将所述一第一关联关系中的键对应的数据返回至所述数据消费者。
进一步地,还包括:
保存所述第一关联关系和第二关联关系。
进一步地,还包括:
当异常重启时,加载所述第一关联关系和第二关联关系;
根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求数据;
接收数据生产者返回的数据,并保存至内存;
若存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,则实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
进一步地,还包括:
当接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,并将所述更新数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述更新数据的键相同,则实时将所述更新数据发送至所述一第二关联关系中的数据消费者。
实施例四
本实施例也是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,与实施例三的区别在于,所述程序被处理器执行时实现以下步骤:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
当接收到数据消费者发送的请求时,将数据消费者与其请求的数据的键进行关联,得到第二关联关系,并将请求的数据的键与第一关联关系中的键进行匹配;
若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
进一步地,所述将数据生产者与其发送的数据的键进行关联,得到第一关联关系具体为:
接收并保存数据生产者发送的数据,所述数据为键值对的形式;
将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。
进一步地,还包括:
保存所述第一关联关系和第二关联关系。
进一步地,还包括:
当异常重启时,加载所述第一关联关系和第二关联关系;
根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求数据;
接收数据生产者返回的数据,并保存至内存;
若存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,则实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
进一步地,还包括:
当接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,并将所述更新数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述更新数据的键相同,则实时将所述更新数据发送至所述一第二关联关系中的数据消费者。
实施例五
本实施例是对应上述实施例的一种数据共享系统,包括数据生产者、数据消费者和数据共享服务,所述数据生产者和数据消费者分别与所述数据共享服务连接;其中,所述数据共享服务可集成在服务器中,所述数据生产者和数据消费者可以是任意一个客户端。该客户端中含有数据发送或接收的API接口。所述数据生产者或数据消费者的客户端可以安装在任意一台电脑、智能手机、平板、穿戴式设备中。所述数据生产者的客户端可将共享数据发送服务器,数据消费者通过该中转服务器获取共享数据。所述数据生产者发送的数据可以是多媒体文件对应的下载链接,或由字符串和唯一的键值(数据对应的键)构成的数据等等。
具体地,所述数据生产者用于发送数据至数据共享服务;
所述数据消费者用于向数据共享服务请求数据;
所述数据共享服务用于将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
所述数据共享服务还用于将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
所述数据共享服务还用于当接收到数据生产者发送的数据时,将所述数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述数据的键相同,则实时将所述数据发送至所述一第二关联关系中的数据消费者;
所述数据共享服务还用于当接收到数据消费者发送的请求时,将请求的数据的键与第一关联关系中的键进行匹配;若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
进一步地,所述将数据生产者与其发送的数据的键进行关联,得到第一关联关系具体为:
接收并保存数据生产者发送的数据,所述数据为键值对的形式;
将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。
进一步地,所述数据共享服务还用于保存所述第一关联关系和第二关联关系。
进一步地,所述数据共享服务还用于当异常重启时,加载所述第一关联关系和第二关联关系;根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求数据;接收数据生产者返回的数据,并保存至内存;若中存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,则实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
进一步地,所述数据共享服务还用于当接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,并将所述更新数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述更新数据的键相同,则实时将所述更新数据发送至所述一第二关联关系中的数据消费者。
进一步地,所述数据生产者和数据消费者与数据共享服务的连接方式为短连接。也就是说,各个数据生产者和数据消费者向数据共享服务发送数据或请求的时候均为一次性发送,发送后立即销毁,通过数据共享服务所在的服务器是否应答来确认消息是否发送成功,使得服务端不需要同时和多个使用者保持长久的链接关系,这样子既降低了服务器网络消耗又可以实现即连即用的效果,以防止网络中断导致的持久性通讯失败。
进一步地,所述数据生产者处于局域网或广域网,所述数据消费者处于局域网或广域网,所述数据共享服务处于局域网或广域网。也就是说,数据生产者、数据消费者和数据共享服务可以均处于局域网,也可以均处于广域网,还可以一些处于局域网,另一些处于广域网。
实施例六
本实施例是上述实施例的具体应用场景。
假设本实施例中有A、B、C、D、E五台计算机,其中A部署了数据共享服务的程序,B、C、D、E均部署了客户端程序。这些程序都集成了api套件。其中B、C为数据生产者,D、E为数据消费者。以下简称B、C、D、E中的客户端程序为B、C、D、E,A中的数据共享服务程序简称为A。
在具体应用中,包括以下几种情形:
一、
1、B发送(keyB,valueB)到A并更新(keyB,valueB)到其内存中。
2、A接受到该数据后把(keyB,valueB)存放到内存中,再应答B其收到消息。
3、B如果没有收到A的应答,则隔10秒重新发送。收到A应答后不再重新发送同一数据。
4、A将B的IP和端口以及keyB进行关联,并保存到“生产者信息文件”。然后查询keyB是否被某一个数据消费者请求,此时此刻假设D请求过该数据,那么A就会发送(keyB,valueB)到D,D收到该值后更新自己内存中的数据。自此B发送的数据更新到D,流程结束。
二、
1、E到A请求(keyB,valueB)的数据。
2、A首先应答E表明自己收到请求,使得E不会重复请求。A到自己的内存中查询keyB的数据,发现内存中有该数据,直接把(keyB,valueB)数据返回给E,同时将E的IP和端口以及keyB进行关联,并保存到“消费者信息文件”。
三、
1、E到A请求数据(keyE,valueE)。
2、A首先应答E表明自己收到请求,使得E不会重复请求。A到自己的内存中查询keyE的数据,发现内存中没有该数据,不做回复,同时将E的IP和端口以及keyE进行关联,并保存到“消费者信息文件”。
3、C发送(keyE,valueE)到A并更新(keyE,valueE)到其内存中。
4、A接受到该数据后把(keyE,valueE)存放到内存中,再应答C其收到消息。
5、C如果没有收到A的应答,则隔10秒重新发送。收到A应答后不在重新发送同一数据。
6、A将C的IP和端口以及keyE进行关联,并保存到“生产者信息文件”。A发现keyE曾经被E请求过,那么A就会发送(keyE,valueE)到E,E收到该数据后更新自己内存中的数据,则E在其请求过的数据更新或者添加的第一时间收到了该数据。
四、
1、A由于某种不可抗拒原因崩溃重启(如停电)。
2、A重启时候加载“消费者信息文件”和“生产者信息文件”到内存。
3、A查看生产者信息,发现B、C曾经提供过数据,发送命令使其重新发送曾经提供给A的所有数据。
4、B查询自己的内存,发现其提供过(keyB,valueB),C查询自己的内存,发现其提供过数据(keyE,valueE)。B、C分别把(keyB,valueB)、(keyE,valueE)重新发送给A。
5、A收到(keyB,valueB)、(keyE,valueE)后分别查询keyB和keyE和对应消费者的关联关系。发现keyB被D,E请求过,keyE被E请求过,则发送(keyB,valueB)到D、E,发送(keyE,valueE)到E。
6、自此A崩溃期间的的数据会被立刻恢复并且更新。
综上所述,本发明提供的一种数据共享方法、数据共享系统及计算机可读存储介质,通过将数据生产者与其提供的数据进行关联,实现输入登记,通过将数据消费者与其请求的数据进行关联,实现请求登记。当数据生产者发送数据,实时将数据发送给需要的数据消费者;当数据消费者请求数据时,若有数据消费者需要的数据,实时发送给数据消费者。当更新时,如果数据生产者提供的数据曾经被某个数据消费者请求过,则将该数据发送给该数据消费者,实现变更自动通知。采用的是变动登记和变动自动异步通知的方式,而非传统的RPC调用方式,使得多个系统服务之间完全解耦,极大降低了系统耦合度,提高了系统的稳定性或扩展性。通过采用变更通知的方式,可将系统耗费降到最低,从而降低了系统性能耗用。需要共享数据的应用程序、服务,只需注册自身的IP和端口,即可完成数据的共享和使用,即本实施例支持跨机器,跨网络使用,且可提供统一的接口,方便使用该数据共享服务的开发者,直接调用提供的函数来使用该数据共享服务,通过简单的注册登记即可接入并实现数据共享,提高了使用方便性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种数据共享方法,其特征在于,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
当接收到数据生产者发送的数据时,将所述数据生产者发送的数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述数据生产者发送的数据的键相同,则实时将所述数据生产者发送的数据发送至所述一第二关联关系中的数据消费者。
2.一种数据共享方法,其特征在于,包括:
将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
当接收到数据消费者发送的请求时,将数据消费者与其请求的数据的键进行关联,得到第二关联关系,并将请求的数据的键与第一关联关系中的键进行匹配;
若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
3.根据权利要求1或2所述的数据共享方法,其特征在于,所述将数据生产者与其发送的数据的键进行关联,得到第一关联关系具体为:
接收并保存数据生产者发送的数据,所述数据为键值对的形式;
将所述数据生产者与其发送的数据的键进行关联,得到第一关联关系。
4.根据权利要求1所述的数据共享方法,其特征在于,所述将数据消费者与其请求的数据的键进行关联,得到第二关联关系具体为:
接收数据消费者发送的请求,所述请求包括数据的键;
将所述数据消费者与其请求的数据的键进行关联,得到第二关联关系;
判断是否存在一第一关联关系,所述一第一关联关系中的键与所述数据消费者请求的数据的键相同;
若存在,则实时将所述一第一关联关系中的键对应的数据返回至所述数据消费者。
5.根据权利要求1或2所述的数据共享方法,其特征在于,还包括:
保存所述第一关联关系和第二关联关系。
6.根据权利要求5所述的数据共享方法,其特征在于,还包括:
当异常重启时,加载所述第一关联关系和第二关联关系;
根据第一关联关系中的键,向所述第一关联关系中的数据生产者请求数据;
接收数据生产者返回的数据,并保存至内存;
若存在一第二关联关系,所述一第二关联关系中的键与所述返回的数据的键相同,则实时将所述返回的数据发送至所述一第二关联关系中的数据消费者。
7.根据权利要求5所述的数据共享方法,其特征在于,还包括:
当接收到数据生产者发送的更新数据时,根据所述更新数据进行数据更新,并将所述更新数据的键与第二关联关系中的键进行匹配;
若一第二关联关系中的键与所述更新数据的键相同,则实时将所述更新数据发送至所述一第二关联关系中的数据消费者。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1、3-7任一项所述的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求2-3、5-7任一项所述的步骤。
10.一种数据共享系统,其特征在于,包括数据生产者、数据消费者和数据共享服务,所述数据生产者和数据消费者分别与所述数据共享服务连接;
所述数据生产者用于发送数据至数据共享服务;
所述数据消费者用于向数据共享服务请求数据;
所述数据共享服务用于将数据生产者与其发送的数据的键进行关联,得到第一关联关系;
所述数据共享服务还用于将数据消费者与其请求的数据的键进行关联,得到第二关联关系;
所述数据共享服务还用于当接收到数据生产者发送的数据时,将所述数据生产者发送的数据的键与第二关联关系中的键进行匹配;若一第二关联关系中的键与所述数据生产者发送的数据的键相同,则实时将所述数据生产者发送的数据发送至所述一第二关联关系中的数据消费者;
所述数据共享服务还用于当接收到数据消费者发送的请求时,将请求的数据的键与第一关联关系中的键进行匹配;若一第一关联关系中的键与所述请求的数据的键相同,则实时将所述一第一关联关系中的键对应的数据发送至所述数据消费者。
11.根据权利要求10所述的数据共享系统,其特征在于,所述数据生产者和数据消费者与数据共享服务的连接方式为短连接。
12.根据权利要求10所述的数据共享系统,其特征在于,所述数据生产者处于局域网或广域网,所述数据消费者处于局域网或广域网,所述数据共享服务处于局域网或广域网。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810816112.2A CN109254853B (zh) | 2018-07-24 | 2018-07-24 | 数据共享方法、数据共享系统及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810816112.2A CN109254853B (zh) | 2018-07-24 | 2018-07-24 | 数据共享方法、数据共享系统及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109254853A CN109254853A (zh) | 2019-01-22 |
CN109254853B true CN109254853B (zh) | 2020-10-27 |
Family
ID=65049773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810816112.2A Active CN109254853B (zh) | 2018-07-24 | 2018-07-24 | 数据共享方法、数据共享系统及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109254853B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086400B (zh) * | 2022-06-20 | 2023-11-10 | 光禹莱特数字科技(上海)有限公司 | 消息交互方法、装置、电子设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7596606B2 (en) * | 1999-03-11 | 2009-09-29 | Codignotto John D | Message publishing system for publishing messages from identified, authorized senders |
US9838242B2 (en) * | 2011-04-13 | 2017-12-05 | Jetflow Technologies | Flowlet-based processing with key/value store checkpointing |
CN102214206B (zh) * | 2011-04-27 | 2017-02-15 | 百度在线网络技术(北京)有限公司 | 一种用于在信息实体之间建立关联关系的方法与设备 |
US10475075B2 (en) * | 2013-03-15 | 2019-11-12 | Marchex, Inc. | Correlated consumer telephone numbers and user identifiers for advertising retargeting |
CN104301428B (zh) * | 2014-10-29 | 2017-09-12 | 广州视源电子科技股份有限公司 | 一种数据同步方法及服务器 |
WO2016115735A1 (en) * | 2015-01-23 | 2016-07-28 | Murthy Sharad R | Processing high volume network data |
EP3248340A4 (en) * | 2015-01-23 | 2018-01-03 | eBay Inc. | Processing high volume network data |
CN106210099B (zh) * | 2016-07-18 | 2019-07-09 | 珠海格力电器股份有限公司 | 数据处理系统及方法 |
CN106951913A (zh) * | 2017-02-13 | 2017-07-14 | 上海优刻得信息科技有限公司 | 进行数据交换的方法,云平台和系统 |
CN108009029B (zh) * | 2017-11-30 | 2022-01-04 | 中电福富信息科技有限公司 | 基于Ignite网格缓存数据解耦持久化的方法及系统 |
-
2018
- 2018-07-24 CN CN201810816112.2A patent/CN109254853B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109254853A (zh) | 2019-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7366738B2 (en) | Method and system for object cache synchronization | |
KR100451211B1 (ko) | 이동 컴퓨팅 환경에서 트랜잭션 캐시 일관성 유지 시스템및 방법 | |
US9753954B2 (en) | Data node fencing in a distributed file system | |
CN101090401B (zh) | 一种群集环境下的数据缓存方法及系统 | |
US6999997B2 (en) | Method and apparatus for communication of message data using shared queues | |
CN107317830B (zh) | 一种服务发现的处理方法及装置 | |
US7912858B2 (en) | Data synchronization method | |
CN112788074B (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
EP0817043A2 (en) | Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer | |
CN102411598B (zh) | 一种实现数据一致性的方法及其系统 | |
CN112565418B (zh) | 服务集群的消息重发方法、装置、计算机设备及存储介质 | |
CN109669821B (zh) | 消息中间件的集群部分故障恢复方法、服务器及存储介质 | |
US20130139178A1 (en) | Cluster management system and method | |
CN111935308A (zh) | 空间动态网络中时空频资源数据订阅发布方法和装置 | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
CN114500416B (zh) | 用于最多一次消息投递的投递方法和投递系统 | |
US7191356B2 (en) | Method for asynchronous support of fault-tolerant and adaptive communication | |
CN109254853B (zh) | 数据共享方法、数据共享系统及计算机可读存储介质 | |
US7565664B2 (en) | Distributed object controlling method and its carrying out system | |
CN115033656B (zh) | 基于地图缓存技术的数据处理方法、装置及电子装置 | |
US8089987B2 (en) | Synchronizing in-memory caches while being updated by a high rate data stream | |
US20100332604A1 (en) | Message selector-chaining | |
JP2002366381A (ja) | オブジェクトの動的入替え処理方法 | |
CN113973135A (zh) | 数据缓存处理方法、装置、缓存网格平台和存储介质 | |
JP3848290B2 (ja) | コンピュータ名引継ぎ時の名前解決方法、クラスタサーバ計算機及びクラスタサービスプログラム |
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 |