MySQL 兼容性可以做到什么程度中间件只是起点,PolarDB-X 可能是离终点最近的那个 对近十年的探索以及五年的上云 经验进行重新思考,面向未来设 从运维视角实现计算存储一体化 计新架构 产品形态 基于MySQL XA实现分布式事务 基于外部组件进行扩容 支持扩容 分布式事务 一体化尝试 Review 2.0 开源 2016 2017 2018 2019 2020 2021 2021年10月20日,云栖大会宣 布开源 2020年5月,PolarDB-X 多节点产生多个增量事件队列 • 不同队列中事件之间的顺序 • 分布式事务完整性 • DDL 引起的多 Schema 版本问题 • 扩缩容引起的队列增减 ? Maxwell Debezium A: PolarDB-X 全局 Binlog:完全兼容 • 与 MySQL Binlog 体验完全一致 • 保障分布式事务完整性 • 透明:下游系统或工具改造成本为零 • 实现复杂度高 Q: 保证分布式事务完整性与顺序 • 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium • Streamsets • mysql-binlog-connector-java • Flink CDC 性能指标 • 25w rps • 8GB 大事务 • 5s0 码力 | 18 页 | 3.02 MB | 6 月前3
BRPC与UCX集成指南1个 UcpContext: N个 UcpWorker42 连接管理器UcpCm ●连接管理类 –全局唯一对象 –通过UcpCm * get_or_create_ucp_cm(void)获取 –完成连接的接受 –完成连接的创建 ●监视brpc::Socket类关闭文件句柄 ●连接以文件句柄表示43 连接管理器UcpCm ● 连接以文件句柄返回 –int Accept(ucp_conn_request_h req); –int Connect(const butil::EndPoint &peer); –UcpConnectionRef GetConnection(int fd1);44 连接管理器UcpCm ●Brpc socket代码不少地方需要文件句柄表示连接,使用句柄可以减少代码修改。例如 SocketOptions.fd为-1表示尚未连接。 ●UcpCm返回的文件句柄实际上是pipe的写端句柄 减少了修 改。UcpCm检测到pipe读端可读,关闭UcpConnection。 ●以上修改实际上绕过了BRPC的Event dispatcher触发读写机制,UCX自己完成发送接收45 连接管理器UcpCm ●连接管理类 –全局唯一对象 –通过UcpCm * get_or_create_ucp_cm(void)获取 –完成连接的接受 –完成连接的创建 ●监视brpc::Socket类关闭文件句柄0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve文件系统元数据管理300 5、client给server1发送请求: 修改记录 "C"的inode link++ 这里涉及到增加dentry和增加link,这两个操作不在一个节点上,也需要使用分布式锁进行控制,做成事务。 list:遍历/A目录 1、client给server0发送请求: parentid 0 + name "A",查询"A"的inodeid为100 inode 100,查询的"A"的inode信息。 这里rename的时候,涉及到inode不需要变动,只是dentry改变。存在着一个中间状态,新的dentry生成,旧的dentry还未删除,这对文件的inode本身不会改变。这里如何保证事务性,上半年的demo先不考虑,留 到下半年解决。 hardlink:生成一个hardlink /B/E,指向文件/A/C 1、client给server0发送请求: parentid 0 + name 400 5、client给server0发送请求: 修改记录 "C"/"E"的inode link++ 这里只需要增加一台dentry,然后inode中link++。同样这里的操作也分为两步,事务性也需要处理,留到下半年考虑。 6、curve文件系统的多文件系统的设计 curve文件系统设计上支持多文件系统。文件系统的super block元数据设计。 多文件系统相对于单文件系统,多了0 码力 | 24 页 | 204.67 KB | 6 月前3
CurveFS Client 概要设计parent,并修改name为newname。 二是,在new parent创建新的inode和dentry,然后删除旧的parent下的inode和dentry 两者都涉及到rename的事务性的问题?( ) 这里可能还需要详细分析到底是否需要完整的事务的4个特性acid,还是只需要实现其中部分 目前阶段rename可先不实现,但是可以先考虑一些方案。 symlink & readlink void (*symlink)0 码力 | 11 页 | 487.92 KB | 6 月前3
TGT服务器的优化--op update --tid 1 --lun 1 --params disksize=auto • Initiator 重新发送SCSI READ CAPACITY命令 • Windows 磁盘管理器refresh • Linux open-iscsi, iscsiadm --mode node -RDPO & FUA • DPO是disable page out的缩写,FUA是force unit0 码力 | 15 页 | 637.11 KB | 6 月前3
Curve 分布式存储设计高性能分布式共享数据库场景 2. Curve块存储提供底层分布式共享存储 3. Polardb for PostgreSQL提供上层高性能数 据库服务 4. 性能测试 1. benchmarkSQL 每分钟事务数提升39% 2. pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI)0 码力 | 20 页 | 4.13 MB | 6 月前3
CurveFS方案设计部分空间的回收。 blustore/polarfs 直接在块设备上构建分布式fs。一个文件的数据对应块设备上某个空间,因此需要知道块设备的哪些空间是空闲的,哪些是已经分配出去的, 需要一个空间分配管理器。blustore有两个空间分配器bitmap和stupid。polarfs开源部分有空间映射关系,但空间分配器没有公布。 当前curve已经实现了块设备。curve的数据节点采用了chunkfi0 码力 | 14 页 | 619.32 KB | 6 月前3
共 7 条
- 1













