云栖干货回顾-云原生数据库POLARDB专场硬核解析

POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB。 POLARDB融合了商业数据库稳定、可靠、高性能的特征,同时具有开源数据库简单、可扩展、高速迭代的优势,适合各个行业公司的创新业务使用。本专场中,来自阿里云、江娱互动以及猿辅导的各位技术大咖一起共同探讨了下一代云原生数据库POLARDB。 1、云原生数据库的演进方向和客户价值 阿里云智能数据库总经理曹伟为大家介绍了云原生数据库的演进方向以及阿里云POLARDB数据库的产品能力。 阿里云RDS和POLARDB都属于OLTP的关系性数据库,那就让我们先看下全球关系型数据库的市场情况。 如今,关系型数据库依旧是“老大哥”,但是过去的十年中关系型数据库领域也发生了一些微妙的变化。伴随着开源运动的兴起和MySQL、PostgreSQL等数据库的出现,很多用户开始在生产系统中大量使用开源数据库,因此商业数据库的市场受到了一定的挤压。 开源数据库的出现影响了整个数据库市场的格局和版图,也为阿里巴巴在数据库市场提供了一个重大的机会。经过十年的时间,阿里云数据库做到了“全国第一,全球领先”。当然,影响数据库格局的重要因素除了开源之外,还有云计算的兴起。 在云时代,数据库的演化经历了从采购License自建到云上托管数据库再到云原生数据库的转变。过去云是云,数据库是数据库,数据库只是部署在云上。但在云原生时代,数据库和云是合二为一的,云就是数据库,数据库就是云。 云原生数据库具有以下的几个发展趋势: 弹性:弹性不仅仅是规格的弹性,而是未来CPU、容量等计算资源都可以按量付费。 HTAP:之前TP和AP是分开处理的,TP使用关系型数据库,而AP使用大数据存储。未来则会融合两者,提供一个入口跑事务,一个入口跑报表和BI。 智能:智能让数据库更加实用,未来数据库的磁盘备份、内存调度等都不需要DBA来操作,而是全部由数据库自己来完成。此外,数据库还能够自动完成诊断和修复。 混合云:因为一些合规的要求,并不是所有数据都能跑在云上,因此还需要使用这种云上云下互联的生态。 云原生数据库已经成为了一种趋势,智能和混合负载成为了用户使用数据库必须依赖的特性。而由于这些特性具有非常高的技术门槛,因此在未来的两到三年内,云原生技术落后的数据库厂商必将会被淘汰。 对于很多企业而言,如果采用自建数据库方案,那么无论是对于研发还是运维而言,都会带来很多痛点,比如: 活动上线时造成压力突增,而数据库却来不及升级; 业务发展很快,来不及进行拆库,也来不及分库分表; 应用扩容之后,上百台ECS连接一台数据库,因此在高并发下性能很差; 使用读写分离,但是刚更新的数据却查询不到; 主从复制经常中断; 一次全量数据备份需要大量时间,并且必须锁表等。 这些都是互联网公司在使用自建数据库时会遇到的问题。那么,如何解决这些问题呢?答案就是需要一个强大的云原生数据库。 因此,阿里云提供了POLARDB数据库。POLARDB基于业界先进的Shared-Everything架构,简单而言,就是借助高速的RDMA网络将所有数据库节点连接在同一网络下。POLARDB采用计算与存储分离的架构,数据节点是无状态的,因此一旦发生宕机可以随时进行迁移。 对于企业级数据库而言,一般会从可靠性、可用性、性能、弹性、成本和易用性这六个方面进行评价。 在可靠性方面,POLARDB基于Parallel Raft协议并借助RDMA能够做到RPO=0。此外,POLARDB基于TCP的远程物理复制技术实现了跨AZ的容灾。 在可用性方面,POLARDB借助Parallel Raft复制技术使得单节点存储切换RTO控制在10毫秒以内,基于Warm Buffer Pool技术使得读写节点重启速度加快4倍以上,并且基于跨节点物理复制技术使得日志并发应用的节点间延迟控制在100毫秒以内。 在性能方面,POLARDB使用了高速硬件和用户态I/O协议栈,使得计算节点的写延迟小于100us,而读带宽大于4GB/s。除此之外,还在I/O上进行了优化,借助Parallel Query技术使得TPC-H性能提升超过25倍。 在成本方面,POLARDB这样的云原生数据库的成本往往低于传统的托管数据库。这是因为企业在使用POLARDB时可以按需扩容,弹性伸缩,而这是在实现存储与计算分离的云原生架构诞生之前无法实现的。目前来看,相较于RDS,使用POLARDB将会使得成本降低约44%,这就是技术释放的红利。 在易用性方面,POLARDB可以100%兼容RDS,并且可以在阿里云上一键将RDS替换为POLARDB,此外还提供了智能读写分离、性能洞察以及SQL审计等优秀的功能。 此外,POLARDB在2019年也实现了技术的全面升级。首先,POLARDB MySQL 8.0兼容版于9月12日正式发布,这是全球第一个兼容MySQL 8.0版本的云原生数据库。其次,POLARDB分布式数据库服务也正式发布,其存储容量支持最多超过100TB。再次,POLARDB的高性能存储引擎X-Engine即将发布,X-Engine存储引擎具有高性能和高压缩率,并且经历了2018年双11的实战考验。此外,POLARDB对于Oracle的语法兼容性特性也即将实现商业化,能够为用户带来将近6倍的成本降低。此外,本次的云栖大会上还正式发布了POLARDB一体机,它能够更好地帮助用户在私有云上使用POLARDB数据库。 目前,阿里云POLARDB数据库已经成了增长最快的云数据库产品,未来也将会提供更多的特性,为客户带来更多的价值。 2、POLARDB MySQL存储引擎优化实践 杨辛军(Jimmy Yang) 阿里云智能资深技术专家为大家介绍了阿里云POLARDB 8.0基于MySQL 8.0所做的存储引擎优化实践。 POLARDB实现了快速高效的物理复制,使得IO操作减少了50%,同时能够达到100T的存储容量。与此同时,相比于原本的逻辑复制,POLARDB的物理复制更加可靠、高效,并且对于性能影响几乎不可见。传统的逻辑复制比物理复制延迟大很多,而且可能会出现系统堵塞,对业务造成影响,物理复制则不会产生这样的影响。此外,POLARDB基于共享存储还实现了非堵塞、低延迟的DDL复制,并且支持快速动态的读扩展,最高支持扩展到16个只读节点。 POLARDB是全球第一个具有高效物理复制的,共享存储并兼容MySQL 8.0的云数据库。POLARDB不仅包含了MySQL 8.0的所有重要功能,还在MySQL内核引擎的基础之上进行了大量的优化。 虽然POLARDB使用了物理复制,但是基于客户对于数据进行数据分析和传输需要Binlog的考虑,POLARDB也支持了Binlog。在性能优化方面,POLARDB最新的“Copy Page”功能减少了主节点Flush Constraint。POLARDB对于逻辑锁系统进行了分区,减少了mutex的冲突,并且将死锁检测实现了并行化。POLARDB对于Transaction System也进行了优化,使用Lock Free数据结构来管理Transaction System的Lists。 相比于POLARDB 5.6版本,POLARDB 8.0版本在性能表现上有了显著提升,在关键情况下都有了数倍的改进。相比于MySQL 8.0的官方版本,POLARDB 8.0的优化改进所带来的效果也非常明显,尤其是物理复制方面具有显著的优势,在Insert情况下POLARDB性能可达到MySQL的约6倍。 ...

