CN107273440A - 计算机应用、数据存储方法、微服务和微数据库 - Google Patents

计算机应用、数据存储方法、微服务和微数据库 Download PDF

Info

Publication number
CN107273440A
CN107273440A CN201710380672.3A CN201710380672A CN107273440A CN 107273440 A CN107273440 A CN 107273440A CN 201710380672 A CN201710380672 A CN 201710380672A CN 107273440 A CN107273440 A CN 107273440A
Authority
CN
China
Prior art keywords
node
attribute
microdata
host node
storehouse
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.)
Pending
Application number
CN201710380672.3A
Other languages
English (en)
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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201710380672.3A priority Critical patent/CN107273440A/zh
Publication of CN107273440A publication Critical patent/CN107273440A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

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

Abstract

本发明实施例提供一种计算机应用、数据存储方法、微服务和微数据库。所述方法适用于一种计算机应用,包括:主节点对主节点的微数据库中属性的记录进行更新操作;主节点向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。所述方法通过计算机应用中各微服务拥有属于自己的一个微数据库,且将一个属性的更新权限仅赋予主节点,使得从节点根据更新的事件进行同步更新,从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。

Description

计算机应用、数据存储方法、微服务和微数据库
技术领域
本发明实施例涉及一种通信技术领域,特别是一种计算机应用、数据存储方法、微服务和微数据库。
背景技术
微服务是一些协同工作的小而自治的服务,一个微服务就是一个独立的实体。它可以独立的部署在PAAS(Platform As A Service,平台即服务)上,也可以作为一个操作系统进程存在。
微服务之间通过网络调用进行通信,从而加强了服务之间的隔离性,避免紧耦合,它们可以彼此之间独立进行修改,并且某一个服务的部署不会引起该服务的消费方的变动。
在一个计算机应用中,如果其中一部分需要做性能提升,可以使用性能更好的技术栈来重构和部署这一部分,而不会对其他部分产生影响。微服务可以帮助更快地采用新技术来提高系统的性能。
随着领域驱动设计、持续交付、按需虚拟化、基础设施自动化、大型集群系统这些技术的流行,微服务应运而生。从前在一个单块服务内,随着新功能的增加,代码库会越变越大,以至于选择在什么地方做修改都很困难,而且庞大的单块服务只能作为一个整体进行扩展。即使服务中只有一小部分存在性能问题,也需要对整个单块服务进行修改扩展。而且在有相当数量行代码的单块服务中,即使只修改了一行代码,也需要重新部署整个应用程序才能够发布该变更,导致这种部署的影响很大、风险很高。
在这种背景下,微服务技术体现了它对比以往庞大单块服务的巨大优势。
采用微服务技术来构建部署系统具有上述的优点,但是采用微服务技术也存在以下的缺点:
采用微服务技术来构建部署系统,需要访问数据库数据和数据持久化的微服务需要通过接口读写数据库。
对数据库的部署存在两种情况:1.部署一个共享的数据库,所有微服务均访问读写这个共享的数据库来实现数据持久化;2.每个需要数据持久化的微服务维护一个自己的数据库,该数据库中存储整个系统的数据库的一个副本。
图1为现有技术中计算机应用的共享数据库示意图。
如图1所示,在情况1中,由于所有微服务共享一个数据库,该数据库的内部实现细节是可见的,如果其中某个微服务为了更好的表示数据或者增加可维护性而修改表结构的话,就可能导致其他微服务无法正常访问数据库中的数据,这通常需要做大量的回归测试来保证功能的正确性。其次,所有微服务都和特定类型的数据库绑定,无法实现松耦合。
在情况2中,虽然克服了情况1中所出现的耦合问题,但是却导致了每个微服务维护了一个相当庞大的数据库,整个系统的数据冗余程度过高。而且,同步所有数据库也会产生相当大的资源占用问题。
因此,现有技术中微服务的数据库通常需要做大量的回归测试,造成维护困难的问题,或者各微服务的数据库数据冗余程度过高,同步所有数据库造成的资源浪费的问题。
目前,现有技术还没有相应的方法来实现易于维护且高效利用资源的数据存储方案。
发明内容
针对现有技术的缺陷,本发明实施例提供一种计算机应用、数据存储方法、微服务和微数据库。
一方面,本发明实施例提供一种计算机应用,所述计算机应用由若干个微服务实现,每个微服务包括专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
另一方面,本发明实施例提供一种数据存储方法,所述方法适用于上述的计算机应用,包括:
主节点对主节点的微数据库中属性的记录进行更新操作;
主节点向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。
另一方面,本发明实施例还提供一种微服务,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以上方法。
另一方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上方法。
另一方面,本发明实施例还提供一种微数据库,所述微数据库是微服务的专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
另一方面,本发明实施例还提供一种微服务,包括上述微数据库。
由上述技术方案可知,本发明实施例提供的计算机应用、数据存储方法、微服务和微数据库,所述方法通过计算机应用中各微服务拥有属于自己的一个微数据库,且将一个属性的更新权限仅赋予主节点,使得从节点根据更新的事件进行同步更新,从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。
附图说明
图1为现有技术中计算机应用的共享数据库示意图;
图2为本发明一实施例提供的一种计算机应用的结构示意图;
图3为本发明又一实施例提供的一种数据存储方法的流程示意图;
图4为本发明又一实施例提供的一种数据存储方法的流程示意图;
图5为本发明又一实施例提供的一种数据存储方法的流程示意图;
图6为本发明又一实施例提供的一种计算机应用的结构示意图;
图7为本发明又一实施例提供的一种计算机应用的结构示意图;
图8为本发明又一实施例提供的一种微服务的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明实施例一部分实施例,而不是全部的实施例。
在本实施例中,微服务是一种新型软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务的节点。微服务可以是计算机,也可以是进程,可提供一个功能。
计算机应用是一个网络应用系统,所述计算机应用由若干个微服务实现。
图2示出了本发明实施例提供的一种计算机应用的结构示意图。
在本计算机应用中,每个微服务包括专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
在本实施例中,在计算机应用中引入微数据库的概念。
微数据库技术是本发明提出的一种不同于现有技术中数据库持久化技术的新概念。微数据库是指每个计算机应用中的节点维护自己的一个数据库,在每个微服务自己的微数据库中,只维护完成自己功能所需要读写的那部分数据。
其中,所述微数据库包括多个表,每个表包括多个列,一个列称为一个属性,每个属性包括多个记录。
可选地,对于计算机应用中,所有微数据库中表的每一个属性,存在且仅有一个微服务节点为其master,即所述主节点,其余需要读写此属性的微服务节点均为该属性的slave,即所述从节点,只能由master负责对该属性下的记录进行更新操作。
应当说明的是,每个属性具有master和slave,而微服务之间没有主从关系。
如图2所示,举例来说,微服务A的微数据库中的属性x的master为微服务B,微服务A和微服务C为属性x的slave,微服务B的微数据库中的属性y的master为微服务A,微服务B和微服务C为属性y的slave。
本实施例提供的计算机应用,至少具有以下技术效果:
通过计算机应用中各微服务拥有属于自己的一个微数据库,且将一个属性的更新权限仅赋予主节点,使得从节点根据更新的事件进行同步更新,从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。
图3示出了本发明实施例提供的一种数据存储方法的流程示意图。
参照图2和图3,本发明实施例提供的方法适用于上述的计算机应用,具体包括以下步骤:
步骤11、主节点对主节点的微数据库中属性的记录进行更新操作。
具体地,每个属性有且只有一个主节点,可以有若干个从节点。对于某个属性的主节点,可以对该属性进行读数据和更新已存在数据的操作。对于某个属性的从节点,可以对该属性进行读数据操作,不可以进行追加新数据和更新已存在数据的操作。当某个属性的主节点对该属性进行写操作,即更新操作时,包括追加新数据和更新已存在数据,主节点在正常完成本节点的写操作。
步骤12、主节点向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。
在主节点在正常完成本节点的写操作后,会将对该属性的写操作以事件的方式通知该属性的从节点,当从节点接收到写操作事件后,执行与该属性相关的修改操作,完成更新。
其中,主节点向发送事件的手段可采用现有技术中的点对点的数据传递方式。
所述主节点的微数据库和所述从节点的微数据库均为维护对应的微服务的数据存储设备,且由于只有属性的主节点具有所述属性的更新权限,其他从节点需对应进行同步更新,以维护各微数据库的一致性。
可选地,所述从节点根据所述事件,对从节点的微数据库进行同步更新,所述从节点的微数据库是维护对应的从节点功能的数据存储设备。也就是说,所述属性的slave则需要与所述属性的master保持同步,维持计算机应用内各微服务中数据库的一致性。
应当说明的是,微数据库不同于现有技术中水平分片和垂直分片的分布式数据库,水平分片和垂直分片的分布式数据库只是实现了对庞大单个数据库的分片,其本质上还是一个所有微服务共享的数据库,并不能解决微服务数据持久化中存在的高耦合、维护数据库之间的一致性会占用过量资源的问题,而系统内每个微服务节点拥有属于自己的一个微数据库,所述微数据库维护所述微服务完成自己功能所需要读写的那部分数据。
可以理解的是,计算机应用中各微服务拥有属于自己的一个微数据库,当属性的主节点进行更新时,所述属性的从节点仅需更新所述属性,即可实现各微数据库的同步。
本实施例提供的数据存储方法,至少具有以下技术效果:
通过计算机应用中各微服务拥有属于自己的一个微数据库,且将一个属性的更新权限仅赋予主节点,使得从节点根据更新的事件进行同步更新,从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。
图4示出了本发明又一实施例提供的一种数据存储方法的流程示意图。
参照图4,在上述实施例的基础上,本实施例提供的数据存储方法。所述步骤11之前,所述方法还包括:
步骤10、所述主节点接收所述从节点发送的更新请求,用于请求所述主节点对所述主节点的微数据库中属性的记录进行更新操作。
当某一属性的slave需要更新一条记录,所述slave需向所述属性的master发送更新请求,用于请求master对所述主节点的微数据库中属性的记录进行更新操作,在主节点对主节点的微数据库中所述属性的记录进行更新操作后,再向属性对应的各slave发送事件,使得slave接收所述事件,并对从节点的微数据库进行更新。
在本实施例中,由于计算机应用中对于某一属性,只有master可对有关此属性的记录项进行更新,保证了只有一个入口,从而可进一步保证master和所有slave间的数据一致性,而不会出现因为分别维护各自的微数据库造成的数据不一致。
可选地,所述主节点接收到所述从节点发送的更新请求后,对主节点的微数据库中属性的记录进行更新操作之前,所述方法还包括:
所述主节点从对应的所述主节点的微数据库中读取所述记录。
具体地,计算机应用中各微服务节点维护自己的一个微数据库,所述微数据库维护对应的微服务节点完成自己功能所需要读写的那部分数据。
在所述主节点读取运行所需数据时,可从对应的所述主节点的微数据库中读取所述记录。相应地,在所述从节点读取运行所需数据时,可从对应的所述从节点的微数据库中读取所述记录。
可选地,所述主节点对主节点的微数据库中属性的记录进行更新操作,具体为对主节点的微数据库中属性的记录进行增加、修改或删除。
具体地,所述系统内某一属性的master需要增加一条记录,所述slave需向所述属性的master发送增加所述记录的消息,通知该master向自己的数据库增加所述记录。
所述系统内某一属性的master需要修改一条记录,所述slave需向所述属性的master发送修改所述记录的消息,通知该master修改自己的数据库中的所述记录。
所述系统内某一属性的master需要删除一条记录,所述slave需向所述属性的master发送删除所述记录的消息,通知该master向自己的数据库删除所述记录。
可选地,所述主节点接收所述从节点发送的所述更新请求,具体为对主节点的微数据库中属性的记录进行增加、修改或删除。
具体地,所述系统内某一属性的slave需要增加一条记录,所述slave需向所述属性的master发送增加所述记录的消息,通知该master在主节点的微数据库增加所述记录。
所述系统内某一属性的slave需要修改一条记录,所述slave需向所述属性的master发送修改所述记录的消息,通知该master修改主节点的微数据库中的所述记录。
所述系统内某一属性的slave需要删除一条记录,所述slave需向所述属性的master发送删除所述记录的消息,通知该master删除主节点的微数据库中的所述记录。
也就是说,当一个从节点接收到某个属性的增/删/改请求时,并不能直接执行修改操作,从节点将对应的修改请求消息发送到主节点,使主节点执行相应的修改操作,将对该属性的写操作发送到该属性的从节点,从节点执行与该属性相关的修改操作,完成更新。
本实施例提供的数据存储方法,至少具有以下技术效果:
通过所述主节点接收所述从节点发送的更新请求,对主节点的微数据库中属性的记录进行更新操作,保证一个属性只有主节点可进行更新,从而可进一步保证主节点和从节点间的数据一致性。
图5示出了本发明又一实施例提供的一种数据存储方法的流程示意图。
参照图5,在上述实施例的基础上,所述步骤12,所述主节点向至少一个从节点发送事件的方式可有多种,本实施例举例说明其中一种。
所述步骤12具体为:
步骤12’、所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件。
可选地,发布订阅系统负责存储所述事件,主要用来解决高并发下减轻数据库的压力以及解决线程阻塞问题。
图6示出了本发明又一实施例提供的一种计算机应用的结构示意图。
如图6所示,所述主节点A向发布订阅系统发送所述事件,使得各从节点B和C接收所述事件。
图7示出了本发明又一实施例提供的一种计算机应用的结构示意图。
如图7所示,所述从节点C向发布订阅系统发送请求,用于请求主节点A更新属性,使得主节点A接收所述请求,所述主节点的微数据库进行属性更新,更新再向发布订阅系统发送所述事件,使得从节点B和C接收所述事件,对所述从节点的微数据库进行同步更新。
在步骤12’之前,所述方法还包括:
所述主节点向所述发布订阅系统发送设置请求,使得所述主节点能够向所述发布订阅系统发布或订阅所述事件。
发布-订阅模式包括生产者以及消费者,即发布方和订阅方,其主要特点就是每一个消息可以有多个消费者。生产者把消息发送到一个主题(Topic)中,消息代理将消息发布给订阅该主题的每一个消费者。
发布-订阅模式的主要特点就是每一个消息可以有多个消费者。生产者把消息发送到一个主题(Topic)中,消息代理将消息发布给订阅该主题的每一个消费者。
所述发布-订阅系统中,每一个属性为一个主题(Topic),所述master作为生产者将自己数据库里记录变化这一事件发送到对应的主题中。每个属性的所有slave会作为消费者订阅对应的主题。相应地,每个属性的master会作为消费者订阅所有针对这一属性的更新请求。
所述master在增加或更新所述记录时,将这一事件发送到发布-订阅系统中。所述事件存储于发布-订阅系统中等待被订阅所述事件对应的主题的作为消费者的slave消费。当所述slave消费所述事件时,会根据所述事件同步自己的数据库来保持与所述master的数据库的一致性。
也就是说,当某个属性的主节点对该属性进行写操作,包括追加新数据和更新已存在数据时,主节点在正常完成本节点的写操作后,会将对该属性的写操作以事件的方式发送到发布订阅系统,该属性的从节点通过订阅以该属性为主题的修改消息,当接收到某属性主节点发布的写操作事件后,发布订阅系统会将该事件转发给该属性的从节点。从节点执行与该属性相关的修改操作,完成更新。
当一个从节点接收到某个属性修改请求时,并不能直接执行修改操作,从节点发布以该属性为主题的修改请求消息到发布订阅系统,主节点通过订阅该消息接收到修改请求,执行相应的修改操作,将对该属性的写操作以事件的方式发送到发布订阅系统并进一步发送到该属性的从节点,从节点执行与该属性相关的修改操作,完成更新。
可选地,若所述主节点的微数据库存储的记录丢失后,所述主节点接收发布订阅系统中发送的备份事件,并根据所述备份事件进行所述主节点的微数据库的恢复,其中,所述备份事件是所述发布订阅系统接收所述主节点发送的所述事件时存储的事件。
当某一微服务节点失效后,即使数据库中数据丢失,也可以通过发布-订阅系统中存储的事件来恢复数据库,提高了系统的可用性。
本实施例提供的数据存储方法,至少具有以下技术效果:
通过发布订阅系统来传递主节点以从节点间的事件,可提高传递效率。
为了更充分理解本发明的技术内容,在上述实施例的基础上,本实施例提供的数据存储方法,可应用于多种场景中,本实施例以学校学生信息管理场景为例进行说明。
学校学生信息管理场景中,本实施例提供的数据存储方法应用于学校学生信息管理系统中。
参阅图2,其中微服务A为学生基本信息服务,微服务B为学生成绩管理服务,微服务C为学生成绩报告单邮寄服务。
其中,微服务A的数据库维护学生的学号、姓名、家庭住址信息,微服务B的数据库维护学生的学号、成绩信息,微服务C的数据库维护学生的学号、成绩、家庭住址信息。上述微服务均未维护系统内的所有属性,数据冗余度极低。
表1为学校学生信息管理系统内的数据关系。
如表1所示,微服务节点A是学生的学号、姓名、家庭住址的master,微服务B是学生成绩的master。微服务B是学生学号的slave,微服务C是学生学号、成绩和家庭住址的slave。
表2为学校学生信息管理系统内发布-订阅情况。
如表2所示,作为学生学号的slave的微服务B向发布-订阅系统订阅了学号这一属性,作为学生学号、成绩和家庭住址的slave的微服务C,向发布-订阅系统订阅了学生学号、成绩和家庭住址属性。相应地,各属性的master需要向发布-订阅系统订阅针对该属性的修改请求。
如图6所示,当需要向系统内注册一名新生的基本信息时,微服务A作为学生的学号、姓名、家庭住址的master,直接向自己的数据库添加一条新的记录,并将这个事件发送到发布-订阅系统的学号、姓名、家庭住址三个主题中。
此时,微服务B和C会从订阅了的主题中消费这个事件,相应地,微服务B会向自己的数据库中增加一条带有新的学号的记录,而微服务C会向自己的数据库中增加一条带有新的学号和对应家庭住址的记录。实现了系统内数据的一致性。
当需要向系统更新一条学生成绩记录时,微服务B作为学生成绩的master,直接向自己的数据库中更新一条学生成绩记录,并将这个事件发送到发布-订阅系统的成绩这一主题中。
此时,微服务C因为订阅了成绩这一主题会消费所述事件,向自己的数据库中更新对应的学生的成绩记录。实现了系统内数据的一致性。
如图7所示,当使用微服务C的负责邮寄学生成绩的老师发现其中一个学生的成绩录入错误需要修改时,因为微服务C并不是学生成绩的master,修改成绩属性下的记录项就需要向成绩属性的master(微服务B)请求,让微服务B作为学生成绩的master来修改自己数据库中对应的一条记录,所以微服务C向发布-订阅系统发送了一条修改成绩的请求。微服务B作为成绩修改请求的消费者,从发布-订阅系统收到来自微服务C的修改请求,向自己的数据库中更新自己数据库中对应的一条记录,并将这个事件发送到发布-订阅系统的成绩这一主题中。微服务C因为订阅了成绩这一主题会消费所述事件,向自己的数据库中更新对应的学生的成绩记录。实现了系统内数据的一致性,完成了对学生成绩的更新操作。
当某一微服务失效后,即使数据库中数据丢失,也可以通过发布-订阅系统中存储的事件来恢复数据库,提高了系统的可用性。
如果微服务C失效,重启后,它可以根据发布-订阅系统中持久化过的事件进行恢复,例如微服务A向系统中添加学生信息,微服务B向系统中更新学生信息的事件。由于发布-订阅系统的时间特性,所有事件是有序的,根据所述顺序就能恢复到数据库原有的状态。
本实施例提供的数据存储方法,至少具有以下技术效果:
(1)松耦合。每个微服务拥有属于自己的数据库,各自可以选择不同的数据库技术以及定义自己的数据库的数据模型和表结构。每个微服务不需要知道其他微服务的数据库的内部实现细节,如果其中某个微服务为了更好的表示数据或者增加可维护性而修改表结构的话,不会对其他微服务产生影响。
(2)数据冗余度低。每个微服务不需要维护一个相当庞大的数据库,整个系统的数据冗余程度低。
(3)维护一致性成本低。其中某一微服务更新一条记录,所述记录只会影响订阅了涉及该记录中属性的微服务,而不需要对系统内所有微服务的数据库进行同步。
(4)可扩展性高。如果系统中只有某个微服务存在性能问题,只需要对该微服务进行修改扩展。且只需要重新部署所述微服务就能够发布该变更,这种部署风险性小。如果想要在系统中加入新的微服务,新的微服务只需要向发布-订阅系统订阅所需的属性即可。
(5)当某一微服务失效后,即使数据库中数据丢失,也可以通过发布-订阅系统中存储的事件来恢复数据库,提高了系统的可用性。
图8示出了本发明又一实施例提供的一种微服务的结构示意图。
参照图8,所述微服务包括存储器91、处理器92以及存储在存储器91上并可在处理器上运行的计算机程序。
所述处理器92用于调用所述存储器91中的程序指令,以执行所述程序时实现如下的方法。
所述方法适用于计算机应用中,所述计算机应用由若干个微服务实现,每个微服务包括专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
对主节点的微数据库中属性的记录进行更新操作;
主向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。
所述主节点对主节点的微数据库中属性的记录进行更新操作之前,还包括所述主节点从对应的所述主节点的微数据库中读取所述记录。
所述主节点对主节点的微数据库中属性的记录进行更新操作,具体为对主节点的微数据库中属性的记录进行增加、修改或删除。
所述主节点向至少一个从节点发送事件,使得所述从节点接收所述事件,具体为:
所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件。
所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件之前,所述方法还包括:
所述主节点向所述发布订阅系统发送设置请求,使得所述主节点能够向所述发布订阅系统发布或订阅所述事件。
若所述主节点的微数据库存储的记录丢失后,所述主节点接收发布订阅系统中发送的备份事件,并根据所述备份事件进行所述主节点的微数据库的恢复,其中,所述备份事件是所述发布订阅系统接收所述主节点发送的所述事件时存储的事件。
所述主节点对主节点的微数据库中属性的记录进行更新操作之前,还包括:
所述主节点接收所述从节点发送的更新请求,用于请求所述主节点对主节点的微数据库中属性的记录进行更新操作。
本实施例提供的微服务,可用于执行上述方法实施例的方法对应的程序,本实施不再赘述。
本实施例提供的微服务,至少具有以下技术效果:
通过所述处理器执行所述程序时实现对主节点的微数据库中属性的记录进行更新操作,向至少一个从节点发送事件,使得所述从节点根据所述事件,对从节点的微数据库进行同步更新从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。
本发明又一实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
对主节点的微数据库中属性的记录进行更新操作;
主向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。
所述主节点对主节点的微数据库中属性的记录进行更新操作之前,还包括所述主节点从对应的所述主节点的微数据库中读取所述记录。
所述主节点对主节点的微数据库中属性的记录进行更新操作,具体为对主节点的微数据库中属性的记录进行增加、修改或删除。
所述主节点向至少一个从节点发送事件,使得所述从节点接收所述事件,具体为:
所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件。
所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件之前,所述方法还包括:
所述主节点向所述发布订阅系统发送设置请求,使得所述主节点能够向所述发布订阅系统发布或订阅所述事件。
若所述主节点的微数据库存储的记录丢失后,所述主节点接收发布订阅系统中发送的备份事件,并根据所述备份事件进行所述主节点的微数据库的恢复,其中,所述备份事件是所述发布订阅系统接收所述主节点发送的所述事件时存储的事件。
所述主节点对主节点的微数据库中属性的记录进行更新操作之前,还包括:
所述主节点接收所述从节点发送的更新请求,用于请求所述主节点对主节点的微数据库中属性的记录进行更新操作。
本实施例提供的计算机可读存储介质,所述程序被处理器执行时实现上述方法实施例的方法,本实施不再赘述。
本实施例提供的计算机可读存储介质,至少具有以下技术效果:
通过所述处理器执行所述程序时实现对主节点的微数据库中属性的记录进行更新操作,向至少一个从节点发送事件,使得所述从节点根据所述事件,对从节点的微数据库进行同步更新从而可占用较少的资源就能够维护计算机应用中各微数据库的一致性。
本发明又一实施例提供的一种微数据库,所述微数据库是微服务的专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
应当说明的是,微数据库不同于现有技术中水平分片和垂直分片的分布式数据库,水平分片和垂直分片的分布式数据库只是实现了对庞大单个数据库的分片,其本质上还是一个所有微服务共享的数据库,并不能解决微服务数据持久化中存在的高耦合、维护数据库之间的一致性会占用过量资源的问题,而系统内每个微服务节点拥有属于自己的一个微数据库,所述微数据库维护所述微服务完成自己功能所需要读写的那部分数据。
本实施例提供的微数据库,可实现上述方法实施例的方法,本实施不再赘述。
本实施例提供的微数据库,至少具有以下技术效果:
各微服务拥有属于自己的一个微数据库,当属性的主节点进行更新时,所述属性的从节点仅需更新所述属性,即可实现各微数据库的同步。
本发明又一实施例提供的一种微服务,包括一种微数据库。
其中,所述微数据库是微服务的专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
本实施例提供的微服务,所述微服务可实现上述方法实施例的方法,本实施不再赘述。
本实施例提供的微服务,至少具有以下技术效果:
各微服务拥有属于自己的一个微数据库,当属性的主节点进行更新时,所述属性的从节点仅需更新所述属性,即可实现各微数据库的同步。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。

