简介:2022年4月1号,PolarDB-X 正式开源X-Paxos,基于原生MySQL存储节点,提供Paxos三副本共识协议,可以做到金融级数据库的高可用和容灾能力,做到RPO=0的生产级别可用性,可以满足同城三机房、两地三中心等容灾架构。

架构简介

PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由4个核心组件组成。

  • 计算节点(CN, Compute Node)

    计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
  • 存储节点(DN, Data Node)

    存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
  • 元数据服务(GMS, Global Meta Service)

    元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
  • 日志节点(CDC, Change Data Capture)

    日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。

开源地址:[https://github.com/ApsaraDB/galaxysql]

版本说明

我们也选择了今天给大家一份诚意满满的礼物:PolarDB-X 正式发布2.1.0版本

本次开源包含四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性

01. 高可用的开源能力补齐

分布式一致性算法(Consensus Algorithm )是一个分布式计算领域的基础性问题,其最基本的功能是为了在多个进程之间对某个(某些) 值达成一致(强一致),进而解决分布式系统的可用性能问(高可用),近几年NewSQL和云原生数据库的不断兴起,极大的推动了关系数据库和一致性协议的结合,常见的技术有Paxos和Raft。

2022年4月1号,PolarDB-X 正式开源X-Paxos,基于原生MySQL存储节点,提供Paxos三副本共识协议,可以做到金融级数据库的高可用和容灾能力,做到RPO=0的生产级别可用性,可以满足同城三机房、两地三中心等容灾架构。

Paxos协议对于面向云的架构是非常必要的,云的本质是虚拟化和资源池化,节点的变化和弹性是一个常规操作,我们需要解决面向用户透明运维的能力,任何情况下数据都不能丢、不能错。

下面一个例子演示基于kubernetes(k8s)虚拟化,结合Paxos的高可用切换提供RPO=0

此处为语雀视频卡片,点击链接查看:PolarDB-X on Kubernetes Demo (HA) - 知乎

02. 分布式水平扩展能力升级

PolarDB-X 作为一款基于MySQL原生分布式,除了提供基于Paxos RPO=0的金融级容灾能力外,最重要的特性就是分布式的水平扩展,在PolarDB-X 2.1.0版本正式推出新版数据分区表,提供Auto分区模式。

Auto模式的数据库支持自动分区,即创建表时无需指定分区键,数据即可自动在集群内均匀分布;同时也支持使用标准的MySQL分区表语法,对表进行手动分区。结合新版分区表能力,新增支持热点分裂、TTL(Time To Live)分区、Locality亲和性调度等能力,可以让您便捷地享受到分布式数据库的透明式分布、弹性伸缩和分区管理等诸多红利。

具体细节可参考文档:AUTO模式数据库

基于新版分区表,可扩展提供分布式热力分析能力,样例效果图

03. MySQL生态适配加速

PolarDB-X 架构中有一个特殊的CDC(Change Data Capture)组件,其主要用于提供分布式的增量日志获取,作为MySQL原生分布式,对应分布式CDC在设计上也选择全面兼容MySQL Binlog,在PolarDB-X 2.1.0版本我们又进一步完善了与MySQL现有CDC生态的适配和兼容。

首先,PolarDB-X CDC的binlog服务,与canal、maxwell、debezium、Flink CDC等开源MySQL binlog解析组件完成适配认证。其次,PolarDB-X CDC新增replica服务,全面兼容MySQL Replication相关协议,通过MySQL的start slave指令,可以将PolarDB-X作为开源MySQL的备库实时同步数据。

04. 轻量化部署功能完善

PolarDB-X Operator 是一个基于 Kubernetes 的 PolarDB-X 集群管控系统,希望能在原生 Kubernetes 上提供完整的生命周期管理能力,满足用户的轻量化部署。在PolarDB-X 2.1.0版本我们进一步完善了部分运维能力,比如提供Prometheus + Grafana 的监控系统、完善分布式节点升降配、扩缩容、版本升级等能力。

更详细的Features

  • 新增 支持创建数据库指定建表模式(新的分区表模式与老的分库分表模式),默认是分库分表模式
  • 新增 支持使用 MySQL分区表语法 创建一级分区的分区表,分区策略包括Hash/Range/List等
  • 新增 支持分区表的动态裁剪能力,包括支持分区列条件的常量折叠、区间合并以及前缀查询裁剪等功能
  • 新增 支持分区表的JOIN计算下推
  • 新增 提供分区表的分区管理能力,包括分区的添加、删除、分裂、合并与迁移等功能
  • 新增 提供表组及其他能力(包括表组的创建、删除、变更等),支持分区变更期间JOIN计算下推不受影响
  • 新增 支持全局索引表使用MySQL分区表语法并按Hash/Range/List等分区策略进行分区
  • 新增 自动拆分支持使用分区表语法
  • 新增 拆分变更增加支持分区表
  • 新增 新分区表GSI自动拆分会携带主键,可以处理GSI热点问题
  • 新增 支持实例的缩容
  • 新增 支持分区表的TTL及其管理能力(包括调整TTL的初始时间与时间间隔等)
  • 优化 Check Table 指令,支持校验主表分区、索引表分区与列定义等元数据一致性
  • 新增 SQL Advisor支持推荐广播表
  • 新增 支持Instant Add Column功能
  • 新增 支持Explain Statistics拉取优化器优化需要的所有信息
  • 新增 限制cbo的搜索空间,减少复杂查询的优化耗时
  • 优化 部分DDL后台操作的数据校验任务的性能,使GSI/扩缩容DDL变更操作加速
  • 新增 支持兼容MySQL的Replica相关指令
  • 新增 支持存储节点PAXOS三节点集群
  • 新增Replica组件,支持通过change master … 语法的方式将PolarDB-X作为MySQL Slave来消费数据
  • 全局Binlog中支持记录Rows_query_event类型数据,前置条件:需将DN节点binlog_rows_query_log_events参数设置为On
  • 新增 Flink CDC 接入
  • 新增 CR PolarDBXMonitor 用来监控 PolarDBXCluster
  • 新增 Helm Chart polardbx-monitor,包含定制化的 kube-prometheus 和预定义的 Dashboard 用来展示 PolarDB-X 集群监控信息
  • PXD 工具支持单副本和三副本两种部署模式

ChangeLog 列表

[1] CN ChangeLog

[2] DN ChangeLog

[3] CDC ChangeLog

[4] Kube ChangeLog

原文链接

本文为阿里云原创内容,未经允许不得转载。

PolarDB-X 发布 2.1.0 版本,Paxos 重磅开源的更多相关文章

  1. Node.js开源应用OSN发布初始V1.0版本-见面版本

    Nodejs开源应用OSN初始版本V1.0发布,请参考本操作说明文档,有任何问题请留言 Nodejs开源应用OSN发布V1.0版本: OSChina收录地址: OSC收录地址:http://www.o ...

  2. Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  3. Excelize 发布 2.3.0 版本, Go 语言 Excel 文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  4. Excelize 发布 2.2.0 版本, Go 语言 Excel 文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  5. 意料之外,情理之中,Spring.NET 3.0 版本发布-

    意料之外,情理之中,Spring.NET 3.0 版本发布- 备受社区和企业开发者广泛关注的Spring.NET在上周发布了3.0版本,并且目前已经保持着持续的更新,让我们一起来看一看他究竟发布了哪些 ...

  6. Nacos发布0.5.0版本,轻松玩转动态 DNS 服务

    阿里巴巴微服务开源项目Nacos于近期发布v0.5.0版本,该版本主要包括了DNS-basedService Discovery,对Java 11的支持,持续优化Nacos产品用户体验,更深度的与Sp ...

  7. CAP 3.0 版本发布通告

    前言 大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版. 自从上次 CAP 2.6 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 3. ...

  8. 像go 一样 打造.NET 单文件应用程序的编译器项目bflat 发布 7.0版本

    现代.NET和C#在低级/系统程序以及与C/C++/Rust等互操作方面的能力完全令各位刮目相看了,有人用C#开发的64位操作系统: GitHub - nifanfa/MOOS: C# x64 ope ...

  9. Apache Hudi 0.7.0版本重磅发布

    重点特性 1. Clustering 0.7.0版本中支持了对Hudi表数据进行Clustering(对数据按照数据特征进行聚簇,以便优化文件大小和数据布局),Clustering提供了更灵活地方式增 ...

  10. 图文解说PhpStorm 7.0版本语法着色

    前不久,我们测试了PhpStorm7.0版本对PHP 5.5的支持,今天我们将继续对PhpStorm 7.0版本对代码支持进行测试. 我们知道,在PhpStorm 6.0版本中,提供一个黑色背景的代码 ...

随机推荐

  1. 开发必会系列:为什么要用spring

    Spring是于2003 年兴起的一个轻量级的Java 开发框架,开源的,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中 ...

  2. 一文讲透Java核心技术之高可扩展利器SPI

    大家好,我是冰河~~ SPI的概念 JAVA SPI = 基于接口的编程+策略模式+配置文件 的动态加载机制 SPI的使用场景 Java是一种面向对象语言,虽然Java8开始支持函数式编程和Strea ...

  3. Lambda表达式编写递归函数

    class Program { //Fix求出的是函数f的不动点,它就是我们所需要的递归函数: static Func<T, TResult> Fix<T, TResult>( ...

  4. 【已解决】wordpress 修改固定链接 伪静态URL出现nginx 404错误

    一.站点设置 打开站点设置,选择伪静态,选择wordpress 二.wordpress设置 打开wordpress后台,选择设置 --->固定链接 选择一个你喜欢的格式点击保存 之后打开你的文章 ...

  5. sqoop安装配置以及简单使用

    一.下载 链接:https://pan.baidu.com/s/1pc7t4e7GyDcZNJHURADE_w 提取码:420s 二.上传安装包到虚拟机的指定路径并解压 tar -zxvf ( 压缩包 ...

  6. NUMA 平台

    What is NUMA? This question can be answered from a couple of perspectives: the hardware view and the ...

  7. 运维排查 | Systemd 之服务停止后状态为 failed

    哈喽大家好,我是咸鱼. 我们知道 CentOS 7 之后,Systemd 代替了原来的 SystemV 来管理服务,相比 SystemV ,Systemd 能够很好地解决各个服务间的依赖关系,还能让所 ...

  8. 9 CSS背景属性

    CSS 背景属性 1. background-color(背景颜色) 页面的背景颜色有四种属性值表示,分别是transparent(透明),RGB十进制颜色表示,十六进制颜色表示和颜色单词表示. 属性 ...

  9. C#实现的下拉多选框,下拉多选树,多级节点

    今天给大家上个硬货,下拉多选框,同时也是下拉多选树,支持父节点跟子节点!该控件是基于Telerik控件封装实现的,所以大家在使用的过程中需要引用Telerik.WinControls.dll.Tele ...

  10. std::thread 三:条件变量(condition_variable())

    condition_variable  .  wait   .  notify_one   .  notify_all *:notify_one:通知(唤醒)一个线程 *:notify_all:通知( ...