OceanBase如何解决支付宝数据库的高一致性

该文章来自于阿里巴巴技术协会(ATA)精选文章。

传统数据库通过共享存储保障主备库的数据一致性,去除共享存储后,由于网络、服务器、磁盘等的不可靠,数据库的主库与备库的数据一致性成为很大的挑战(更多信息参见下文“共享存储能否解决互联网数据库的一致性”)。OceanBase立足于互联网,必须解决互联网数据库的数据一致性问题,不仅要为淘宝、天猫等商业系统提供数据库,而且要为支付宝等金融系统提供数据库。

数据库数据一致性问题的根源是软件(操作系统软件、网络软件、应用软件等)和硬件(网络硬件、服务器硬件、磁盘等)的不可靠,因此解决这个问题的根本方法是冗余。传统RAID技术(例如RAID10,RAID5)等提供了较高的可靠性,但如果所在的服务器故障,则数据还是无法访问,因此也无法保证数据的高一致性。为了解决这个问题,OceanBase引入了云计算思路和Paxos协议,通过3个(或者更多节点)的投票来保证数据的高度一致,并兼顾服务的高可用,如下图:

上述三个机群构成一个数据库,其中一个是主机群,所有事务都由主机群的UpdateServer(称为主UpdateServer,其他UpdateServer称为备UpdateServer)执行,事务的redo log同步到3个UpdateServer中的超过半数(即至少2个,包括主UpdateServer自己),则事务成功并应答客户。如果3个UpdateServer中有一个故障:
*主UpdateServer故障:剩余的两个UpdateServer会自动选举出一个新的主UpdateServer(参见后文“OceanBase分布式选举的实现”),由于旧的主UpdateServer数据至少在一个活着的UpdateServer中存在,因此数据不会有任何丢失,两个活着的UpdateServer经过很短时间(通常是毫秒级)的相互同步后就可以继续对外服务,保证了数据的一致性和服务的高可用。
*单个备UpdateServer故障:主UpdateServer有全部数据,剩余两个UpdateServer仍然超过半数,数据一致性和服务都不受任何影响。
如果把上述三个机群部署出于三个不同的机房,那么即使一个机房出现电源、网络或者空调等故障,剩余两个机群仍然能够继续工作,数据一致性和服务可用性都不受影响。如果采用5机群部署,则系统甚至可以抵御2个机群的故障。

上述方案已经用于支付宝的交易库和其他核心系统并在线上生产运行中。

时间: 2024-07-31 05:23:08

OceanBase如何解决支付宝数据库的高一致性的相关文章

阳振坤深度解析OceanBase如何支撑支付宝双十一14万/秒笔交易

谈到2015年天猫双11,912.17亿之外,大家往往记住的第二个数字是"1秒钟14万笔订单(刷新交易峰值世界记录)".可惜对于技术实践所涉及的内容并不多.而搜索引擎中居于首位的还是知乎上关于2014年双11的一个讨论贴. 直到看到蚂蚁金服平台产品技术部基础数据部高级研究员阳振坤内部培训程:"OceanBase如何支撑支付宝双十一每秒十四万笔交易",才对其背后的技术有了更多了解,同时对困扰许久的几个问题有了明确的解答.特别整理并分享出来.[文章已经得到阳老师的确认]

Galera Cluster:一种新型的高一致性MySQL集群架构

1. 何谓Galera Cluster 何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的,所以这里都统称为Galera Cluster了,因为Galera本身是具有多主特性的,所以Galera Cluster也就是multi-master的集群架构,如图1所示: 图1

MySQL数据库的高可用方案总结_Mysql

高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法发微博,发微信等.一般而言,衡量高可用做到什么程度可以通过一年内服务不可用时间作为参考,要做到3个9的可用性,一年内只能累计有8个小时不可服务,而如果要做到5个9的可用性,则一年内只能累计5分钟服务中断.所以虽说每个公司都说自己的服务是7*24不间断的,但实际上能做到5个9的屈指可数,甚至根本做不到

解决支付宝安全控件安装后还提示安装办法

解决支付宝安全控件安装后还提示安装办法 法1.在安装使用支付宝的过程中,请留意浏览器页面区域上方有没出现一个黄色的确认提示条.IE7等高版本浏览器增加的安全特性,会在这个区域要求用户的确认,才能使支付宝网站正常运行. 法2.首先检查您的系统,安全控件需要Windows 2000及更高版本操作系统,IE 6.0及更高版本浏览器,IE8和Windows7用户在需要下载EXE安装包来支持.如果您是Firefox/Chrome/Opera用户,请升级浏览器至最新版本.MAC OS X操作系统仅支持Saf

解决ASP数据库对象为只读的方法

对象|解决|数据|数据库 在windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为: 1.Microsoft JET Database Engine (0x80040E09) 不能更新.数据库或对象为只读 2.Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询. 3.Microsoft

如何把SQLServer数据库从高版本降级到低版本?

原文:如何把SQLServer数据库从高版本降级到低版本? 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不

select-各位高手,请帮小妹解决一个数据库inserted表问题,在线等,谢谢

问题描述 各位高手,请帮小妹解决一个数据库inserted表问题,在线等,谢谢 表ST_ZLZB_R,里面项目STCD站号,TM时间,DRP数据,许多站点会在同时或异时陆续向中心传输数据,如'31128010','2015-05-29 10:30:00.000','12'.其中有两个站点stcd为31128020和31128010,我的想让31128020或者是31128010这两个站来的数据drp这一项是大于24时drp会变为0再插入zlzb表里,例如:31128010站上传'31128010

SQLServer数据库从高版本降级到低版本实例详解_MsSql

SQLServer数据库从高版本降级到低版本实例详解 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度

如何解决mysql数据库8小时无连接自动关闭

windows下打开my.ini,增加: interactive_timeout=28800000 wait_timeout=28800000 专家解答:MySQL是一个小型关系型数据库管理系统,由于MySQL体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 关于mysql自动关闭服务的现象,可以通过mysql服务器端程序mysql Administrator调整连接参数.将max_connections max_u