Claims (10)

1.一种计算机应用,其特征在于,所述计算机应用由若干个微服务实现,每个微服务包括专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
2.一种数据存储方法,其特征在于,所述方法适用于权利要求1所述的计算机应用,包括:
主节点对主节点的微数据库中属性的记录进行更新操作;
主节点向至少一个从节点发送事件,所述事件包括所述主节点对所述属性的记录进行更新操作,使得所述从节点接收所述事件,根据所述事件,对从节点的微数据库进行同步更新。
3.根据权利要求2所述的方法,其特征在于:所述主节点向至少一个从节点发送事件,使得所述从节点接收所述事件,具体为:
所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件。
4.根据权利要求2所述的方法,其特征在于:所述主节点向发布订阅系统发送事件,使得发布订阅系统向所述从节点发送所述事件之前,所述方法还包括:
所述主节点向所述发布订阅系统发送设置请求,使得所述主节点能够向所述发布订阅系统发布或订阅所述事件。
5.根据权利要求3或4所述的方法,其特征在于:所述方法还包括:
若所述微数据库存储的记录丢失后,所述主节点接收发布订阅系统中发送的备份事件,并根据所述备份事件进行所述主节点的微数据库的恢复,其中,所述备份事件是所述发布订阅系统接收所述主节点发送的所述事件时存储的事件。
6.根据权利要求2-5任意一项所述的方法,其特征在于:所述主节点对主节点的微数据库中属性的记录进行更新操作之前,所述方法还包括:
所述主节点接收所述从节点发送的更新请求,用于请求所述主节点对所述主节点的微数据库中属性的记录进行更新操作。
7.一种微服务,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求2-6任意一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述程序被处理器执行时实现如权利要求2-6任意一项所述的方法。
9.一种微数据库,其特征在于,所述微数据库是微服务的专属的微数据库,每个微数据库只存储对应微服务功能的数据,不同的微数据库中的数据至少包括一个相同的属性,每个属性仅存在一个主节点,所述主节点为具有所述属性的更新权限的微服务,且存在至少一个从节点,所述从节点为不具有所述属性的更新权限的微服务,其中,所述主节点对该属性进行读数据或更新数据的操作,所述从节点对该属性进行读数据操作。
10.一种微服务,其特征在于,包括如权利要求9所述的微数据库。
CN201710380672.3A 2017-05-25 2017-05-25 计算机应用、数据存储方法、微服务和微数据库 Pending CN107273440A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710380672.3A CN107273440A (zh) 2017-05-25 2017-05-25 计算机应用、数据存储方法、微服务和微数据库

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710380672.3A CN107273440A (zh) 2017-05-25 2017-05-25 计算机应用、数据存储方法、微服务和微数据库

