CN110691124A - 一种异地多活架构下数据处理方法及系统 - Google Patents

一种异地多活架构下数据处理方法及系统 Download PDF

Info

Publication number
CN110691124A
CN110691124A CN201910904914.3A CN201910904914A CN110691124A CN 110691124 A CN110691124 A CN 110691124A CN 201910904914 A CN201910904914 A CN 201910904914A CN 110691124 A CN110691124 A CN 110691124A
Authority
CN
China
Prior art keywords
transaction
message queue
local
database
point
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.)
Granted
Application number
CN201910904914.3A
Other languages
English (en)
Other versions
CN110691124B (zh
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.)
China Resources Network Shenzhen Co Ltd
Original Assignee
China Resources Network Shenzhen Co Ltd
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 China Resources Network Shenzhen Co Ltd filed Critical China Resources Network Shenzhen Co Ltd
Priority to CN201910904914.3A priority Critical patent/CN110691124B/zh
Publication of CN110691124A publication Critical patent/CN110691124A/zh
Application granted granted Critical
Publication of CN110691124B publication Critical patent/CN110691124B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (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)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • Development Economics (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.根据权利要求7所述的系统,其特征在于:
所述数据中心包括API路由器、本地交易微服务模块、虚拟IP模块;
所述API路由器,获取由全局负载均衡模块转发的交易请求,按用户账户进行数据分片,并分发给本地交易微服务模块;
所述本地交易微服务模块,检查本地消息队列中的积分账户消息和积分交易明细的消费情况,在虚拟IP模块将与交易请求对应的积分交易写入关联的数据库后,将与交易请求对应的积分账户信息和积分交易明细数据写入本地消息队列,根据虚拟IP模块写入数据库和本地交易微服务模块写入本地消息队列都成功,向数据库提交事务并向用户返回交易结果;
所述虚拟IP模块,在所述本地交易微服务模块检查本地消息队列消费完成后,将与交易请求对应的积分交易写入关联的数据库。
10.根据权利要求8或9所述的系统,其特征在于,所述数据中心还包括中间件组件模块:
所述中间件组件模块,将本地的数据中心的本地消息队列通过消息复制方式同步到另一数据中心进行数据同步。
CN201910904914.3A 2019-09-24 2019-09-24 一种异地多活架构下数据处理方法及系统 Active CN110691124B (zh)

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 true CN110691124A (zh) 2020-01-14
CN110691124B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984681A (zh) * 2020-08-20 2020-11-24 中国银行股份有限公司 贷后征信查询方法及装置
CN113360279A (zh) * 2021-05-31 2021-09-07 紫光云技术有限公司 一种异地多活系统的实现方法
CN113609199A (zh) * 2021-07-27 2021-11-05 远景智能国际私人投资有限公司 数据库系统、服务器及存储介质
CN113704348A (zh) * 2021-07-06 2021-11-26 中国科学院计算技术研究所数字经济产业研究院 基于分布式账本的信用积分管理方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149601A1 (en) * 2003-12-17 2005-07-07 International Business Machines Corporation Method, system and computer program product for real-time data integrity verification
CN103595570A (zh) * 2013-11-20 2014-02-19 中国农业银行股份有限公司广东省分行 一种多活架构前置系统、服务器与业务处理方法
CN105095364A (zh) * 2015-06-26 2015-11-25 车智互联(北京)科技有限公司 一种数据同步系统和方法
CN106777026A (zh) * 2016-12-08 2017-05-31 用友网络科技股份有限公司 支持微服务架构事务最终一致性的方法、装置及系统
US20170223516A1 (en) * 2009-01-28 2017-08-03 Headwater Research Llc Device Group Partitions and Settlement Platform
US20170295265A1 (en) * 2012-06-12 2017-10-12 Intermec Ip Corp. Communication protocol and system for network communications
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流计算技术的多源异构数据实时处理系统及方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149601A1 (en) * 2003-12-17 2005-07-07 International Business Machines Corporation Method, system and computer program product for real-time data integrity verification
US20170223516A1 (en) * 2009-01-28 2017-08-03 Headwater Research Llc Device Group Partitions and Settlement Platform
US20170295265A1 (en) * 2012-06-12 2017-10-12 Intermec Ip Corp. Communication protocol and system for network communications
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)

* Cited by examiner, † Cited by third party
Title
姜青云,孙付龙,郝东文: "商业银行数据中心分布式异地多活运行模式", 《中国新通信》 *
运维之美: "谈谈异地多活架构", 《HTTPS://WWW.SOHU.COM/A/315098882_760387》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984681A (zh) * 2020-08-20 2020-11-24 中国银行股份有限公司 贷后征信查询方法及装置
CN111984681B (zh) * 2020-08-20 2023-07-25 中国银行股份有限公司 贷后征信查询方法及装置
CN113360279A (zh) * 2021-05-31 2021-09-07 紫光云技术有限公司 一种异地多活系统的实现方法
CN113704348A (zh) * 2021-07-06 2021-11-26 中国科学院计算技术研究所数字经济产业研究院 基于分布式账本的信用积分管理方法
CN113704348B (zh) * 2021-07-06 2023-06-30 中国科学院计算技术研究所数字经济产业研究院 基于分布式账本的信用积分管理方法
CN113609199A (zh) * 2021-07-27 2021-11-05 远景智能国际私人投资有限公司 数据库系统、服务器及存储介质
CN113609199B (zh) * 2021-07-27 2023-09-12 远景智能国际私人投资有限公司 数据库系统、服务器及存储介质

Also Published As

Publication number Publication date
CN110691124B (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
CN110691124B (zh) 一种异地多活架构下数据处理方法及系统
US8954786B2 (en) Failover data replication to a preferred list of instances
US8886796B2 (en) Load balancing when replicating account data
US10148751B1 (en) Asymmetric active-active storage for hyper-converged system
RU2714098C1 (ru) Способ и устройство обработки данных
US9344494B2 (en) Failover data replication with colocation of session state data
WO2016197994A1 (zh) 容量扩展方法及装置
US9647972B2 (en) Message delivery in messaging networks
EP3896941A1 (en) Main chain and parallel chain architecture system, block synchronization method, device, and storage medium
US10749954B2 (en) Cross-data center hierarchical consensus scheme with geo-aware leader election
CN107015876B (zh) 一种业务请求处理方法及装置
US8082351B1 (en) Software load balancing for session requests that maintain state information
CN110111095B (zh) 支付交易判重方法及支付系统
CN103294167B (zh) 一种基于数据行为的低能耗集群存储复制装置和方法
US9264519B1 (en) Embedding application services in a distributed datastore
US20210160312A1 (en) Service processing methods and systrems based on a consortium blockchain network
CN107168970A (zh) 一种分布式文件系统hdfs的管理方法、装置及系统
EP3008879A1 (en) Failover system and method
CN107038192B (zh) 数据库容灾方法和装置
CN113282564A (zh) 数据存储方法、系统、节点和存储介质
CN111767147A (zh) 云计算中一种针对分布式消息系统的负载均衡方法
CN114327855A (zh) 边缘节点宕机迁移的服务方法及系统
CN107404511B (zh) 集群中服务器的替换方法及设备
CN108463830B (zh) 用于本地交易授权的网桥
CN115238006A (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
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.

CP02 Change in the address of a patent holder