CN113360279A - 一种异地多活系统的实现方法 - Google Patents
一种异地多活系统的实现方法 Download PDFInfo
- Publication number
- CN113360279A CN113360279A CN202110603161.XA CN202110603161A CN113360279A CN 113360279 A CN113360279 A CN 113360279A CN 202110603161 A CN202110603161 A CN 202110603161A CN 113360279 A CN113360279 A CN 113360279A
- Authority
- CN
- China
- Prior art keywords
- request
- data
- room
- computer room
- central
- 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
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种异地多活系统的实现方法,包括以下步骤:S1、用户发送请求至LB负载均衡,LB负载均衡接收倒用户请求后将请求发送至API‑Router;S2、API‑Router根据ShardingKey确定用户请求数据,并根据判断请求类型将请求转发至不同的机房;S3、API‑Router根据ShardingKey确定用户请求数据对应的Sharding,并将请求路由到允许该请求数据写的机房;S4、机房执行写请求,并通知中心机房同步数据;S5、中心机房通知所有其他机房同步数据,并反馈结果给中心机房;S6、中心机房接收到所有其他机房同步完成的消息,并返回给该机房数据同步完成。本发明通过采用中心机房,所有其他机房只与中心机房存在数据同步,提高同步效率,每个分片sharding仅保持写操作,保证数据的强一致性。
Description
技术领域
本发明属于计算机技术领域,尤其是涉及一种异地多活系统的实现方法。
背景技术
目前各厂商通常采用异地多活的方式来保证服务的高可用、数据的安全和一致性,对于异地多活,每个节点均需要同步多个数据中心的数据,在这种情况下,任何节点下线都不会对业务产生影响,但在一次写操作过程中带来更大的时间开销,时间开销除了影响用户体验以外,还带来了更多的数据冲突,在严重的数据冲突下,使用分布式锁的代价也更大,这会导致系统的复杂度上升,吞吐量下降;因此,亟需一种异地多活系统的实现方法。
发明内容
有鉴于此,本发明旨在提出一种异地多活系统的实现方法,以解决上述问题的不足。
为达到上述目的,本发明的技术方案是这样实现的:
一种异地多活系统的实现方法,包括以下步骤:S1、用户发送请求至LB负载均衡,LB负载均衡接收倒用户请求后将请求发送至API-Router;
S2、API-Router根据ShardingKey确定用户请求数据,若判断为写请求,则进行下一步;若判断为读请求,API-Router将请求路由到最近的机房,最近的机房响应读请求,执行并返回结果;
S3、API-Router根据ShardingKey确定用户请求数据对应的Sharding,根据判断请求类型将请求路由到允许该请求数据写的机房;
S4、机房执行写请求,并通知中心机房同步数据;
S5、中心机房通知所有其他机房同步数据,并反馈结果给中心机房;
S6、中心机房接收到所有其他机房同步完成的消息,并返回给该机房数据同步完成。
进一步的,步骤S4-S5为sharding的一个事务,需保证数据的强一致性,若其中某一环节执行失败,则所有操作进行回滚;若各环节均执行成功,则返回成功。
进一步的,允许读写操作的sharding与中心机房之间的同步为双向同步,仅允许读操作的sharding与中心机房之间的同步为单向同步。
相对于现有技术,本发明所述的一种异地多活系统的实现方法具有以下有益效果:
本发明所述的一种异地多活系统的实现方法通过将用户请求发送至LB负载均衡,LB负载均衡获取请求数据并进行分片,利用中心机房,所有其他机房只与中心机房保持数据同步,提高同步效率,每个分片sharding仅保持写操作,保证数据的强一致性。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种异地多活系统的实现方法流程图;
图2为本发明实施例应用一种异地多活系统的实现方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
如图1所示,一种异地多活系统的实现方法,包括以下步骤:S1、用户发送请求至LB负载均衡,LB负载均衡接收倒用户请求后将请求发送至API-Router;
S2、API-Router根据ShardingKey确定用户请求数据,若判断为写请求,则进行下一步;若判断为读请求,API-Router将请求路由到最近的机房,最近的机房响应读请求,执行并返回结果;
S3、API-Router根据ShardingKey确定用户请求数据对应的Sharding,根据判断请求类型将请求路由到允许该请求数据写的机房;
S4、机房执行写请求,并通知中心机房同步数据;
S5、中心机房通知所有其他机房同步数据,并反馈结果给中心机房;
S6、中心机房接收到所有其他机房同步完成的消息,并返回给该机房数据同步完成。
步骤S4-S5为sharding的一个事务,需保证数据的强一致性,若其中某一环节执行失败,则所有操作进行回滚;若各环节均执行成功,则返回成功。
允许读写操作的sharding与中心机房之间的同步为双向同步,仅允许读操作的sharding与中心机房之间的同步为单向同步。
Sharding:分片,将完整的数据分成两个或多个较小的块,一种分布式数据架构模式,每个sharding内的数据独立与其他分区中的数据,所有的sharding组成完整的数据。
LB:负载均衡-Load balancing,是一种电子计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的,使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成,主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题;本方法中,LB用于将用户发来的请求,通过负载算法分配到不同的API Router上,分担单个API Router的压力并且保证API Router的高可用。
API Router:API路由,根据ShardingKey确定用户的请求数据属于哪个Sharding,并且根据用户请求的类型将请求转发到不同的机房;首先判断用户的请求是读还是写,如果是读请求,则转发到离用户最近的机房;如果是写请求,则根据ShardingKey找到该数据对应的Sharding,并且找到允许该sharding写请求的机房,将请求转发到该机房。
ShardingKey:分片主键,数据分片的依据,具有唯一性,根据数据的Shardingkey可以唯一的确定这个数据属于哪个sharding,即每个特定的数据只属于某一个sharding,不允许同时属于两个或多个sharding。
机房:提供服务,并且保存数据,为了实现异地多活,每个机房都会保存所有的数据,但是为了保证数据的强一致,避免多写导致的数据混乱的情况,只允许某一个机房对某一个sharding有写请求,如图2所示,Sharding1的写请求只能在北京机房进行操作,上海机房、乌鲁木齐机房等等只允许操作Sharding1的写请求,允许Sharding1写请求的北京机房也允许Sharding1的读请求;同理,Sharding2和Sharding3的写请求只允许在上海机房操作,Sharding n的写操作只允许在乌鲁木齐机房操作。
中心机房:中心机房保存所有的Sharding数据,即完整的数据。但是中心机房不对外提供读写服务,只是一个冷备份;中心机房的主要作用是与其他所有机房进行数据的同步;对于允许读写操作的Sharding,与中心机房之间的同步数双向的,只允许读的Sharding与中心机房之间的同步是单向的。例如,北京机房,Sharding1允许读写操作,当Sharding1数据发生变化时,通知中心节点同步Sharding1的数据,然后中心节点通知其他机房同步自己的Sharding1的主机,最后所有机房同步完成后,中心节点通知北京节点Sharding1完成同步,这个完整的过程是Sharding1的一个事务,以此来保证数据的强一致。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种异地多活系统的实现方法,其特征在于,包括以下步骤:S1、用户发送请求至LB负载均衡,LB负载均衡接收倒用户请求后将请求发送至API-Router;
S2、API-Router根据ShardingKey确定用户请求数据,若判断为写请求,则进行下一步;若判断为读请求,API-Router将请求路由到最近的机房,最近的机房响应读请求,执行并返回结果;
S3、API-Router根据ShardingKey确定用户请求数据对应的Sharding,根据判断请求类型将请求路由到允许该请求数据写的机房;
S4、机房执行写请求,并通知中心机房同步数据;
S5、中心机房通知所有其他机房同步数据,并反馈结果给中心机房;
S6、中心机房接收到所有其他机房同步完成的消息,并返回给该机房数据同步完成。
2.根据权利要求1所述的一种异地多活系统的实现方法,其特征在于:步骤S4-S5为sharding的一个事务,需保证数据的强一致性,若其中某一环节执行失败,则所有操作进行回滚;若各环节均执行成功,则返回成功。
3.根据权利要求1所述的一种异地多活系统的实现方法,其特征在于:允许读写操作的sharding与中心机房之间的同步为双向同步,仅允许读操作的sharding与中心机房之间的同步为单向同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110603161.XA CN113360279A (zh) | 2021-05-31 | 2021-05-31 | 一种异地多活系统的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110603161.XA CN113360279A (zh) | 2021-05-31 | 2021-05-31 | 一种异地多活系统的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360279A true CN113360279A (zh) | 2021-09-07 |
Family
ID=77530665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110603161.XA Pending CN113360279A (zh) | 2021-05-31 | 2021-05-31 | 一种异地多活系统的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360279A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443057A (zh) * | 2022-01-25 | 2022-05-06 | 北京百度网讯科技有限公司 | 对话模型的部署和对话方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120233315A1 (en) * | 2011-03-11 | 2012-09-13 | Hoffman Jason A | Systems and methods for sizing resources in a cloud-based environment |
CN104980519A (zh) * | 2015-06-29 | 2015-10-14 | 北京奇虎科技有限公司 | 多机房存储系统 |
CN105095199A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 业务数据处理方法、装置和系统 |
CN108011995A (zh) * | 2017-12-19 | 2018-05-08 | 北京星河星云信息技术有限公司 | 异地多活的实现方法、异地多活服务平台及存储介质 |
CN110691124A (zh) * | 2019-09-24 | 2020-01-14 | 华润网络(深圳)有限公司 | 一种异地多活架构下数据处理方法及系统 |
-
2021
- 2021-05-31 CN CN202110603161.XA patent/CN113360279A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120233315A1 (en) * | 2011-03-11 | 2012-09-13 | Hoffman Jason A | Systems and methods for sizing resources in a cloud-based environment |
CN105095199A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 业务数据处理方法、装置和系统 |
CN104980519A (zh) * | 2015-06-29 | 2015-10-14 | 北京奇虎科技有限公司 | 多机房存储系统 |
CN108011995A (zh) * | 2017-12-19 | 2018-05-08 | 北京星河星云信息技术有限公司 | 异地多活的实现方法、异地多活服务平台及存储介质 |
CN110691124A (zh) * | 2019-09-24 | 2020-01-14 | 华润网络(深圳)有限公司 | 一种异地多活架构下数据处理方法及系统 |
Non-Patent Citations (3)
Title |
---|
剑曼红尘: "什么是多城异地多活", 《HTTPS://DEVELOPER.ALIYUN.COM/ASK/275903》 * |
占小狼的博客: "高可用解决方案:同城双活?异地双活?异地多活?怎么实现?", 《微信公众号-占小狼的博客》 * |
李双涛: "饿了么异地多活技术实现(一)", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/32009822》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443057A (zh) * | 2022-01-25 | 2022-05-06 | 北京百度网讯科技有限公司 | 对话模型的部署和对话方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11320991B2 (en) | Identifying sub-health object storage devices in a data storage system | |
US11360854B2 (en) | Storage cluster configuration change method, storage cluster, and computer system | |
CN102404390B (zh) | 高速实时数据库的智能化动态负载均衡方法 | |
US7225356B2 (en) | System for managing operational failure occurrences in processing devices | |
US8055735B2 (en) | Method and system for forming a cluster of networked nodes | |
US11068499B2 (en) | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching | |
US20120079090A1 (en) | Stateful subnet manager failover in a middleware machine environment | |
CN102148850A (zh) | 一种集群系统的业务处理方法及集群系统 | |
CN102088490B (zh) | 数据存储方法、设备和系统 | |
CN104994168A (zh) | 分布式存储方法及分布式存储系统 | |
US20130139178A1 (en) | Cluster management system and method | |
CN106919473A (zh) | 一种数据灾备系统及业务处理方法 | |
CN111045602A (zh) | 集群系统控制方法及集群系统 | |
EP3648405A1 (en) | System and method to create a highly available quorum for clustered solutions | |
CN104753987B (zh) | 一种分布式会话管理方法及系统 | |
CN107357800A (zh) | 一种数据库高可用零丢失解决方法 | |
CN112783694B (zh) | 一种高可用Redis的异地灾备方法 | |
CN104753707A (zh) | 一种系统维护方法及网络交换设备 | |
CN113360279A (zh) | 一种异地多活系统的实现方法 | |
KR101430570B1 (ko) | 분산 컴퓨팅 시스템 및 상기 분산 컴퓨팅 시스템에서의 장애 복구 방법 | |
JP2020191100A (ja) | システム及びその制御方法並びにプログラム | |
JP5016696B2 (ja) | 高可用性システム、サーバ、高可用性維持方法及びプログラム | |
CN115102961A (zh) | 一种高并发网络访问分流方法及装置 | |
CN112019601B (zh) | 一种基于分布式存储Ceph的两节点实现方法及系统 | |
EP3884648B1 (en) | Geo-replicated iot hub |
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: 20210907 |
|
RJ01 | Rejection of invention patent application after publication |