CN110691124B - 一种异地多活架构下数据处理方法及系统 - Google Patents
一种异地多活架构下数据处理方法及系统 Download PDFInfo
- Publication number
- CN110691124B CN110691124B CN201910904914.3A CN201910904914A CN110691124B CN 110691124 B CN110691124 B CN 110691124B CN 201910904914 A CN201910904914 A CN 201910904914A CN 110691124 B CN110691124 B CN 110691124B
- Authority
- CN
- China
- Prior art keywords
- transaction
- message queue
- local
- point
- database
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000013467 fragmentation Methods 0.000 claims description 27
- 238000006062 fragmentation reaction Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000002159 abnormal effect Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/466—Transaction processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开是关于一种异地多活架构下数据处理方法及系统。该方法包括:获取由全局负载均衡模块转发的交易请求并进行分片;检查本地消息队列消费情况;在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库;将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列;根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。本公开的方案,能满足交易过程的强一致性保障要求。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种异地多活架构下数据处理方法及系统。
背景技术
目前,随着社交网络、云计算等技术不断融入人们的生活,以及现有的计算能力、存储空间、网络带宽等高速发展,人类积累的数据在互联网、通信、金融、商业等诸多领域不断地增长和累积。相关技术中,需要对各种各样的数据例如交易数据进行处理,其中涉及到不同数据中心的数据一致性保障的问题。
目前市场上存在不同的异地多活架构数据处理方法。所谓异地多活,一般是指在不同城市建立独立的数据中心,异地主要是指地理位置上不同的地方,多活就指不同地理位置上的系统都能够提供业务服务。在异地多活的架构中,如何保证数据的一致性成为一个非常重要的问题。为了解决该问题,在当前一些互联网系统中,在数据一致性、系统的可用性和用户体验感这三个重要指标上进行取舍。有的系统为了保证系统数据的一致性,牺牲了用户体验感,让所有用户的请求都访问某一个机房内的资源,这会影响部分用户的访问体验。有的系统为了保障数据一致性,在某些场景下,牺牲了系统的可用性,在分布式架构下,某些功能只有一个机房对用户提供服务,当这个机房系统出现不可用状况时,系统的部分功能无法对用户提供服务。有的系统为了保障用户的体验感和系统的可用性,牺牲了数据的一致性,多个机房同时对用户提供服务,极有可能造成数据的冲突,从而造成数据的不一致。
相关技术中,例如某互联网公司的异地多活数据处理方法,是采用全局强一致性,按业务维度对流量进行切分,例如按骑手、商户或用户等维度对流量进行切分,读写都是在本地机房进行,正常情况下只需要本地机房的数据,对其它机房数据无依赖,跨机房数据延时无影响,同时控制使用数据库自增主键,在数据中增加毫秒级的时间戳,方便判断数据有效性。另外也考虑区域划分因素,对于不能按区域划分、写入量比较小的业务,进行跨机房读写,容忍一定程度跨机房延时。
但是,上述相关技术中的异地多活数据处理方法,只是一种最终一致性的数据保障,无法满足交易过程的强一致性保障要求。
发明内容
为克服相关技术中存在的问题,本公开提供一种异地多活架构下数据处理方法及系统,能满足交易过程的强一致性保障要求。
根据本公开实施例的第一方面,提供一种异地多活架构下数据处理方法,包括:
获取由全局负载均衡模块转发的交易请求并进行分片;
检查本地消息队列消费情况;
在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库;
将与所述交易请求对应的积分账户信息和所述积分交易的积分交易明细数据写入本地消息队列;
根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
优选的,所述获取由全局负载均衡模块转发的交易请求并进行分片,包括:
通过数据中心的API路由器获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片。
优选的,所述检查本地消息队列消费情况,包括:
通过数据中心的本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况。
优选的,所述在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库,包括:
在本地消息队列消费完成后,通过数据中心的虚拟IP模块将与交易请求对应的积分交易写入关联的数据库。
优选的,所述方法还包括:
通过本地的数据中心的中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
优选的,所述方法还包括:
通过设置单笔最大交易额和一次切换最大允许损失额控制交易的损失。
优选的,所述方法还包括:
在数据中心的本地消息队列消费完积分账户消息后再切换数据库,然后再切换流量;和/或,
在数据中心的数据库异常切换后,非本地分片账户等待本地消息队列的积分账户消息消费完后,进行积分交易。
根据本公开实施例的第二方面,提供一种异地多活架构下数据处理系统,包括全局负载均衡模块和至少两个以上数据中心;其中,
全局负载均衡模块,用于接收交易请求,并转发给不同的数据中心;
数据中心,用于获取由全局负载均衡模块转发的交易请求并进行分片,检查本地消息队列消费情况,在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库,将与所述交易请求对应的积分账户信息和所述积分交易的积分交易明细数据写入本地消息队列,根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
优选的,所述数据中心包括API路由器、本地交易微服务模块、虚拟IP模块;
所述API路由器,获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片,并分发给本地交易微服务模块;
所述本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况,在虚拟IP模块将与交易请求对应的积分交易写入关联的数据库后,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,根据虚拟IP模块写入数据库和本地交易微服务模块写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果;
所述虚拟IP模块,在所述本地交易微服务模块检查本地消息队列消费完成后,将与交易请求对应的积分交易写入关联的数据库。
优选的,所述数据中心还包括中间件组件模块:
所述中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
本公开的实施例提供的技术方案,包括以下有益效果:
本公开的异地多活架构下数据处理方法,是获取到交易请求并进行分片后,先检查本地消息队列消费情况,在本地消息队列消费完成后,才将与所述交易请求对应的积分交易写入数据库,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,最后是根据写入数据库和写入本地消息队列都成功,才向数据库提交事务并向用户返回交易结果。通过上述处理,帐户交易只有在数据库和消息队列都写入成功时才提交事务,可以保障交易事务的强一致性,另外也通过消息队列的方式结合数据分片方式保障数据一致性。
本公开的实施例,消息队列可以通过复制方式进行数据同步,可以通过本地的数据中心的中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步;在正常情况下的本地读写只需要在本地完成后即可,在异常切换时非本地分片账户在完成消息队列的消费后再进行积分交易
本公开的实施例,可以通过设置单笔最大交易额和一次切换最大允许损失额来控制交易的损失范围动态调整,从而可以将业务损失在可控范围内。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的流程图;
图2是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的另一流程图;
图3是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的应用架构示意图;
图4是本公开根据一示例性实施例示出的一种异地多活架构下数据处理系统的示意图框图;
图5是本公开根据一示例性实施例示出的一种异地多活架构下数据处理系统的另一示意图框图;
图6是根据一示例性实施例示出的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开提供了一种异地多活架构下数据处理方法,能满足交易过程的强一致性保障要求。
以下结合附图详细介绍本公开的技术方案。
图1是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的流程图。
如图1所示,该方法包括以下步骤:
在步骤101中,获取由全局负载均衡模块转发的交易请求并进行分片。
其中,可以通过数据中心的API路由器获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片。
在步骤102中,检查本地消息队列消费情况。
其中,可以通过数据中心的本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况。
在步骤103中,在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库。
其中,可以在本地消息队列消费完成后,通过数据中心的虚拟IP模块将与交易请求对应的积分交易写入关联的数据库。
在步骤104中,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列。
其中,可以通过数据中心的本地交易微服务模块,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列。
在步骤105中,根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
由该实施例可见,本公开的异地多活架构下数据处理方法,是获取到交易请求并进行分片后,先检查本地消息队列消费情况,在本地消息队列消费完成后,才将与所述交易请求对应的积分交易写入数据库,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,最后是根据写入数据库和写入本地消息队列都成功,才向数据库提交事务并向用户返回交易结果。通过上述处理,帐户交易只有在数据库和消息队列都写入成功时才提交事务,可以保障交易事务的强一致性,另外也通过消息队列的方式结合数据分片方式保障数据一致性。
图2是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的另一流程图。图2相对于图1更详细描述了本公开的方案。同时参见图3,是本公开根据一示例性实施例示出的一种异地多活架构下数据处理方法的应用架构示意图。
图3中的应用架构,包括GSLB(Global Server Load Balance,全局负载均衡)模块、DC(DataCenter,数据中心)1、DC2,每个数据中心中包括API(Application ProgrammingInterface,应用程序接口)路由器、本地交易微服务模块(即积分交易模块)、虚拟IP模块(即Nginx)。DC1中的数据库包括主A1、主A2、主A3、从B,DC2中的数据库包括从A1、从A2、从A3、主B,需说明的是,上述图中的数据库主从设置可以根据实际情况或需要进行调整,图中只是举例说明但不局限于此。
图3中,线条111表示积分交易请求,线条112表示A组DB写请求,线条113表示B组DB写请求,线条114表示消息发送,线条115表示A组FAILOVER(故障切换)DB写请求,线条116表示B组FAILOVER DB写请求。
图2中的流程主要是先查看本地消息队列的消费情况,在消费完后再写数据库、写本地消息队列,然后向数据库提交事务,最后返回交易结果。
参见图2,该方法可以包括以下步骤:
在步骤201中,由GSLB模块获取交易请求,根据链路负载情况将交易请求转发给不同数据中心。
本公开中,假设存在区域1的DC1和区域2的数据中心DC2,通过GSLB模块(全局负载均衡模块,也称为负载均衡器)将交易请求转发给数据中心DC1或DC2,例如将A组交易请求或B组交易请求进行转发,转发给DC1或DC2。
GSLB的作用是实现在广域网(包括互联网)上不同地域的服务器间的流量调配,保证使用最佳的服务器服务离自己最近的客户,从而确保访问质量。
所述的交易请求,例如可以是充值、兑分等交易请求。
在步骤202中,由数据中心的API路由器根据预设的自定义规则,将接收的交易请求分发到数据中心的本地交易微服务模块。
其中预设的自定义规则,例如可以是按用户账户进行分片的分片规则但不局限于此。其中,分发的交易请求优先发送到数据中心的本地交易微服务模块。
其中,所述的分片,例如将积分账户数据按照用户账户分片,不同分片会被写入不同机房。例如A组用户默认汕尾机房是主数据库,则A组用户请求将另外一个区域沙河的积分交易调度过来时,是需要跨机房写入到汕尾机房的主数据库。
其中,将大数据进行切分,是实现数据集群化存储和计算的一种手段。本公开方案按照用户账户分片,可以采用Hash(哈希)分片方法但不局限于此,例如还可以采用范围分片方法等。其中采用Hash分片方法,又包括可以采用哈希取模法、一致性哈希或虚拟桶算法等,本公开不加以限制。
在步骤203中,由本地交易微服务模块检查本地消息队列中的积分账户消息和积分交易明细的消费情况。
该步骤中,可以首先由本地交易微服务模块判断本地消息队列中的积分账户消息和积分交易明细是否全部消费完成,如果全部消费完成后则可以进入步骤204进行数据库写入操作,如果没有完全消费完,则进一步判断是否在设置的允许消费额之内,如果未在允许消费额之内则等待消息队列继续消费到允许消费额之内甚至消费完,如果在允许消费额之内,则继续消费。
所说的消费,也可以理解为处理。例如某些场景中,当业务前端生产者产生消息之后,通常是将待处理的消息存储于消息队列的消息分区中,然后交由后端的消费端进行处理,所进行的处理就可以称为消费。
本公开可以设置以下参数:
单笔最大交易额:DB(Database,数据库)异常切换后需控制非本地分片账户积分交易的单笔最大值。通过设置单笔最大交易额,可减少损失。
一次切换最大允许损失额:DB异常切换后能接受的最大积分损失额,即将账户同步延迟数乘以单笔最大交易额。
账户同步延迟数:指积分账户通过本地消息队列进行双机房同步,存在同步延迟可能性的个数,可以定义一个阈值,达到阈值后,不能进行积分交易。
上述通过设置单笔最大交易额和一次切换最大允许损失额来控制交易的损失范围动态调整,从而可以将业务损失在可控范围内。
本公开方案中,如果本地消息队列中积压的积分账户消息超过允许的设定数量,则积分交易停止。
本公开方还可以建立灰名单机制:积压在本地消息队列中的积分账户为灰名单,在DB异常切换后非本地分片账户如果在灰名单内,原则上不能进行积分交易,只能进行积分相关查询,以减少业务损伤。
在步骤204中,在本地消息队列中的积分账户消息和积分交易明细消费完成后,由本地交易微服务模块通过虚拟IP模块将与交易请求对应的积分交易写入关联的数据库。
其中的虚拟IP模块,也即Nginx,Nginx是一个高性能的HTTP和反向代理web服务器。
例如,正常情况下,该步骤中数据中心DC1中的虚拟IP模块将与A组交易请求对应的积分交易写入数据中心DC1中的主数据库主A1、主A2、主A3;
数据中心DC2中的虚拟IP模块将与B组交易请求对应的积分交易写入数据中心DC2中的主数据库主B。
需说明的是,在异常情况下,DC1中的主数据库主A1、主A2、主A3所对应的用户流量切换到DC2后的情况如下:
数据中心DC2中的虚拟IP模块将与A组交易请求对应的积分交易写入数据中心DC1中的主数据库主A1、主A2、主A3。
在异常情况下,DC2中的主数据库主B所对应的用户流量切换到DC1后的情况如下:
数据中心DC1中的虚拟IP模块将与B组交易请求对应的积分交易写入数据中心DC2中的主数据库主B。
本公开方案,可以进行无损优雅切换:例如,可以设置流量挡板,等本地消息队列消费完积分账户消息后再切换DB,然后再切流量。例如将A组请求在DC1和DC2的流量挡住,可能会有几秒的闪断。DC2消费完DC1.A和DC2.A这两个消息队列后,通过虚拟IP模块将主A1、主A2、主A3切换至从A1、从A2、从A3,再把A组所有请求切到DC2。
还需说明的是,当数据库进行主备切换后,主数据库(主库)变成从数据库(从库),从数据库变成主数据库,图3中的虚线将变成实线,实线将变成虚线,数据就写入所变的实线对应的主数据库。例如,数据库进行主备切换后,数据中心DC1中的虚拟IP模块将与A组交易请求对应的积分交易写入图3中数据中心DC2中的数据库从A1、从A2、从A3(切换后由从库变为了主库);
数据中心DC2中的虚拟IP模块将与B组交易请求对应的积分交易写入图3中数据中心DC1中的数据库从B(切换后由从库变为了主库)。
本公开方案,可以进行异常切换:例如,DB异常切换后,非本地分片账户进行积分交易,需先在本地消息队列消费完积分账户消息再允许积分交易,即等待本地消息队列的积分账户消息消费完后,进行积分交易。DB切换一天可以只支持一次但不局限于此,切换DB后再进行业务兜底检查,进行异常数据修复后才回迁。其中所说的业务兜底检查,可以按相关技术中的常用方式进行检查,本公开不加以限定。
需说明的是,流量切换可以多次切换,流量切换尽量与DB分片保持一致,避免跨机房写操作。
在步骤205中,由本地交易微服务模块将与交易请求对应的积分账户信息和积分交易明细数据写入同个数据中心的本地消息队列。
例如,DC1的本地交易微服务模块将与交易请求对应的积分账户信息和积分交易明细数据写入DC1的的本地消息队列,DC2的本地交易微服务模块将与交易请求对应的积分账户信息和积分交易明细数据写入DC2的本地消息队列。
在步骤206中,由本地交易微服务模块在本地消息队列返回成功确认信息后,向数据库提交事务,向用户返回交易结果。
需说明的是,如果本地消息队列返回失败信息,则回滚事务,向用户返回失败结果。
也就是说,本公开方案所建立的积分交易事务机制,是在数据库写入成功和本地消息队列写入成功两个条件满足后,才向数据库提交事务,从而保证交易一致性。
在步骤207中,由本地数据中心的中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
本公开方案,可以将积分账户消息写入同机房本地消息队列,并通过消息复制的方式同步到异地机房。参见图3,图中进行消息复制的本地消息队列中包括DC1.A、DC2.A、DC1.B、DC2.B,将DC1中的DC1.A、DC2.A、DC1.B、DC2.B通过消息复制的方式复制到DC2中。
从上述方案可以看出,本公开方案包括以下有益效果:
1)可以保障交易事务的强一致性:帐户交易只有在数据库和消息队列都写入成功时才提交事务,保证交易一致性。
2)通过消息队列的方式结合数据分片保障数据一致性,消息队列通过复制方式进行数据同步,正常情况下的本地读写只需要在本地完成后即可,在异常切换时非本地分片帐户在完成消息队列的消费后再进行积分交易,一般可一天切换一次,在业务兜底检查完成后才进行数据回迁。
3)可以将业务损失在可控范围内:通过设置单笔最大交易额和一次切换最大允许损失额来控制交易的损失,损失范围可动态调整。
4)本公开的方案,可以保持业务的有序性。
与前述应用功能实现方法实施例相对应,本公开还提供了一种异地多活架构下数据处理系统、计算设备及相应的实施例。
图4是本公开根据一示例性实施例示出的一种异地多活架构下数据处理系统的示意图框图。
参见图4,一种异地多活架构下数据处理系统,包括全局负载均衡模块41、至少两个以上数据中心42和43。
全局负载均衡模块41,用于接收交易请求,并转发给不同的数据中心。
数据中心42和43,用于获取由全局负载均衡模块41转发的交易请求并进行分片,检查本地消息队列消费情况,在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
由该实施例可见,本公开的异地多活架构下数据处理方法,是获取到交易请求并进行分片后,先检查本地消息队列消费情况,在本地消息队列消费完成后,才将与所述交易请求对应的积分交易写入数据库,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,最后是根据写入数据库和写入本地消息队列都成功,才向数据库提交事务并向用户返回交易结果。通过上述处理,帐户交易只有在数据库和消息队列都写入成功时才提交事务,可以保障交易事务的强一致性,另外也通过消息队列的方式结合数据分片方式保障数据一致性。
图5是本公开根据一示例性实施例示出的一种异地多活架构下数据处理系统的另一示意图框图。
参见图5,一种异地多活架构下数据处理系统,包括全局负载均衡模块41、至少两个以上数据中心42和43。
其中,数据中心42和43包括:API路由器51、本地交易微服务模块52、虚拟IP模块53、中间件组件模块54。
API路由器51,获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片,并分发给本地交易微服务模块52。
其中,本公开按照用户账户分片,可以采用Hash(哈希)分片方法但不局限于此,例如还可以采用范围分片方法等。其中采用Hash分片方法,又包括可以采用哈希取模法、一致性哈希或虚拟桶算法等,本公开不加以限制。
本地交易微服务模块52,检查本地消息队列中的积分账户消息和积分交易明细的消费情况,在虚拟IP模块53将与交易请求对应的积分交易写入关联的数据库后,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,根据虚拟IP模块53写入数据库和本地交易微服务模块53写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
其中,本地交易微服务模块52可以判断本地消息队列中的积分账户消息和积分交易明细是否全部消费完成,如果全部消费完成则后续可进行数据库写入操作,如果没有完全消费完,则进一步判断是否在设置的允许消费额之内,如果未在允许消费额之内则等待消息队列继续消费到允许消费额之内甚至消费完,如果在允许消费额之内,则继续消费。
虚拟IP模块53,在所述本地交易微服务模块检查本地消息队列消费完成后,将与交易请求对应的积分交易写入关联的数据库。
中间件组件模块54,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
可以发现,本公开的实施例,是在数据库写入成功和本地消息队列写入成功两个条件满足后,才向数据库提交事务,从而保证交易一致性。本公开的消息队列可以通过复制方式进行数据同步,可以通过本地的数据中心的中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步;在正常情况下的本地读写只需要在本地完成后即可,在异常切换时非本地分片账户在完成消息队列的消费后再进行积分交易。
图6是根据一示例性实施例示出的一种计算设备的结构示意图,该计算设备可用于实现上述一种异地多活架构下数据处理方法。
参见图6,计算设备600包括存储器610和处理器620。
处理器620可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器620可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器620可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器610可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器620或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器610可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器610可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器610上存储有可执行代码,当可执行代码被处理器620处理时,可以使处理器620执行上文述及的上述数据处理方法。
上文中已经参考附图详细描述了根据本公开的上述方法。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种异地多活架构下数据处理方法,其特征在于,包括:
获取由全局负载均衡模块转发的交易请求并进行分片;
检查本地消息队列消费情况;
在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库;
将与所述交易请求对应的积分账户信息和所述积分交易的积分交易明细数据写入本地消息队列;
根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
2.根据权利要求1所述的方法,其特征在于,所述获取由全局负载均衡模块转发的交易请求并进行分片,包括:
通过数据中心的API路由器获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片。
3.根据权利要求1所述的方法,其特征在于,所述检查本地消息队列消费情况,包括:
通过数据中心的本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况。
4.根据权利要求1所述的方法,其特征在于,所述在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库,包括:
在本地消息队列消费完成后,通过数据中心的虚拟IP模块将与交易请求对应的积分交易写入关联的数据库。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过本地的数据中心的中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
通过设置单笔最大交易额和一次切换最大允许损失额控制交易的损失。
7.根据权利要求2至5任一项所述的方法,其特征在于,所述方法还包括:
在数据中心的本地消息队列消费完积分账户消息后再切换数据库,然后再切换流量;和/或,
在数据中心的数据库异常切换后,非本地分片账户等待本地消息队列的积分账户消息消费完后,进行积分交易。
8.一种异地多活架构下数据处理系统,其特征在于:
包括全局负载均衡模块和至少两个以上数据中心;其中,
全局负载均衡模块,用于接收交易请求,并转发给不同的数据中心;
数据中心,用于获取由全局负载均衡模块转发的交易请求并进行分片,检查本地消息队列消费情况,在本地消息队列消费完成后,将与所述交易请求对应的积分交易写入数据库,将与所述交易请求对应的积分账户信息和所述积分交易的积分交易明细数据写入本地消息队列,根据写入数据库和写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果。
9.根据权利要求8所述的系统,其特征在于:
所述数据中心包括API路由器、本地交易微服务模块、虚拟IP模块;
所述API路由器,获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片,并分发给本地交易微服务模块;
所述本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况,在虚拟IP模块将与交易请求对应的积分交易写入关联的数据库后,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,根据虚拟IP模块写入数据库和本地交易微服务模块写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果;
所述虚拟IP模块,在所述本地交易微服务模块检查本地消息队列消费完成后,将与交易请求对应的积分交易写入关联的数据库。
10.根据权利要求8或9所述的系统,其特征在于,所述数据中心还包括中间件组件模块:
所述中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904914.3A CN110691124B (zh) | 2019-09-24 | 2019-09-24 | 一种异地多活架构下数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904914.3A CN110691124B (zh) | 2019-09-24 | 2019-09-24 | 一种异地多活架构下数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110691124A CN110691124A (zh) | 2020-01-14 |
CN110691124B true CN110691124B (zh) | 2020-11-24 |
Family
ID=69110117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910904914.3A Active CN110691124B (zh) | 2019-09-24 | 2019-09-24 | 一种异地多活架构下数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110691124B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984681B (zh) * | 2020-08-20 | 2023-07-25 | 中国银行股份有限公司 | 贷后征信查询方法及装置 |
CN113360279A (zh) * | 2021-05-31 | 2021-09-07 | 紫光云技术有限公司 | 一种异地多活系统的实现方法 |
CN113704348B (zh) * | 2021-07-06 | 2023-06-30 | 中国科学院计算技术研究所数字经济产业研究院 | 基于分布式账本的信用积分管理方法 |
CN113609199B (zh) * | 2021-07-27 | 2023-09-12 | 远景智能国际私人投资有限公司 | 数据库系统、服务器及存储介质 |
CN114466076A (zh) * | 2022-01-18 | 2022-05-10 | 上海数据交易中心有限公司 | 普惠金融业务场景下应用的api网关架构及使用方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595570A (zh) * | 2013-11-20 | 2014-02-19 | 中国农业银行股份有限公司广东省分行 | 一种多活架构前置系统、服务器与业务处理方法 |
CN105095364A (zh) * | 2015-06-26 | 2015-11-25 | 车智互联(北京)科技有限公司 | 一种数据同步系统和方法 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN107404540A (zh) * | 2017-09-01 | 2017-11-28 | 北京奇虎科技有限公司 | 数据的同步方法及装置 |
CN109450988A (zh) * | 2018-10-19 | 2019-03-08 | 焦点科技股份有限公司 | 一种在异地多活架构下保障数据一致性的方法 |
CN110225087A (zh) * | 2019-05-08 | 2019-09-10 | 平安科技(深圳)有限公司 | 基于全局负载均衡的云存取方法、装置及存储介质 |
CN110245158A (zh) * | 2019-06-10 | 2019-09-17 | 上海理想信息产业(集团)有限公司 | 一种基于Flink流计算技术的多源异构数据实时处理系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065280B2 (en) * | 2003-12-17 | 2011-11-22 | International Business Machines Corporation | Method, system and computer program product for real-time data integrity verification |
US8548428B2 (en) * | 2009-01-28 | 2013-10-01 | Headwater Partners I Llc | Device group partitions and settlement platform |
US9270782B2 (en) * | 2012-06-12 | 2016-02-23 | Intermec Ip Corp. | System and method for managing network communications between server plug-ins and clients |
-
2019
- 2019-09-24 CN CN201910904914.3A patent/CN110691124B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595570A (zh) * | 2013-11-20 | 2014-02-19 | 中国农业银行股份有限公司广东省分行 | 一种多活架构前置系统、服务器与业务处理方法 |
CN105095364A (zh) * | 2015-06-26 | 2015-11-25 | 车智互联(北京)科技有限公司 | 一种数据同步系统和方法 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN107404540A (zh) * | 2017-09-01 | 2017-11-28 | 北京奇虎科技有限公司 | 数据的同步方法及装置 |
CN109450988A (zh) * | 2018-10-19 | 2019-03-08 | 焦点科技股份有限公司 | 一种在异地多活架构下保障数据一致性的方法 |
CN110225087A (zh) * | 2019-05-08 | 2019-09-10 | 平安科技(深圳)有限公司 | 基于全局负载均衡的云存取方法、装置及存储介质 |
CN110245158A (zh) * | 2019-06-10 | 2019-09-17 | 上海理想信息产业(集团)有限公司 | 一种基于Flink流计算技术的多源异构数据实时处理系统及方法 |
Non-Patent Citations (2)
Title |
---|
商业银行数据中心分布式异地多活运行模式;姜青云,孙付龙,郝东文;《中国新通信》;20180731;第46-47页 * |
谈谈异地多活架构;运维之美;《https://www.sohu.com/a/315098882_760387》;20190520;第1-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110691124A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110691124B (zh) | 一种异地多活架构下数据处理方法及系统 | |
AU2018243075B2 (en) | Service processing and consensus method and device | |
US8954786B2 (en) | Failover data replication to a preferred list of instances | |
JP5192226B2 (ja) | 待機系計算機の追加方法、計算機及び計算機システム | |
RU2714098C1 (ru) | Способ и устройство обработки данных | |
US10491560B2 (en) | Message delivery in messaging networks | |
US10148751B1 (en) | Asymmetric active-active storage for hyper-converged system | |
US20140258499A9 (en) | Load balancing when replicating account data | |
EP3896941A1 (en) | Main chain and parallel chain architecture system, block synchronization method, device, and storage medium | |
WO2016197994A1 (zh) | 容量扩展方法及装置 | |
CN110019514B (zh) | 数据同步方法、装置以及电子设备 | |
EP3435604A1 (en) | Service processing method, device, and system | |
US20120303912A1 (en) | Storage account migration between storage stamps | |
CN110111095B (zh) | 支付交易判重方法及支付系统 | |
US11102284B2 (en) | Service processing methods and systems based on a consortium blockchain network | |
CN103294167B (zh) | 一种基于数据行为的低能耗集群存储复制装置和方法 | |
US9264519B1 (en) | Embedding application services in a distributed datastore | |
US11086902B2 (en) | Method and system for implementing a redo repeater | |
CN107038192A (zh) | 数据库容灾方法和装置 | |
CN117155930B (zh) | 分布式系统的节点确定方法、任务处理方法及相关装置 | |
CN114327855A (zh) | 边缘节点宕机迁移的服务方法及系统 | |
CN107404511B (zh) | 集群中服务器的替换方法及设备 | |
US11500701B1 (en) | Providing a global queue through replication | |
CN113453340B (zh) | 服务方法、服务器集群以及LoRaWAN网络系统 | |
US11080113B1 (en) | Fifo queue replication |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: No. 1106-B092, Qianhai Xiangbin Building, No. 18, Zimao West Street, Nanshan Street, Qianhai Shenzhen Hong Kong Cooperation Zone, Shenzhen, Guangdong 518000 Patentee after: China Resources Network (Shenzhen) Co.,Ltd. Address before: 26F, baidu international building, No. 8, Haisi Road, Yuehai street, Nanshan District, Shenzhen, Guangdong Province Patentee before: China Resources Network (Shenzhen) Co.,Ltd. |