基于POLARDB数据库的压测实践

POLARDB架构简介

PolarDB是阿里云ApsaraDB数据库团队研发的基于云计算架构的下一代关系型数据库(暂时仅支持MySQL,PostgreSQL正在紧锣密鼓的开发中),其最大的特色是计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储,数据库快照的服务器)分离,其次,与传统的云数据库一个实例一份数据拷贝不同,同一个实例的所有节点(包括读写节点和只读节点)都访问存储节点上的同一份数据。

最后,借助优秀的RDMA网络以及最新的块存储技术,PolarDB的数据备份耗时可以做到秒级别(备份时间与底层数据量无关),这三点相结合,我们可以推断出PolarDB不但满足了公有云计算环境下用户业务快速弹性扩展的刚性需求(只读实例扩展时间与底层数据量无关),同时也满足了互联网环境下用户对数据库服务器高可用的需求(服务器宕机后无需搬运数据重启进程即可服务)。


PolarDB公测版本的总体架构图
 

DB Server: 即数据库进程(Polar DataBase, 简称PolarDB)。PolarDB数据库内核区分实例角色,目前包括三种角色,Primary,Standby和Replica。Primary即为拥有读写权限的读写库,Replica即为只读实例,仅仅拥有读取数据的权限(后台线程也不能修改数据),Primary和Replica采用Shared Everything架构,即底层共享同一份数据文件和日志文件。

StandBy节点拥有一份独立的数据和日志文件(如图2所示),虽然用户线程依然只有读取数据的权限,但是后台线程可以更新数据,例如通过物理复制的方式从Primary节点更新增量数据。StandBy节点主要用来机房级别的容灾以及创建跨可用区的只读实例,公测阶段暂时不开放。由于只读实例的扩展不需要拷贝数据,创建新的只读实例不但速度快,而且很便宜,用户只需要支付相应计算节点的成本即可。我们称StandBy和Replica节点为Slave节点,Primary节点也可称为Master节点。

User Space File System: 即用户态文件系统(Polar File Sytem, 简称PolarFS)。由于多个主机的数据库实例需要访问块存储上的同一份数据,常用的Ext4等文件系统不支持多点挂载,PolarDB数据库团队自行研发了专用的用户态文件系统,提供常见的文件读写查看接口,便于MySQL和相关的外围运维工具使用文件系统支持类似O_DIRECT的非缓存方式读写数据,还支持数据页原子写,IO优先级等优秀的特性,为上层数据库的高性能提供了结实的保障。传统的文件系统,由于嵌入在操作系统内核中,每次系统文件读写操作都需要先陷入内核态,完成后再返回用户态,造成效率低下。PolarFS以函数库形式编译在MySQL中,因此都运行在用户态,从而减少了操作系统切换的开销。

Data Router & Cache: 即块存储系统客户端(Polar Store Client, 别名PolarSwitch)。PolarFS收到读写请求后,会通过共享内存的方式把数据发送给PolarSwitch,PolarSwith是一个计算节点主机维度的后台守护进程,接收主机上所有实例以及工具发来的读写块存储的请求。PolarSwith做简单的聚合,统计后分发给相应的存储节点上的守护进程。由此可见PolarSwitch是一个重资源的进程,如果处理不好,对计算节点上的数据库实例有很大的影响,因此我们的管控程序对其使用了CPU绑定,内存预分配,资源隔离等一些手段,并且同时部署了高效可靠的监控系统,保证其稳定运行。

Data Chunk Server: 即块存储系统服务器端(Polar Store Server, 别名ChunkSever)。上述三个部件都运行在计算节点上,这个部件则运行在存储节点上。主要负责相应数据块的读取。数据块的大小目前为10GB,每个数据块都有三个副本(位于三台不同的存储节点上),两个副本写成功,才给客户端返回成功。支持数据块维度的高可用,即如果一个数据块发生不可用,可以在上层无感知的情况下秒级恢复。此外,PolarStore使用了类似Copy On Write技术,支持秒级快照,即对数据库来说,不管底层数据有多大,都能快速完成全量数据备份,因此PolarDB支持高达100T的磁盘规格。
计算节点和存储节点之间通过25G RDMA网络连接,保证数据的传输瓶颈不会出现在网络上。

此外,PolarDB还有一套完善的基于docker的管控系统,处理用户下发的创建实例,删除实例,创建账号等任务,还包括完善详细的监控,以及可靠的高可用切换。管控系统还维护了一套元数据库,用以记录各个数据块的位置信息,提供给PolarSwitch,便于其转发。
可以说,PolarDB整个项目用了很多很多的新技术黑科技,给用户直接的感受是,又快(性能是官方MySQL6倍)又大(磁盘规格支持高达100T)又便宜(价格只有商业数据库的1/10)。

 

