CN110928532B - 一种高一致性微服务架构及其数据更新方法 - Google Patents
一种高一致性微服务架构及其数据更新方法 Download PDFInfo
- Publication number
- CN110928532B CN110928532B CN201911138426.2A CN201911138426A CN110928532B CN 110928532 B CN110928532 B CN 110928532B CN 201911138426 A CN201911138426 A CN 201911138426A CN 110928532 B CN110928532 B CN 110928532B
- Authority
- CN
- China
- Prior art keywords
- data
- service
- service module
- module
- micro
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种高一致性微服务架构及其数据更新方法,业务模块仅负责对业务的处理,只进行查询并计算,将计算后的结果提交数据服务模块,该业务模块即完成了本次业务,当达到最后一个业务模块时,若计算成功,当前业务模块在写入时将通知数据服务模块这是业务链中的最后一步,数据服务模块会将该业务联中所有数据进行批量写入,控制在同一事务中,保证了数据写入的准确性;若业务联中某一业务产生错误,需要对数据进行回滚,则通知数据服务模块放弃该业务联的写入队列即可,并不需要通知上游服务进行回滚。本发明减少对数据库写入压力及微服务之间通讯的压力,减少提交事件和保存数据的时间,避免业务数据回滚不完全的情况。
Description
技术领域
本发明涉及数据交换网络的技术领域,特别涉及一种高一致性微服务架构及其数据更新方法。
背景技术
大型软件在使用传统的整体式架构应用开发时,随着新需求的不断增加,软件更新和维护变的越来越复杂且不可控,并且无法实现互联网发展的快速更新迭代模式。在此基础上,微服务软件架构应运而生。
微服务是一种架构风格,一般指大型软件应用中一个小的业务处理模块。微服务软件架构是指在软件设计时,将不同的业务拆分成不同的微服务,每个微服务之间通讯交互数据使用接口进行,软件中每一个微服务都是可以被独立部署的且松耦合的,每一个微服务只需要关注并且处理整体业务中的一部分。利用微服务架构,软件在更新迭代时可以迅速进行扩展,且部署更加平滑可控,某一项业务出问题时,不一定拖垮整个软件,因此备受青睐。
软件使用微服务架构时,最大的问题在于,某一个微服务对一个属性的数据进行修改并将其同步给其他所有微服务时,若需要同步的微服务部分成功、部分失败时,或是存在某一个微服务发生错误时,该数据在完整业务链中修改不完整,失败数据的回滚代价十分巨大,该问题不解决则会导致软件错误,并造成重大损失。
现有技术中,主要采用通知型-可靠事件模式解决上述问题。在该模式下,业务服务在提交数据前,先向一个事件服务发送通知,然后对数据进行修改,业务服务在接收到错误时,通知事件服务删除事件并进行回滚操作,若业务服务发生了宕机或服务错误,事件服务会定时对所有未发送的业务服务器进行确认,根据业务***的返回来决定是否继续下发、回滚或者保留事件。然而,此模式虽然解决了业务和数据分离的问题,但每个已进入业务流程的微服务却额外产生了至少两次网络通讯开销,即提交前和提交/回滚请求;同时,针对事件服务器,每个微服务需要在业务中为事件服务提供单独的查询接口用以判断当前微服务事件发送状态,导致了开发成本巨大,网络拥堵时业务服务响应将十分缓慢,并且微服务通讯压力集中在了事件服务中。
发明内容
本发明解决了现有技术中,对一个数据进行操作的过程中,每个微服务在处理时都可能产生数据错误,而回滚代价十分巨大,进而导致软件错误,造成重大损失,同时现有的解决方案额外产生了至少两次网络通讯开销,单独的查询接口使得开发成本巨大,网络拥堵时业务服务响应缓慢,并且微服务通讯压力集中在事件服务中的问题,提供了一种优化的高一致性微服务架构及其数据更新方法。
本发明所采用的技术方案是,一种高一致性微服务架构的数据更新方法,所述方法包括以下步骤:
步骤1:收到对任一数据修改的业务;触发任一业务模块S i ,其中,i为1至n的整数;
步骤2:S i 取出已存在数据进行计算,对数据进行修改,并将计算结果及下一个业务模块S j 通知数据服务模块,其中,j为1至n的整数,且i≠j;
步骤3:数据服务模块将S i 的计算结果保存入缓存,并将S i 的数据处理事务写入待写入队列;
步骤4:下一个业务模块S j 对接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算,将计算结果通知数据服务模块;
步骤5:若当前业务模块为业务的最后一个业务模块,则直接进行下一步,否则,数据服务模块将最近进行处理的业务模块的计算结果保存入缓存,并将最近进行处理的业务模块的数据处理事务写入待写入队列;S j 通知下一个业务模块,并以新的下一个业务模块为下一个业务模块S j ,通知数据服务模块,返回步骤4;
步骤6:当前业务模块通知数据服务模块当前为业务最后一步,数据服务模块将当前业务模块的数据处理事务写入待写入队列;
步骤7:数据服务模块将待写入队列中的所有内容写入数据库。
优选地,所述步骤4中,当任一业务模块接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算时发生错误,则当前业务模块终止业务,并将错误信息通知数据服务模块。
优选地,所述数据服务模块获取到任一业务模块的错误信息,清除当前业务的所有已经存储的待写入队列。
一种采用数据更新方法的高一致性微服务架构,所述微服务架构包括若干关联设置的业务模块,所述微服务架构软件还包括与业务模块配合的数据服务模块,所述数据服务模块配合设置有数据库;
任一所述业务模块用于完成限定部分的业务;
所述数据服务模块用于接收任一业务模块完成限定部分的业务后的计算结果、将数据处理事务写入待写入队列。
本发明提供了一种优化的高一致性微服务架构及其数据更新方法,减少对数据库写入压力及微服务之间通讯的压力。
本发明的处理方式为业务服务-数据服务的处理方式,是指业务模块仅负责对业务的处理,并不会对数据进行保存操作,只进行查询并计算,将计算后的结果提交数据服务模块,该业务模块即完成了本次业务,进而减少了现有技术方案中的提交事件和保存数据的时间,减少了两个步骤的时间。
本发明中,当达到最后一个业务模块时,若计算成功,当前业务模块在写入时将通知数据服务模块这是业务链中的最后一步,数据服务模块会将该业务联中所有数据进行批量写入,控制在同一事务中,保证了数据写入的准确性;若业务联中某一业务产生错误,需要对数据进行回滚,则通知数据服务模块放弃该业务联的写入队列即可,并不需要通知上游服务进行回滚。
本发明中,并没有将数据真实写入数据库,只存在于待写入队列,同时数据服务模块还承担了部分数据库的压力,当需要执行回滚操作时,只需要数据服务模块丢弃掉待写入队列,再由业务模块本身打断业务链,那么本次业务产生的数据都将不存在(除了日志记录);可以显著减少微服务之间的通讯时间,并且完全避免了业务数据回滚不完全的情况。
附图说明
图1为本发明的流程图;
图2为本发明的微服务架构结构图,其中,单向箭头表示业务模块执行的顺序,双向箭头表示数据的交互。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种高一致性微服务架构的数据更新方法,所述方法包括以下步骤。
步骤1:收到对任一数据修改的业务;触发任一业务模块S i ,其中,i为1至n的整数。
步骤2:S i 取出已存在数据进行计算,对数据进行修改,并将计算结果及下一个业务模块S j 通知数据服务模块,其中,j为1至n的整数,且i≠j。
本发明中,每一次业务模块修改完后,都会更新缓存并保存本次业务最新的数据,故已存在的数据即是指从缓存中取出的数据。
本发明中,每个业务模块作为服务提供商是独立的,可以根据不同的业务场景随意组合。
本发明中,为了保证正确的执行顺序,需要将本业务模块的计算结果和下一业务模块的信息都提供给数据服务模块,便于后续的跟踪。
步骤3:数据服务模块将S i 的计算结果保存入缓存,并将S i 的数据处理事务写入待写入队列。
步骤4:下一个业务模块S j 对接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算,将计算结果通知数据服务模块;
所述步骤4中,当任一业务模块接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算时发生错误,则当前业务模块终止业务,并将错误信息通知数据服务模块。
所述数据服务模块获取到任一业务模块的错误信息,清除当前业务的所有已经存储的待写入队列。
本发明中,当需要回滚数据时,任一业务模块进行计算时发生错误,当前业务模块主动打断业务链,并将错误信息通知数据服务模块,数据服务模块获取到报错的业务模块的错误信息后,清除该业务链的待写入队列,此时,数据没有被真实修改,数据在微服务的各个端中依然保持了一致。
本发明中,进一步来说,当任一业务模块发生错误时,整个流程即完成了数据回滚,即清除待写入队列,数据服务并不需要通知各个微服务业务链已经被打断,达到了最大限度的松耦合。
步骤5:若当前业务模块为业务的最后一个业务模块,则直接进行下一步,否则,数据服务模块将最近进行处理的业务模块的计算结果保存入缓存,并将最近进行处理的业务模块的数据处理事务写入待写入队列;S j 通知下一个业务模块,并以新的下一个业务模块为下一个业务模块S j ,通知数据服务模块,返回步骤4。
本发明中,当前业务模块不是业务的最后一个业务模块时,需要进一步将下一个业务模块的信息更新到数据服务模块,便于跟踪及监控。
步骤6:当前业务模块通知数据服务模块当前为业务最后一步,数据服务模块将当前业务模块的数据处理事务写入待写入队列。
步骤7:数据服务模块将待写入队列中的所有内容写入数据库。
本发明中,在完成一整个业务流程后,统一由数据服务模块将数据写入数据库,保证了数据库的稳定、数据的完整。
本发明还涉及一种高一致性微服务架构,所述微服务架构包括若干关联设置的业务模块,所述微服务架构软件还包括与业务模块配合的数据服务模块,所述数据服务模块配合设置有数据库;
任一所述业务模块用于完成限定部分的业务;
所述数据服务模块用于接收任一业务模块完成限定部分的业务后的计算结果、将数据处理事务写入待写入队列。
本发明减少对数据库写入压力及微服务之间通讯的压力。本发明的处理方式为业务服务-数据服务的处理方式,是指业务模块仅负责对业务的处理,并不会对数据进行保存操作,只进行查询并计算,将计算后的结果提交数据服务模块,该业务模块即完成了本次业务,进而减少了现有技术方案中的提交事件和保存数据的时间,减少了两个步骤的时间。
本发明中,当达到最后一个业务模块时,若计算成功,当前业务模块在写入时将通知数据服务模块这是业务链中的最后一步,数据服务模块会将该业务联中所有数据进行批量写入,控制在同一事务中,保证了数据写入的准确性;若业务联中某一业务产生错误,需要对数据进行回滚,则通知数据服务模块放弃该业务联的写入队列即可,并不需要通知上游服务进行回滚。
本发明中,并没有将数据真实写入数据库,只存在于待写入队列,同时数据服务模块还承担了部分数据库的压力,当需要执行回滚操作时,只需要数据服务模块丢弃掉待写入队列,再由业务模块本身打断业务链,那么本次业务产生的数据都将不存在(除了日志记录);可以显著减少微服务之间的通讯时间,并且完全避免了业务数据回滚不完全的情况。
Claims (4)
1.一种高一致性微服务架构的数据更新方法,其特征在于:所述方法包括以下步骤:
步骤1:收到对任一数据修改的业务;触发任一业务模块S i ,其中,i为1至n的整数;
步骤2:S i 取出已存在数据进行计算,对数据进行修改,并将计算结果及下一个业务模块S j 通知数据服务模块,其中,j为1至n的整数,且i≠j;
步骤3:数据服务模块将S i 的计算结果保存入缓存,并将S i 的数据处理事务写入待写入队列;
步骤4:下一个业务模块S j 对接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算,将计算结果通知数据服务模块;
步骤5:若当前业务模块为业务的最后一个业务模块,则直接进行下一步,否则,数据服务模块将最近进行处理的业务模块的计算结果保存入缓存,并将最近进行处理的业务模块的数据处理事务写入待写入队列;S j 通知下一个业务模块,并以新的下一个业务模块为下一个业务模块S j ,通知数据服务模块,返回步骤4;
步骤6:当前业务模块通知数据服务模块当前为业务最后一步,数据服务模块将当前业务模块的数据处理事务写入待写入队列;
步骤7:数据服务模块将待写入队列中的所有内容写入数据库。
2.根据权利要求1所述的一种高一致性微服务架构的数据更新方法,其特征在于:所述步骤4中,当任一业务模块接收上一个业务模块修改的数据,获取数据服务模块处保存的计算结果进行计算时发生错误,则当前业务模块终止业务,并将错误信息通知数据服务模块。
3.根据权利要求2所述的一种高一致性微服务架构的数据更新方法,其特征在于:所述数据服务模块获取到任一业务模块的错误信息,清除当前业务的所有已经存储的待写入队列。
4.一种采用权利要求1~3之一的数据更新方法的高一致性微服务架构,所述微服务架构包括若干关联设置的业务模块,其特征在于:所述微服务架构软件还包括与业务模块配合的数据服务模块,所述数据服务模块配合设置有数据库;
任一所述业务模块用于完成限定部分的业务;
所述数据服务模块用于接收任一业务模块完成限定部分的业务后的计算结果、将数据处理事务写入待写入队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138426.2A CN110928532B (zh) | 2019-11-20 | 2019-11-20 | 一种高一致性微服务架构及其数据更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138426.2A CN110928532B (zh) | 2019-11-20 | 2019-11-20 | 一种高一致性微服务架构及其数据更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928532A CN110928532A (zh) | 2020-03-27 |
CN110928532B true CN110928532B (zh) | 2022-04-29 |
Family
ID=69850342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911138426.2A Active CN110928532B (zh) | 2019-11-20 | 2019-11-20 | 一种高一致性微服务架构及其数据更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928532B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327955B (zh) * | 2021-12-31 | 2024-04-16 | 四川新网银行股份有限公司 | 一种中心化应用***的集群消息传递方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及*** |
CN107623729A (zh) * | 2017-09-08 | 2018-01-23 | 华为技术有限公司 | 一种缓存方法、设备及缓存服务*** |
CN109299122A (zh) * | 2018-09-26 | 2019-02-01 | 努比亚技术有限公司 | 一种数据同步方法、设备和计算机可存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10735509B2 (en) * | 2018-01-31 | 2020-08-04 | Ca, Inc. | Systems and methods for synchronizing microservice data stores |
US20190332522A1 (en) * | 2018-04-27 | 2019-10-31 | Satori Worldwide, Llc | Microservice platform with messaging system |
-
2019
- 2019-11-20 CN CN201911138426.2A patent/CN110928532B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及*** |
CN107623729A (zh) * | 2017-09-08 | 2018-01-23 | 华为技术有限公司 | 一种缓存方法、设备及缓存服务*** |
CN109299122A (zh) * | 2018-09-26 | 2019-02-01 | 努比亚技术有限公司 | 一种数据同步方法、设备和计算机可存储介质 |
Non-Patent Citations (2)
Title |
---|
Choerodon猪齿鱼平台中的微服务数据一致性解决方案;董凡;《https://choerodon.io/zh/blog/event-consistent/》;20180820;第1-22页 * |
如何保障微服务架构下的数据一致性;真爱无敌86;《https://blog.csdn.net/dongzhumao86/article/details/78108901》;20170927;第1-19页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110928532A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102073540B (zh) | 分布式事务提交方法和装置 | |
US7702741B2 (en) | Configuring or reconfiguring a multi-master information sharing environment | |
US8676749B2 (en) | Statement logging in databases | |
JP4291060B2 (ja) | トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム | |
US20120323849A1 (en) | Method For Maximizing Throughput And Minimizing Transaction Response Times On The Primary System In The Presence Of A Zero Data Loss Standby Replica | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
CN106503257B (zh) | 基于binlog补偿机制的分布式事务服务方法及*** | |
CN109753511B (zh) | 一种大数据平台的跨地域实时同步方法及*** | |
US8417669B2 (en) | Auto-correction in database replication | |
EP3172668B1 (en) | Speculative data processing of streaming data | |
CN106445644A (zh) | 基于改进的一阶段提交的分布式事务的处理方法和装置 | |
CN111459640B (zh) | 跨平台批量作业调度方法及*** | |
JP2007518195A (ja) | リモートデータミラーリングを用いたクラスタデータベース | |
WO2011120452A2 (zh) | 更新数据的方法和控制装置 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
CN102317913A (zh) | 一种事务恢复方法和事务恢复装置 | |
CN110928532B (zh) | 一种高一致性微服务架构及其数据更新方法 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN112905613A (zh) | 一种异构数据库的数据双向同步方法及装置 | |
CN110427427B (zh) | 一种通过引脚桥接实现全局事务分布式处理方法 | |
US20090037442A1 (en) | Reconfiguring Propagation Streams in Distributed Information Sharing | |
CN113515352B (zh) | 分布式事务异库模式反交易调用方法及装置 | |
CN113742043A (zh) | 一种服务器后端任务异步拆分方法 | |
WO2021109777A1 (zh) | 一种数据文件的导入方法及装置 | |
CN111738728A (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 |