2017云栖大会POLARDB专场,阿里云资深技术专家曹伟带来POLARDB云数据库分布式存储引擎揭秘的演讲。本文主要从计算和存储分离的优势谈起,然后说明控制平面与数据平面分离,接着分享了划时代的技术,包括零拷贝、并行副本等,最后解释了面向数据库优化的智能存储。

以下是精彩内容整理:

计算和存储分离的优势

如何把过去MySQL从单机磁盘数据库,演进成基于共享存储、集成数据库的核心组建Polar store。我们把三副本分布式的存储系统,做得延迟和本地SSD磁盘一样快,这就是核心的武器。那么,我们怎么做一个又快又稳定的分布式存储系统。

为什么做POLARDB时会选择把MySQL本地SSD单机数据库改造成一个基于共享存储集成数据库,在做了七年RDS之后选择做这件事。怎么去做一个高性能的分布式存储系统,同时让它稳定,我们为什么不用已有分布式存储系统,因为我们要在稳定系统和存储系统当中加入对数据库的理解优化,让它成为一个为数据库定制和优化的智能存储。

我们过去单机做数据库有一个很头疼的问题,怎么先做容量的预测,每台机器SSD容量的预测和迁移。在“双11”之前,我们一般会把核心用户的机器、数据库打散操作,把每个用户买每台数据库容量降低到60%以下,我们很担心“双11”那天大量数据进来,把机器塞满之后弄不出去。我需要预留40%-50%的SSD容量在那儿放着,存不了数据,就是为了避免突然的流量高峰把机器用满了,然后就要开始做迁移。

存储池化

在存储池化之后,我能用好每一块盘,为什么呢?因为今天的池子不再是单机十几T、几T,拥有的是几PB的大池子。在大池子当中加机器就OK了,整个大池子可以保持85%,90%左右。把存储池化之后,我们有一个大盘子了,就能把资源用得更好,TCO会下降。

计算存储硬件分离优化

过去做数据库的时候,每年很头疼的一件事情是定义明年新机型是什么,内存和存储的平易怎么控制,权衡之间的比例一直是很头疼的事情。

当我把计算的机型、数据库机型和存储机型分离之后,就能很好的进行优化。数据库的机型不需要再带SSD,存储机型不需要很好的CPU,也不需要很大的内存,但会有很多盘,单机存储力度可以很高。

数据库快速迁移能力

没有不坏的硬件,包括供电、机器、风扇、温度,硬件坏了之后,我们怎么把恢复时间指标往下降,保证用户可用时间往上走。在机器坏了的时候怎么能快速恢复,把数据库弄到一个好的机器上去跑,这个能力很重要,RDS的SLA是99.95%,这个时间很难保证。今天一份存储的成本给多个数据库节点也是我们获得的关键能力。

软件定义存储能力更强

为什么过去不这么做呢?过去分布式存储太慢,分布式存储都还停留在HTD的延时,你得到的延迟是几个毫秒,我们接受不了。因为数据库是非常敏感的。软件定义存储和普通机器上硬件SSD相比拥有更强的能力,比如单个盘可以任意扩容,可以从10TB扩容到100TB,100TB对于本级SSD来说很难达到,因为SSD的制造工艺也有瓶颈,能够放下的颗粒也是有限的,随机而来的单机SSD密度是有限的。

还有数据快照技术,我们在存储引入了分布式数据库快照技术做数据库的备份,完美解决了数据库备份。我可以在5分钟之内对100T数据库完成备份,还可以一个备份在5分钟之内挂载上去,成为一个新的实例,这些技术用传统的单机数据库是无法解决的。我们今天存储层做了一个Thin-provisioning技术,按需分配,拥有它后,有可能就可以按你使用的存储资源付钱了。

控制平面与数据平面分离

这样一个强大的分布式存储系统是怎么构建的呢?我们借鉴了SDN的经验,用控制平面与数据平面分离的思想在设计系统。简单来说,存储所有的复杂逻辑,比如故障怎么处理,副本策略如何,全都会在微服务实现的控制集群当中,数据平面非常高效的实现。

划时代技术,超高性能、超低延迟

我们一些核心技术点如图,首先直接操作裸的RDMA网卡,自己实现一套完整网络协议栈和OR协议栈。零拷贝技术RDMA&SPDK、用户态文件系统和并行同步技术,我们紧贴着RDMA,在RDMA网络栈基础上实现了ParallelRaft。

我们是真正的零拷贝,别人的不是零拷贝。当RDMA网卡收到请求之后,会直接把请求操作写到物理机内存地址上去,直接用了很大的区域做这件事。网卡一旦写入内存之后,这个内存就一直使用下去,永远不拷贝,这就是零拷贝。启动系统时会把物理内存注册到网卡当中去,网卡会直接操作物理内存到CPU说知道有这个物理内存到了之后,我们就一直拿物理内存用DMA发给磁盘,用RDMA再发给远程网卡一直使用下去,再也没有拷贝过了。这件事情如果不是自己写RO协议栈或者网络协议栈不可能办到。

POLARDB当中使用的文件系统是PolarFS文件系统。这个文件系统是一个libpfs形式直接嵌入到数据库当中,数据库拿着lib操作后面的存储。也会在文件系统内部维护,让整个硬件在最合理的模式下工作,这是我们的设计思想。

ParallelRaft并行副本技术是传统的复制协议。我们的思路就是乱序带来并发,乱序带来极高的性能,乱序做正确就是我们的挑战,提出了一套专业的ParallelRaft技术解决这个问题。

面向数据库优化的智能存储