实践内容

POLARDB数据库准备

进入云数据库阿里云POLARDB控制台进行配置:2核4GB(独享配置)


image

创建后会发现有两个实例,一个主实例,一个只写实例。

 

测试过程

本次场景使用HyperPacer PRO 2016版进行数据库压测。
配置如下:

1.进行工程配置:


image

 

初始化JDBC配置和JDBC请求:


image

这里各个编辑控件和下拉控件的使用及每个选项的说明,只要在HyperPacer的工具栏上点击帮助就可以看到。在绑定变量赋值的编辑区域里,我们看到在前两个变量赋值这里做了参数化。

这里需要注意的是:此处绑定变量赋值的顺序和个数需要和存储过程中定义的参数保持完全一致。

在绑定变量类型的编辑区域,这里的类型只可以是在java.sql.Types中定义的类型,并且要保证和我们调用的存储过程中的参数类型保持一致。

我们这里说的类型保持一致要分为两方面来看:一方面要保证用于传参的变量类型保持一致,即这里写的JDBC类型要和SQL类型保持一致,关于保持类型一致的转换映射关系可以查看JDK的官方文档。

2.如下图进行压力数据测试配置:


image

 

参数详解
基准用户数:系统过载前允许的最大用户数
最大用户数:系统过载后允许的最大用户数
基准用户加压策略:固定时间内加载固定数量的基准用户进入系统
过载用户加压策略:固定时间内加载固定数量的过载用户进入系统
持续总时长:系统过载后持续保持过载运行的时间
用户退出策略:测试结束前多少时间内退出全部用户
压力阀配置:配置测算系统过载的依据,如平均CPU利用率达到99%等。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

戴尔科技:以技术突破创新边界!

2019戴尔科技峰会今天在北京隆重举行,戴尔科技集团与数千位全国企业级精英、合作伙伴、业内专家、媒体及分析师代表等齐聚一堂,分享了在5G、云计算、存储、数据保护、服务器等领域的最新技术产品、最佳实践经验及最新发展趋势。此次峰会还完整地展示了戴…

让你久等了!《码出高效:Java 开发手册》正式发布

可爱的Java开发者们,让你们久等了! 9月22日杭州云栖大会,众所期待的新书《码出高效:Java 开发手册》正式发布,并宣布将所有图书收益捐赠于公益项目。 此书从立意到付梓,历时超过两年,期间推翻数…

python中is和 的区别_Python中is和==的区别

"""is和 的区别"""a abcb abcprint("都是字符串-a is b--", a is b)print("都是字符串-a b--", a b)c 11d 11print("都是数字-c is d--", c is d)print("都是数字-c d--", c d)e [0, 1, 2]f …

(Docker实战) 第1篇:Centos7 环境准备和安装Docker-ce

文章目录一 、安装docker1. 卸载以前安装的docker2. 安装必要的系统工具4. 更新yum缓存5. 安装docker6. 更改docker仓库为国内仓库7. 重启docker8. 安装docker-compose一 、安装docker docker优点 快速上手新技术,把精力放在业务上而非安装和配置服务器快速搭建开发…

初入数据科学领域,你需要有七个这样的思维

假设你刚刚被一家小型软件公司聘为数据科学家。你感到欣喜若狂!你的辛勤工作和坚持不懈终于得到了回报。是时候将你的统计数据和机器学习知识付诸实践了。那么恭喜你终于加入了数据革命。 第1天到来,每个人都很高兴见到这位“数据科学家”。该公司以前从…

输入文字自动生成图片_原来Word还可以自动生成图片和图表目录!

小李接到了一个任务,将技术文档中的示意图目录做出来,让客户能根据需求快速找到操作示意图,可是这份文档有三百多张图片,不过,这可难不倒小李。说到Word目录,大多数人都知道,可以为文档的标题设…

反转!物联网火爆,开发者却很难入门?

在 2019 北京网络安全大会上,工信部负责人表示,我国面向 5G 和车联网将建设网安防护体系,提升监测预警和应急响应能力。其中物联网设备已成为网安防护新重点。为什么工信部会这么重视物联网?物联网开发者的现状又是如何呢&#xf…

如何深度理解RNN?——看图就好!

欢迎来到循环神经网络的插图指南。我是迈克尔,也被称为LearnedVector,我是AI语音领域的机器学习工程师。如果你刚刚开始使用ML并希望在Recurrent神经网络背后获得一些直觉,那么这篇文章就适合你。 循环神经网络是一种强大的技术,…

