热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

揭秘阿里服务互联网金融的关系数据库OceanBase

数据库系统不仅保存了现代企业的关键业务数据,而且对这些数据提供访问从而支撑着企业业务。因此,数据库系统的稳定可靠对现代企业至关重要。数据库系统通常由数据库软件、运行数据库软件的数据库服务器硬件以及保存数据库数据的数据库存储硬件(即共享存储)

数据库系统不仅保存了现代企业的关键业务数据,而且对这些数据提供访问从而支撑着企业业务。因此,数据库系统的稳定可靠对现代企业至关重要。 数据库系统通常由数据库软件、运行数据库软件的数据库服务器硬件以及保存数据库数据的数据库存储硬件(即共享存储)

数据库系统不仅保存了现代企业的关键业务数据,而且对这些数据提供访问从而支撑着企业业务。因此,数据库系统的稳定可靠对现代企业至关重要。

数据库系统通常由数据库软件、运行数据库软件的数据库服务器硬件以及保存数据库数据的数据库存储硬件(即共享存储)组成,如下图所示:


数据库系统的稳定可靠,也取决于这三个部分。

首先是数据库软件,数据库软件厂商平均2~3年发布一个大版本,新版本发布前会进行反复测试。即使如此,数据库软件的维护升级依然有很大的风险,2013年6月中国工商银行系统不可用即是其数据库DB2的维护升级导致,2014年8月美国国务院签证数据库系统超过1周的不可用也是其数据库Oracle的维护升级导致。

其次是数据库服务器。为了保障数据库系统的稳定可靠,传统数据库系统厂商推荐用户使用稳定性较高的高端服务器,这些服务器价格非常昂贵,难以扩展,并且扩展能力也十分有限。

第三是数据库存储(共享存储)。数据库中的数据是企业最宝贵的财富,为了避免数据丢失,传统数据库厂商推荐用户使用稳定性较高的共享存储,同样地,这类存储设备价格非常昂贵,难以扩展,并且扩展能力也有限。

为了避免水灾、火灾或者其他自然灾害导致的数据库系统不可用甚至数据丢失,传统数据库系统通常还要搭建备库,出于安全考虑,主库与备库需要保持一定的距离,例如50km或以上,俗称主备镜像,如下图所示:


然而,尽管称为主备镜像,数据库的备库并不能保证与主库一致:假如强制要求两者一致,那么主库的每一笔事务都必须到达备库后才能提交和应答客户,这样一旦主库备库之间的网络异常或者备库异常,整个数据库系统将不可用,从而导致业务的中断,与主库备库部分数据不一致相比,业务的中断对于企业来讲更加不能接受,因而主库故障后业务切换到备库时,通常会有少量数据不一致。因此,即使部署了主备镜像,传统数据库系统也不得不使用可靠性尽可能高的服务器和存储,以降低主库故障的几率,减少对业务的影响。之所以要使用可靠的服务器和可靠的存储,本质上是因为传统数据库假设硬件(服务器、存储、网络等)是“可靠的”。

对于数据库,与传统企业相比,互联网企业最大的不同之一是并发访问量非常大。传统商业企业、银行,用户需要通过收银台、银行终端、ATM柜员机、POS机等专用设备开展业务并访问数据库,几百和几千的数据库并发访问比较常见,几万以上的并发访问相当少见。在互联网上,每一个草根网民都可以发起购物交易并访问数据库,几十万的数据库并发访问时常可见,几百万甚至千万的并发访问都可以见到(例如双11下的淘宝、天猫和支付宝)。如此之大的并发访问下,商业数据库软件及其高可靠的数据库服务器和共享存储的成本成为了不可承担之重。

由于上述原因,OceanBase的一个基本假设就是硬件(服务器、存储、网络等)是不可靠的,另一个基本假设是单机(数据库服务器及共享存储)无法满足互联网业务的需求。因此,OceanBase必须是一个多机(分布式)系统,并且必须保证任何时刻出现的少量硬件(服务器、存储、网络等)异常不影响业务。

为此,OceanBase引入了Paxos协议,每一笔事务,主库执行完成后,要同步到半数以上库(包括主库自身),例如3个库中的2个库,或者5个库中的3个库,事务才成功。这样,少数库(例如3个库中的1个库,或者5个库中的2个库)异常后业务并不受影响:


与传统数据库相比,OceanBase的另外一个关键特征是软件版本的灰度升级。主备方式的传统数据库是“单活”的,只有主库可执行写事务,尽管维护升级时可以先操作备库,操作完成后备库变成主库并且接受用户访问是一步到位的,如果新版本有问题,则业务受到影响:


传统数据库:升级前


传统数据库:升级中


传统数据库:升级后只能一次性地引入全部读写流量

OceanBase则是“多活”设计,即多个库(3个,5个等)每个都可以有部分读写流量,升级时先把要升级的库的读写流量切走,升级后先进行数据对比,正常后逐步引入读写流量(白名单,1%,5%,10%......),一切正常并运行一段时间后再升级其他的库:


OceanBase之3机群(3库)部署:升级前


OceanBase之3机群(3库)部署:切走读写流量,准备升级


OceanBase之3机群(3库)部署:升级一个机群(库)


OceanBase之3机群(3库)部署:升级一个机群(库)后切回部分读写流量


OceanBase之3机群(3库)部署:升级一个机群(库)后切回全部读写流量

基于硬件不可靠的假设并且能够容忍少量服务器的故障,OceanBase使用了相对廉价的PC服务器代替高可靠服务器并且不再使用昂贵的共享存储,从而不仅提供了比使用高可靠服务器和共享存储低得多的成本,容忍少数服务器乃至少数机群故障意味着比传统数据库更高的可靠性。通过灰度升级,OceanBase避免了传统数据库的“一锤子买卖”的升级,极大地降低了数据库维护升级的风险。

本文作者:阳振坤,蚂蚁金服高级研究员。

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
author-avatar
拍友2502911223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有