面向数据库优化的智能存储,包括防止DB脑裂写坏数据、Group Commit批量I/O写入优化、保证Page原子写入,避免doubleWrite开销、RedoLog高优先级写入。数据库的配置是大于10k的,一个16kb的页面如果出现部分显示成功,部分显示失败,就会出现数据损坏。

MySQL当中怎么做呢,它是用了DoubleWrite的方法做,先写到一个正确的地方,然后再放回来。相当于I/O带宽高了2倍,我们支持Page原子写入。脑裂问题,假如两个节点,一个在杭州,一个在上海。杭州和上海之间网络断开之后,两个节点都认为自己是主节点,一般做法是一主一备,两个节点都会写坏数据。我们通常做法是一定要写进去合并,再恢复到单机状态。我们在Polar store当中对数据库做了写保护,防止DB写入时脑裂,假如出现脑裂,存储借助三副本技术,可以随时授权进行仲裁,只保证一个人写的。

一个5节点的polardb mysql_POLARDB云数据库分布式存储引擎揭秘,POLARDB和MySql 5.6兼容性能对比...相关推荐

  1. 自建mysql和华为云mysql_自建数据库和云数据库区别和使用(以MySQL为例)

    在程序员这个群体中,多数人是从事应用开发,在应用开发中一定会跟数据打交道.很多程序员入门学习就是Mysql数据库,它不仅仅是找工作面试最常问的,也是干私活必备的数据库.当然在如今数字基建的背景下,云数 ...

  2. 赋能时空云计算,阿里云数据库时空引擎Ganos上线

    随着移动互联网.位置感知技术.对地观测技术的快速发展,时空信息已从传统GIS行业渗透到大众应用及各行各业.从静态POI(兴趣点)到APP位置信息,从导航电子地图到车辆行驶轨迹,从卫星影像到三维城市建模 ...

  3. 阿里云数据库开源发布:PolarDB三节点高可用的功能特性和关键技术

    简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云数据库技术专家孟勃荣 带来了主题为<PolarDB 三节点高可用>的精彩演讲.三节点高可用功能主要为 PolarDB ...

  4. 阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术

    简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家严华带来了主题为<PolarDB HTAP详解>的精彩演讲.在PolarDB存储计算分 ...

  5. mysql 数据库迁移到云数据库,从本地MySQL迁移到云数据库为什么是Amazon Aurora?mysql云端数据库...

    近两年,随灭云情况的成熟,良多企业的营业都正在向云端迁徙.于是,"云数据库"成为最时髦词汇之一,被AWS.微软.阿里.华为等大厂推崇.那么,对于用户来说,他们若何对待云数据库的成长 ...

  6. 华为云数据库PostgreSQL 大揭秘

    各位开发者.企业老板们,一个好消息悄然来临:即日起,1元就可以畅享4核8G的华为云数据库PostgreSQL服务1个月,快来开启专属你的PG上云之旅吧~ PostgreSQL是一种典型的开源关系型数据 ...

  7. jdbc连接云数据库mysql_如何通过JDBC连接MySQL数据库

    通过JDBC连接MySQL数据库,代码中的JDBC链接格式如下: jdbc:mysql://:/?sslmode=verify-full&sslrootcert= 表1参数说明参数 说明 如果 ...

  8. goldendb mysql_金融业分布式数据库:SequoiaDB、GoldenDB、OceanBase等原理、POC性能对比及选择是怎样的?...

    谈点个人理解: 1)POC测试: SequoiaDB.OceanBase在金融行业都已经有大量用户了. 2)分布式数据库技术发展体系对比: SequoiaDB和OceanBase都是原生分布式数据库. ...

  9. 阿里云自研云数据库POLARDB,未来企业的数字化答案

    在2017年的杭州云栖大会上,阿里云总裁胡晓明做了题为"智能计算,为未来而生"的主题演讲,在众多内容中,阿里云的自研数据库产品POLARDB,引发了广泛关注. 从上个世纪60年代诞 ...

最新文章

  1. Android ViewPager嵌套ViewPager滑动冲突处理方法
  2. java基础练习题目
  3. 微信小程序web-view能发送ajax,微信小程序web-view组件的坑
  4. 为什么下拉框拉不下来_零线不带电,为什么还要拉一条?直接用地做零线不是更省钱?...
  5. Ubuntu学习——第一篇
  6. 精益软件过程中七大浪费的应对之道
  7. toj 4612 A Shooting Game
  8. pandas忽略行列索引,纵向拼接多个dataframe
  9. Linux下的iscsi(设备的共享服务)
  10. Java 获取昨天、当前、明天的时间
  11. 服务器间数据传输的四种方式
  12. Linux串口编程详解(转)
  13. 拒绝瞎忙,高效的学习与工作经验谈
  14. 若依可以商用吗_商用自动炒菜机Qamp;A,你想知道的都在这里!
  15. onlyoffice 在线预览编辑office
  16. 金蝶K3案例教程总账后台配置
  17. 图的常见衡量指标及算法调研
  18. JAVA_OPTS设置详解
  19. eBPF-4-perf_map的丢失事件lost_event解读
  20. 机场生产运行数据统计指标-第二篇-航班类

热门文章

  1. 自动化之旅--Appium
  2. JavaBean之Builder模式
  3. cisco路由器的时间标记
  4. ESIM卡移动联通电信ESIM卡价格ESIM卡
  5. (附源码)SSM医疗健康查询系统JAVA计算机毕业设计项目
  6. 如何写好一份产品需求文档
  7. Java SSH框架学习(入门)
  8. linux查看磁带机端口,linux、unix下使用磁带机的常用命令
  9. Win32API UNICODE编码宽字节
  10. 统计学学习日记:L5-离散趋势分析之异众比率与四分位差