java有string这个类型吗_关于java的String类型

String类型的不可变众所周知,String类型是不可变的,一旦String对象被创建好了则这个字符串中的序列就不可改变。为什么String类型是不可变?根据阅读源码可知,String类是一个final类,但是String不可变并不是因为它是一个…

理论与实践:如何从Hadoop迁移到MaxCompute

直播视频回看,传送门!分享资料下载,传送门!更多精彩内容传送门:大数据计算技术共享计划 — MaxCompute技术公开课第二季 以下内容根据演讲视频以及PPT整理而成。 通常而言,将Hadoop迁移到MaxCompute会分为…

rocketmq原理_彻底看懂RocketMQ事务实现原理

面试中经常会问到比如RocketMQ的事务是如何实现的呢?学习框架,我们不仅要熟练使用,更要掌握设计及原理,才算熟悉一个框架。1 RocketMQ 事务使用案例public class CreateOrderService { Autowired private OrderDao orderDao; A…

要活 102 年,阿里凭借的是什么?

戳蓝字“CSDN云计算”关注我们哦!作者 | 屠敏责编 | 阿秃由浅到深、由轻到重、由拥抱到创新,看似“风平浪静”的历史背后,中国互联网江湖的发展实则“波涛汹涌”。对于身处核心位置的科技巨头阿里巴巴而言,将如何更好地去实现“希…

阿里云 x 蒙牛 | 打通数据孤岛,基于MaxCompute实现产销协同的智慧运营

每一个公司转型的背后 都有着不为人知的秘密 今天,让我们一起探秘 内蒙古蒙牛乳业(集团)股份有限公司是中国发展速度最快的乳品企业之一,2017年实现收入601.56亿元,位列全球乳业第10位,与2016年同比收入增…

(Docker实战) 第3篇:Centos7 拉取和部署Mysql

文章目录搭建mysql1. 创建mysql的配置文件2. 创建mysql配置/srv/mysql/conf/custom.cnf3. 下载并安装mysql 5.7(注意修改密码)搭建mysql 1. 创建mysql的配置文件 mkdir -p /srv/mysql/conf /srv/mysql/logs /srv/mysql/data2. 创建mysql配置/srv/mysql…

Hadoop迁移MaxCompute神器之DataX-On-Hadoop使用指南

DataX-On-Hadoop即使用hadoop的任务调度器,将DataX task(Reader->Channel->Writer)调度到hadoop执行集群上执行。这样用户的hadoop数据可以通过MR任务批量上传到MaxCompute、RDS等,不需要用户提前安装和部署DataX软件包,也不需要另外为…

(Docker实战) 第三篇:配置_开发环境

文章目录一、开发环境-建立开发环境1.1. 常用环境下载地址1.2. IDEA的maven配置1.3. 导入项目示例1.4. IDEA教程,如何从eclipse过渡1.5. gblfy的快捷键风格一、开发环境-建立开发环境 1.1. 常用环境下载地址 jdk8下载地址: https://www.oracle.com/te…

阿里云史上最大技术升级:面向万物智能的飞天2.0

1991年,《科学美国人》杂志描绘了一种“无处不在的计算设备,没人会感觉到它的存在”,拉开了万物智能的序幕。 27年后的2018杭州•云栖大会上,阿里云公布了面向万物智能的新一代云计算操作系统——飞天2.0,可满足百亿级…

杭州·云栖大会宣布多款核心云产品降价,最高降幅达90%

2018杭州云栖大会,阿里云宣布开启新一轮核心产品降价,再次用科技普惠广大开发者和用户,加速产业升级。本次降价涉及近20款产品,产品包括智能语音交互、图像识别、性能测试PTS、云数据库RDS等,其中事务消息降价90%&…

(Docker实战) 第四篇:建立持续集成环境01

标签: gblfy技术文档 文章目录一、 jenkins环境建立1.1. jenkins安装1.2. 安装jenkins前提:下载jdk1.3. 配置jenkins1.3.1. 配置远程发布插件Publish over SSH 选择系统设置1.3.2. 配置jdk,git,maven 选择系统管理->全局工具配…

系统无法分配所需内存_Innodb内存管理解析

本文主要介绍innodb的内存管理,涉及基础的内存分配结构、算法以及buffer pool的实现细节,提及change buffer、自适应hash index和log buffer的基本概念和内存基本配比,侧重点在内存的分配和管理方式。本文所述内容基于mysql8.0版本。基础内存…