October 17, 2019 · 1 min · jiezi

iconfont-在线预览工具及其解析

工具在线链接功能简介iconfont web 在线预览工具,无需安装,打开即用。可预览本地 ttf 文件中定义的所有 icon。也支持预览 阿里iconfont 中的三种模式,unicode,Font class,Symbol。根据在线字体链接即可解析预览其定义的所有icon。需求背景本工具用于解决以下问题 接手二手项目时,不清楚项目中定义了哪些 icon。 接手二手项目,有时由于交接不到位,只能找到引用的 css。但不清楚该 icon 库具体包含哪些 icon。导致二次开发时,不能很好地复用之前的 icon,若引入新icon,可能还会重复定义。导致前后 icon 风格不统一。使用外部样式库,成套的后台管理系统框架时。找到其 icon 的定义列表比较麻烦。 需要先找到对应的官网,再找到其对 icon 定义。整个过程较为繁琐。而且还不一定有介绍。故笔者开发了这个 iconfont 在线预览工具,无需安装,打开web页面即可预览 icon 库。使用教程使用本地文件点击按钮选择 ttf 后缀文件解析成功点击具体图标,可复制该 icon 代码解析在线文件(针对阿里图标库)复制在线资源链接 针对 unicode 模式,复制在线 ttf 文件链接针对 Font class 模式,复制在线 css 文件链接针对 Symbol 模式,复制在线 js 文件链接点击解析解析成功,点击具体图标,可复制该 icon 代码iconfont相关知识之前一直只知道怎么用 iconfont ,但并没有深入了解相关知识,最新学习了一下,在这里跟大家分享。 阿里图标三种模式unicode 模式 它本身和引用外部自定义字体没有区别。只是一个表现出来是图形,另一个是文字。对系统来说,没有区别。引用 iconfont 和引用自定义字体,使用的代码是一样 定义字体族 @font-face { font-family: 'iconfont'; /* 自定义字体族名,可以是任意名, */ src: url('//at.alicdn.com/t/font_1357308_kygursq6jw.eot'); /* 字体描述文件链接 */ src: url('//at.alicdn.com/t/font_1357308_kygursq6jw.eot?#iefix') format('embedded-opentype'), /* 兼容 IE9 */ url('//at.alicdn.com/t/font_1357308_kygursq6jw.woff2') format('woff2'), /* 兼容 IE6-IE8 */ url('//at.alicdn.com/t/font_1357308_kygursq6jw.woff') format('woff'), /* 兼容 chrome, firefox, opera, Safari, Android, iOS 4.2+ */ url('//at.alicdn.com/t/font_1357308_kygursq6jw.ttf') format('truetype'), /* 兼容 chrome, firefox, opera, Safari, Android, iOS 4.2+ */ url('//at.alicdn.com/t/font_1357308_kygursq6jw.svg#iconfont') format('svg'); /* 兼容 iOS 4.1及以上 */}使用字体族(无论是文本还是icon) ...

August 20, 2019 · 2 min · jiezi