Publications (1)

Publication Number Publication Date
CN107273440A true CN107273440A (zh) 2017-10-20

Family

ID=60065691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710380672.3A Pending CN107273440A (zh) 2017-05-25 2017-05-25 计算机应用、数据存储方法、微服务和微数据库

Country Status (1)

Country Link
CN (1) CN107273440A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595670A (zh) * 2018-04-28 2018-09-28 金蝶蝶金云计算有限公司 一种数据存储方法、装置、计算机装置及存储介质
CN108696595A (zh) * 2018-05-28 2018-10-23 郑州云海信息技术有限公司 分布式集群数据同步方法、主节点、从节点、系统及介质
CN108924242A (zh) * 2018-07-19 2018-11-30 北京车联天下信息技术有限公司 服务更新方法、装置和大数据服务平台
CN109359449A (zh) * 2018-10-17 2019-02-19 郑州云海信息技术有限公司 一种基于微服务的鉴权方法、装置、服务器及存储介质
CN109684342A (zh) * 2018-12-21 2019-04-26 成都四方伟业软件股份有限公司 数据管理方法和装置
CN110175046A (zh) * 2019-05-23 2019-08-27 贝壳技术有限公司 一种目标系统技术栈的迁移方法及系统
CN110427174A (zh) * 2019-08-05 2019-11-08 浪潮云信息技术有限公司 一种基于数据库的微服务构建方法
CN111178782A (zh) * 2020-01-03 2020-05-19 广州博依特智能信息科技有限公司 一种流程工业数据化运营平台的微服务架构
CN112235378A (zh) * 2020-09-29 2021-01-15 北京三快在线科技有限公司 数据更新方法、装置、存储介质及电子设备
CN113438281A (zh) * 2021-06-05 2021-09-24 济南浪潮数据技术有限公司 一种分布式消息队列的存储方法、装置、设备及可读介质
CN115129740A (zh) * 2022-09-01 2022-09-30 山东大学 一种云原生环境下的分布式微服务数据库更新方法及系统
CN115934262A (zh) * 2021-08-06 2023-04-07 北京小米移动软件有限公司 进程的节点管理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置
CN102724304A (zh) * 2012-06-06 2012-10-10 哈尔滨工程大学 订阅/发布系统中信息仓库联邦及数据同步方法
CN105577780A (zh) * 2015-12-21 2016-05-11 武汉理工大学 一种基于微服务的高校教学云平台
CN106506605A (zh) * 2016-10-14 2017-03-15 华南理工大学 一种基于微服务架构的SaaS应用构建方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置
CN102724304A (zh) * 2012-06-06 2012-10-10 哈尔滨工程大学 订阅/发布系统中信息仓库联邦及数据同步方法
CN105577780A (zh) * 2015-12-21 2016-05-11 武汉理工大学 一种基于微服务的高校教学云平台
CN106506605A (zh) * 2016-10-14 2017-03-15 华南理工大学 一种基于微服务架构的SaaS应用构建方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋勇: "基于微服务架构的基础设施设计", 《软件》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595670A (zh) * 2018-04-28 2018-09-28 金蝶蝶金云计算有限公司 一种数据存储方法、装置、计算机装置及存储介质
CN108595670B (zh) * 2018-04-28 2021-05-14 金蝶蝶金云计算有限公司 一种数据存储方法、装置、计算机装置及存储介质
CN108696595A (zh) * 2018-05-28 2018-10-23 郑州云海信息技术有限公司 分布式集群数据同步方法、主节点、从节点、系统及介质
CN108924242A (zh) * 2018-07-19 2018-11-30 北京车联天下信息技术有限公司 服务更新方法、装置和大数据服务平台
CN109359449B (zh) * 2018-10-17 2020-10-30 苏州浪潮智能科技有限公司 一种基于微服务的鉴权方法、装置、服务器及存储介质
CN109359449A (zh) * 2018-10-17 2019-02-19 郑州云海信息技术有限公司 一种基于微服务的鉴权方法、装置、服务器及存储介质
CN109684342A (zh) * 2018-12-21 2019-04-26 成都四方伟业软件股份有限公司 数据管理方法和装置
CN110175046A (zh) * 2019-05-23 2019-08-27 贝壳技术有限公司 一种目标系统技术栈的迁移方法及系统
CN110427174A (zh) * 2019-08-05 2019-11-08 浪潮云信息技术有限公司 一种基于数据库的微服务构建方法
CN110427174B (zh) * 2019-08-05 2024-01-16 浪潮云信息技术股份公司 一种基于数据库的微服务构建方法
CN111178782A (zh) * 2020-01-03 2020-05-19 广州博依特智能信息科技有限公司 一种流程工业数据化运营平台的微服务架构
CN111178782B (zh) * 2020-01-03 2021-07-13 广州博依特智能信息科技有限公司 一种流程工业数据化运营平台的微服务架构
CN112235378A (zh) * 2020-09-29 2021-01-15 北京三快在线科技有限公司 数据更新方法、装置、存储介质及电子设备
CN112235378B (zh) * 2020-09-29 2022-12-16 北京三快在线科技有限公司 数据更新方法、装置、存储介质及电子设备
CN113438281A (zh) * 2021-06-05 2021-09-24 济南浪潮数据技术有限公司 一种分布式消息队列的存储方法、装置、设备及可读介质
CN113438281B (zh) * 2021-06-05 2023-02-28 济南浪潮数据技术有限公司 一种分布式消息队列的存储方法、装置、设备及可读介质
CN115934262A (zh) * 2021-08-06 2023-04-07 北京小米移动软件有限公司 进程的节点管理方法、装置、电子设备及存储介质
CN115934262B (zh) * 2021-08-06 2024-02-23 北京小米机器人技术有限公司 进程的节点管理方法、装置、电子设备及存储介质
CN115129740A (zh) * 2022-09-01 2022-09-30 山东大学 一种云原生环境下的分布式微服务数据库更新方法及系统
CN115129740B (zh) * 2022-09-01 2022-11-04 山东大学 一种云原生环境下的分布式微服务数据库更新方法及系统

Similar Documents

Publication Publication Date Title
CN107273440A (zh) 计算机应用、数据存储方法、微服务和微数据库
CN101504672B (zh) 一种动态配置实体数据表的方法和系统
CN106325933B (zh) 批量数据同步方法和装置
CN103379159B (zh) 一种分布式Web站点数据同步的方法
CN103229171B (zh) 基于快照的复制
CN103218248B (zh) 一种虚拟机镜像的更新方法、服务器和桌面云系统
CN104216793B (zh) 应用程序备份、恢复的方法及设备
CN106874334B (zh) 一种数据处理方法及装置、资讯处理系统
CN100458790C (zh) 访问数据库的方法和系统
CN103503414A (zh) 一种计算存储融合的集群系统
CN104407945B (zh) 数据备份的方法、装置及系统
CN105635311A (zh) 一种云管理平台中资源池信息同步的方法
CN103164525B (zh) Web应用发布方法和装置
CN103780638A (zh) 数据同步方法及系统
CN104657158B (zh) 一种业务系统中业务处理的方法和装置
CN109840166A (zh) 一种跨集群对象存储异步备份方法、装置和系统
US20140365437A1 (en) System and method for implementing database replication configurtions using replication modeling and transformation
CN108319623A (zh) 一种数据重分布方法、装置及数据库集群
CN103428264A (zh) 数据同步的方法、设备及系统
CN111614733A (zh) 一种分布式多分片集群的部署方法、装置及存储介质
CN105701159A (zh) 一种数据同步装置和方法
CN109144785A (zh) 用于备份数据的方法和装置
CN110502523A (zh) 业务数据存储方法、装置、服务器及计算机可读存储介质
CN106372160A (zh) 一种分布式数据库及管理方法
CN103365740B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20171020

RJ01 Rejection of invention patent application after publication