 Greenplum 分布式数据库内核揭秘VMware, Inc. Greenplum 分布式数 据库内核揭秘 Greenplum内核开发工程师 2022-03-16 李正龙 Confidential │ ©2021 VMware, Inc. Agenda 2 - Greenplum 分布式数据库简介 - Greenplum 集群化概述 - 分布式数据存储与多态存储 - 分布式查询优化器与执行器 - Greenplum Greenplum 分布式数据库简介 Features Confidential │ ©2021 VMware, Inc. 4 Greenplum 是基于 PostgreSQL 所实现的大规模并行处理(MPP)开源数据平台,具有良好的弹性 和线性拓展能力,内置并行存储、并行通信、并行计算和并行优化功能,兼容 SQL 标准。拥有独 特的高效的 ORCA 优化器,具有强大、高效的 PB 级数据存储、处理和实时分析能力,同时支持 级数据存储、处理和实时分析能力,同时支持 OLTP 型业务的混合负载。 Greenplum 分布式数据库简介 5 Confidential │ ©2021 VMware, Inc. Greenplum 集群化概述 Coordinator/Segment, Primary/Mirror Confidential │ ©2021 VMware, Inc. 6 Greenplum 集群化概述 数据库的组成 l0 码力 | 31 页 | 3.95 MB | 1 年前3 Greenplum 分布式数据库内核揭秘VMware, Inc. Greenplum 分布式数 据库内核揭秘 Greenplum内核开发工程师 2022-03-16 李正龙 Confidential │ ©2021 VMware, Inc. Agenda 2 - Greenplum 分布式数据库简介 - Greenplum 集群化概述 - 分布式数据存储与多态存储 - 分布式查询优化器与执行器 - Greenplum Greenplum 分布式数据库简介 Features Confidential │ ©2021 VMware, Inc. 4 Greenplum 是基于 PostgreSQL 所实现的大规模并行处理(MPP)开源数据平台,具有良好的弹性 和线性拓展能力,内置并行存储、并行通信、并行计算和并行优化功能,兼容 SQL 标准。拥有独 特的高效的 ORCA 优化器,具有强大、高效的 PB 级数据存储、处理和实时分析能力,同时支持 级数据存储、处理和实时分析能力,同时支持 OLTP 型业务的混合负载。 Greenplum 分布式数据库简介 5 Confidential │ ©2021 VMware, Inc. Greenplum 集群化概述 Coordinator/Segment, Primary/Mirror Confidential │ ©2021 VMware, Inc. 6 Greenplum 集群化概述 数据库的组成 l0 码力 | 31 页 | 3.95 MB | 1 年前3
 Greenplum分布式事务和两阶段提交协议Greenplum中文社区 https://cn.greenplum.org 博文 资料 文档 项目 全新的问答论坛 分布式事务和 两阶段提交协议 6 ● 事务实现原理和Write Ahead Logging(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化 Outline 7 事务的属性:ACID 事务的属性:ACID 属性 含义 数据库系统的实现 Atomic 原子性 事务中的操作要么全部正确执行,要么完全不 执行。 Write Ahead Logging,分布式事务:两阶段提交协议 Consistency 一致性 数据库系统必须保证事务的执行使得数据库 从一个一致性状态转移到另一个一致性状态。 (满足完整性约束) 实现对A、I、D三个属性的支持 Isolation 隔离性 多个事务并发地执行,对每个事务来说,它并 Phase Locking, 2PL)、乐观并发控制 (OCC) Durability 持久性 一个事务在提交之后,该事务对数据库的改变 是持久的。 Write Ahead Logging + 存储管理 Jim Gray于1981年VLDB描述了事务的原子性、一致性和持久性,在此基础上,Haerder和Reuter在1983年中提出了事务的隔离性并提出术语 “ACID”,自此,事务的ACID四个性质成为业内标准术语0 码力 | 42 页 | 2.12 MB | 1 年前3 Greenplum分布式事务和两阶段提交协议Greenplum中文社区 https://cn.greenplum.org 博文 资料 文档 项目 全新的问答论坛 分布式事务和 两阶段提交协议 6 ● 事务实现原理和Write Ahead Logging(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化 Outline 7 事务的属性:ACID 事务的属性:ACID 属性 含义 数据库系统的实现 Atomic 原子性 事务中的操作要么全部正确执行,要么完全不 执行。 Write Ahead Logging,分布式事务:两阶段提交协议 Consistency 一致性 数据库系统必须保证事务的执行使得数据库 从一个一致性状态转移到另一个一致性状态。 (满足完整性约束) 实现对A、I、D三个属性的支持 Isolation 隔离性 多个事务并发地执行,对每个事务来说,它并 Phase Locking, 2PL)、乐观并发控制 (OCC) Durability 持久性 一个事务在提交之后,该事务对数据库的改变 是持久的。 Write Ahead Logging + 存储管理 Jim Gray于1981年VLDB描述了事务的原子性、一致性和持久性,在此基础上,Haerder和Reuter在1983年中提出了事务的隔离性并提出术语 “ACID”,自此,事务的ACID四个性质成为业内标准术语0 码力 | 42 页 | 2.12 MB | 1 年前3
 Greenplum 精粹文集SMP(对称多处理)架构难于扩展,并且在 CPU 计算和 IO 吞吐上不 能满足海量数据的计算需求。 分布式存储和分布式计算理论刚刚被提出来,Google 的两篇著名论文 发表后引起业界的关注,一篇是关于 GFS 分布式文件系统,另外一篇 是关于 MapReduce 并行计算框架的理论,分布式计算模式在互联网 行业特别是收索引擎和分词检索等方面获得了巨大成功。 Big Date2.indd 1 16-11-22 下午3:38 2 由此,业界认识到对于海量数据需要一种新的计算模式来支持,这种 模式就是可以支持 Scale-out 横向扩展的分布式并行数据计算技术。 当时,开放的X86服务器技术已经能很好的支持商用,借助高速网络(当 时是千兆以太网)组建的 X86 集群在整体上提供的计算能力已大幅高 于传统 SMP 主机,并且成本很低,横向的扩展性还可带来系统良好 的成长性。 MPP(海量并行处理)计算框架,最终还 是需要软件来实现,Greenplum 正是在这一背景下产生的,借助于分 布式计算思想,Greenplum 实现了基于数据库的分布式数据存储和并 行计算(GoogleMapReduce 实现的是基于文件的分布式数据存储和 计算,我们会在后面比较这两种方法的优劣性)。 话说当年 Greenplum(当时还是一个 Startup 公司,创始人家门口有 一棵青梅 ——gr0 码力 | 64 页 | 2.73 MB | 1 年前3 Greenplum 精粹文集SMP(对称多处理)架构难于扩展,并且在 CPU 计算和 IO 吞吐上不 能满足海量数据的计算需求。 分布式存储和分布式计算理论刚刚被提出来,Google 的两篇著名论文 发表后引起业界的关注,一篇是关于 GFS 分布式文件系统,另外一篇 是关于 MapReduce 并行计算框架的理论,分布式计算模式在互联网 行业特别是收索引擎和分词检索等方面获得了巨大成功。 Big Date2.indd 1 16-11-22 下午3:38 2 由此,业界认识到对于海量数据需要一种新的计算模式来支持,这种 模式就是可以支持 Scale-out 横向扩展的分布式并行数据计算技术。 当时,开放的X86服务器技术已经能很好的支持商用,借助高速网络(当 时是千兆以太网)组建的 X86 集群在整体上提供的计算能力已大幅高 于传统 SMP 主机,并且成本很低,横向的扩展性还可带来系统良好 的成长性。 MPP(海量并行处理)计算框架,最终还 是需要软件来实现,Greenplum 正是在这一背景下产生的,借助于分 布式计算思想,Greenplum 实现了基于数据库的分布式数据存储和并 行计算(GoogleMapReduce 实现的是基于文件的分布式数据存储和 计算,我们会在后面比较这两种方法的优劣性)。 话说当年 Greenplum(当时还是一个 Startup 公司,创始人家门口有 一棵青梅 ——gr0 码力 | 64 页 | 2.73 MB | 1 年前3
 Greenplum Database 管理员指南 6.2.1........................ - 19 - 第二章:分布式数据库概念 .................................................................................................... - 21 - 数据是如何存储的 .................................... ........................................................................................ - 27 - 管理对象权限 ................................................................................................ ................................................................................. - 79 - 第七章:定义数据库对象 ..................................................................................................0 码力 | 416 页 | 6.08 MB | 1 年前3 Greenplum Database 管理员指南 6.2.1........................ - 19 - 第二章:分布式数据库概念 .................................................................................................... - 21 - 数据是如何存储的 .................................... ........................................................................................ - 27 - 管理对象权限 ................................................................................................ ................................................................................. - 79 - 第七章:定义数据库对象 ..................................................................................................0 码力 | 416 页 | 6.08 MB | 1 年前3
 Greenplum数据仓库UDW - UCloud中立云计算服务商的⽀持空间、地理位置应⽤。最新⽀持greeplum6.2.1版本。 云数据仓库产品架构 云数据仓库产品架构 云数据库仓库 UDW 服务的架构图如下所⽰: UDW 采⽤⽆共享的 MPP 架构,适⽤于海量数据的存储和计算。UDW 的架构如上图所⽰,主要有 Client、Master Node 和 Compute Node 组成。基本组成部分的功能如下: 产品架构 Greenplum数据仓库 UDW Copyright 调度分发执⾏计划 汇总 Segment 的执⾏结果并将结果返回给客⼾端 3. Compute Node: Compute Node 管理节点的计算和存储资源 每个 Compute Node 由多个 Segment 组成 Segment 负责业务数据的存储、⽤⼾ SQL 的执⾏ ⾼可⽤ ⾼可⽤ 产品架构 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 2012-2021 UCloud 优刻得 10/206 2.选择计算节点机型、计算节点数量以及付费⽅式。 其中可选的机型配置有: 机型 机型 名称 名称 配置 配置 存储密集型 ds1.large 4核 24G 2000G(SATA) 存储密集型 ds1.6xlarge 24核 144G 12000G(SATA) 计算密集型 dc1.large 2核 12G 300G(SSD) 快速上⼿ Greenplum数据仓库0 码力 | 206 页 | 5.35 MB | 1 年前3 Greenplum数据仓库UDW - UCloud中立云计算服务商的⽀持空间、地理位置应⽤。最新⽀持greeplum6.2.1版本。 云数据仓库产品架构 云数据仓库产品架构 云数据库仓库 UDW 服务的架构图如下所⽰: UDW 采⽤⽆共享的 MPP 架构,适⽤于海量数据的存储和计算。UDW 的架构如上图所⽰,主要有 Client、Master Node 和 Compute Node 组成。基本组成部分的功能如下: 产品架构 Greenplum数据仓库 UDW Copyright 调度分发执⾏计划 汇总 Segment 的执⾏结果并将结果返回给客⼾端 3. Compute Node: Compute Node 管理节点的计算和存储资源 每个 Compute Node 由多个 Segment 组成 Segment 负责业务数据的存储、⽤⼾ SQL 的执⾏ ⾼可⽤ ⾼可⽤ 产品架构 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 2012-2021 UCloud 优刻得 10/206 2.选择计算节点机型、计算节点数量以及付费⽅式。 其中可选的机型配置有: 机型 机型 名称 名称 配置 配置 存储密集型 ds1.large 4核 24G 2000G(SATA) 存储密集型 ds1.6xlarge 24核 144G 12000G(SATA) 计算密集型 dc1.large 2核 12G 300G(SSD) 快速上⼿ Greenplum数据仓库0 码力 | 206 页 | 5.35 MB | 1 年前3
 完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplum操作系统支持多设备,应用一次开发覆盖全场景。 openEuler 平台架构 openEuler 是覆盖全场景的创新平台,在引领内核创新,夯实云化基座的基础上,面向计算架构互联总线、存储介质 发展新趋势,创新分布式、实时加速引擎和基础服务,结合边缘、嵌入式领域竞争力探索,打造全场景协同的面向数字 基础设施的开源操作系统。 完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplum EulerFS:面向非易失性内存的新文件系统,采用软更新、目录双视图等技术减少文件元数据同步 时间,提升文件读写性能。 • 内存分级扩展 etMem:新增用户态 swap 功能,策略配置淘汰的冷内存交换到用户态存储,用户无感知,性能 优于内核态 swap。 2. 夯实云化基座 容器操作系统 KubeOS:云原生场景,实现 OS 容器化部署、运维,提供与业务容器一致的基于 K8S 的管理体验。 deadlockdetector) 这项技术对性能提升特别是 Update 和 Delete 至关重要。锁是数据库中实现并发控制的重要技术,随之而来的死锁 处理。Greenplum 创新性的采用了分布式死锁检测,更新删除表的锁级别已降低,支持并发更新删除操作,大大提 升了处理性能。 并发控制优化 Greenplum 6 除了全局死锁检测,还引入了多项其他并发控制优化方法,这些优化对0 码力 | 17 页 | 2.04 MB | 1 年前3 完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplum操作系统支持多设备,应用一次开发覆盖全场景。 openEuler 平台架构 openEuler 是覆盖全场景的创新平台,在引领内核创新,夯实云化基座的基础上,面向计算架构互联总线、存储介质 发展新趋势,创新分布式、实时加速引擎和基础服务,结合边缘、嵌入式领域竞争力探索,打造全场景协同的面向数字 基础设施的开源操作系统。 完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplum EulerFS:面向非易失性内存的新文件系统,采用软更新、目录双视图等技术减少文件元数据同步 时间,提升文件读写性能。 • 内存分级扩展 etMem:新增用户态 swap 功能,策略配置淘汰的冷内存交换到用户态存储,用户无感知,性能 优于内核态 swap。 2. 夯实云化基座 容器操作系统 KubeOS:云原生场景,实现 OS 容器化部署、运维,提供与业务容器一致的基于 K8S 的管理体验。 deadlockdetector) 这项技术对性能提升特别是 Update 和 Delete 至关重要。锁是数据库中实现并发控制的重要技术,随之而来的死锁 处理。Greenplum 创新性的采用了分布式死锁检测,更新删除表的锁级别已降低,支持并发更新删除操作,大大提 升了处理性能。 并发控制优化 Greenplum 6 除了全局死锁检测,还引入了多项其他并发控制优化方法,这些优化对0 码力 | 17 页 | 2.04 MB | 1 年前3
 Greenplum on Kubernetes
容器化MPP数据库云数据库市场巨大 ● 云数据库增速巨大 ● DBasS的需求 ● 跨云的需求 云数据库实现方案 云数据库需求 ● DBasS ○ 自动化运维 ○ 自动化调优 ● 弹性资源管理 ○ 存储资源 ○ 计算资源 ● 安全 ○ 用户数据 ○ 临时文件 ○ 网络传输 ○ 权限控制 ● 跨云 ○ 公有云 ○ 私有云 云数据库实现方案 ● 全新数据库 ○ Snowflake Vertica Eon Mode ● 容器化数据库+Kubernetes ○ Apache Spark ○ CockroachDB ○ Apache HAWQ 云数据库存储方案 ● 块存储 ○ 文件系统接口 ● 对象存储 ○ 成本低 ○ 扩展性强 ○ 访问延迟高 Greenplum on Kubernetes Network Interconnect Standby Host Master Primary Segment部署策略 ○ Mirror Segment部署策略 ● 容器化Greenplum运维管理 ○ 故障检测及恢复 ○ 升级扩容 ● 容器化Greenplum存储管理 ○ 容器本地存储易失性 容器化Greenplum ● 容器粒度 ○ Segment主机 VS. Segment实例 ● 容器资源分配 ○ CPU ○ 内存 ○ 磁盘 ● 容器间网络互联0 码力 | 33 页 | 1.93 MB | 1 年前3 Greenplum on Kubernetes
容器化MPP数据库云数据库市场巨大 ● 云数据库增速巨大 ● DBasS的需求 ● 跨云的需求 云数据库实现方案 云数据库需求 ● DBasS ○ 自动化运维 ○ 自动化调优 ● 弹性资源管理 ○ 存储资源 ○ 计算资源 ● 安全 ○ 用户数据 ○ 临时文件 ○ 网络传输 ○ 权限控制 ● 跨云 ○ 公有云 ○ 私有云 云数据库实现方案 ● 全新数据库 ○ Snowflake Vertica Eon Mode ● 容器化数据库+Kubernetes ○ Apache Spark ○ CockroachDB ○ Apache HAWQ 云数据库存储方案 ● 块存储 ○ 文件系统接口 ● 对象存储 ○ 成本低 ○ 扩展性强 ○ 访问延迟高 Greenplum on Kubernetes Network Interconnect Standby Host Master Primary Segment部署策略 ○ Mirror Segment部署策略 ● 容器化Greenplum运维管理 ○ 故障检测及恢复 ○ 升级扩容 ● 容器化Greenplum存储管理 ○ 容器本地存储易失性 容器化Greenplum ● 容器粒度 ○ Segment主机 VS. Segment实例 ● 容器资源分配 ○ CPU ○ 内存 ○ 磁盘 ● 容器间网络互联0 码力 | 33 页 | 1.93 MB | 1 年前3
 Greenplum数据库架构分析及5.x新功能分享Greenplum 简介 4 Pivotal Confidential–Inter nal Use Only GPDB:为大数据存储、计算、挖掘而设计  标准 SQL 数据库:ANSI SQL 2008 标准,OLAP,JDBC/ODBC  支持ACID、分布式事务  分布式数据库:线性扩展,支持上百物理节点  企业级数据库:全球大客户超过 1000+ 安装集群  百万行源代码,超过10年的全球研发投入 无共享大规模并行处理 先进的查询优化器 多态存储系统 客户端访问 ODBC, JDBC, OLEDB, etc. 核心MPP 架构 并行数据流引擎 高速软数据交换机制 MPP Scatter/Gather 流处理 在线系统扩展 任务管理 服务 加载 & 数据联邦 高速数据加载 近实时数据加载 任意系统数据访问 存储 & 数据访问 混合存储引擎(行存&列存) 多种压缩,多级分区表 Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D 10 Pivotal Confidential–Inter nal Use Only 多级分区存储 • 哈希Distribution:数据均 匀的分布到各个数据节点 • 范围分区: 数据节点内部, 根据多种规则分区,降低扫 描量 数据集 Segment 1A Segment 1C Segment0 码力 | 44 页 | 8.35 MB | 1 年前3 Greenplum数据库架构分析及5.x新功能分享Greenplum 简介 4 Pivotal Confidential–Inter nal Use Only GPDB:为大数据存储、计算、挖掘而设计  标准 SQL 数据库:ANSI SQL 2008 标准,OLAP,JDBC/ODBC  支持ACID、分布式事务  分布式数据库:线性扩展,支持上百物理节点  企业级数据库:全球大客户超过 1000+ 安装集群  百万行源代码,超过10年的全球研发投入 无共享大规模并行处理 先进的查询优化器 多态存储系统 客户端访问 ODBC, JDBC, OLEDB, etc. 核心MPP 架构 并行数据流引擎 高速软数据交换机制 MPP Scatter/Gather 流处理 在线系统扩展 任务管理 服务 加载 & 数据联邦 高速数据加载 近实时数据加载 任意系统数据访问 存储 & 数据访问 混合存储引擎(行存&列存) 多种压缩,多级分区表 Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D 10 Pivotal Confidential–Inter nal Use Only 多级分区存储 • 哈希Distribution:数据均 匀的分布到各个数据节点 • 范围分区: 数据节点内部, 根据多种规则分区,降低扫 描量 数据集 Segment 1A Segment 1C Segment0 码力 | 44 页 | 8.35 MB | 1 年前3
 Greenplum开源MPP数据库介绍Greenplum的MPP架构 Ø 分布式优化器: Postgres planner 和 ORCA Ø 分布式事务和执行 Ø Greenplum存储 Ø Greenplum生态 Ø Greenplum 7 Confidential │ ©2022 VMware, Inc. 3 Greenplum简介:什么是Greenplum? 基于PostgreSQL、开源、分布式MPP、ACID完备、为OLAP优化的关系型数据仓库。 ©2022 VMware, Inc. 7 执行架构 Interconnect Client Ø Coordinator: q 管理其它节点 q 生成分布式计划 q 下发计划和汇总结果 q 管理分布式事务 Ø Segments: q 存储数据,share-nothing q 产生计算进程 Ø Libpq:控制信道 Ø Interconnect: 数据交换信道 Confidential 数据存两份,Coordinator有standby Ø 自动同步数据 (WAL replication) Ø 自动灾难恢复 (FTS,主备切换) Confidential │ ©2022 VMware, Inc. 9 分布式优化器:OLAP Ø OLTP系统的SQL语句相对简单(CURD) Ø OLAP系统的SQL语句就复杂得多(OLTP则尽量避免) q Join 很复杂(多表, outer join, lateral…)0 码力 | 23 页 | 4.55 MB | 1 年前3 Greenplum开源MPP数据库介绍Greenplum的MPP架构 Ø 分布式优化器: Postgres planner 和 ORCA Ø 分布式事务和执行 Ø Greenplum存储 Ø Greenplum生态 Ø Greenplum 7 Confidential │ ©2022 VMware, Inc. 3 Greenplum简介:什么是Greenplum? 基于PostgreSQL、开源、分布式MPP、ACID完备、为OLAP优化的关系型数据仓库。 ©2022 VMware, Inc. 7 执行架构 Interconnect Client Ø Coordinator: q 管理其它节点 q 生成分布式计划 q 下发计划和汇总结果 q 管理分布式事务 Ø Segments: q 存储数据,share-nothing q 产生计算进程 Ø Libpq:控制信道 Ø Interconnect: 数据交换信道 Confidential 数据存两份,Coordinator有standby Ø 自动同步数据 (WAL replication) Ø 自动灾难恢复 (FTS,主备切换) Confidential │ ©2022 VMware, Inc. 9 分布式优化器:OLAP Ø OLTP系统的SQL语句相对简单(CURD) Ø OLAP系统的SQL语句就复杂得多(OLTP则尽量避免) q Join 很复杂(多表, outer join, lateral…)0 码力 | 23 页 | 4.55 MB | 1 年前3
 Greenplum 6: 混合负载的理想数据平台Greenplum 6: 混合负载的理想数据平台 高小明 全球领先的开源MPP大数据平台 可扩展性 ACID事务 VS 分布式 简单易用 VS 结构化 半结构非结构化 VS 事务型 分析型 VS MPP - massively parallel processing - 大规模并行处理 master standby primary Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal Use Only 列式存储 表‘SALES’ 表‘SALES’ ■ Graefe 优化分布式大数据系统中特别复杂的查询 18 Madlib: 迭代并行模型训练 Master model = init(…) WHILE model not converged model = SELECT model.aggregation(…) FROM data table ENDWHILE 模型存储过程 … 广播0 码力 | 52 页 | 4.48 MB | 1 年前3 Greenplum 6: 混合负载的理想数据平台Greenplum 6: 混合负载的理想数据平台 高小明 全球领先的开源MPP大数据平台 可扩展性 ACID事务 VS 分布式 简单易用 VS 结构化 半结构非结构化 VS 事务型 分析型 VS MPP - massively parallel processing - 大规模并行处理 master standby primary Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal Use Only 列式存储 表‘SALES’ 表‘SALES’ ■ Graefe 优化分布式大数据系统中特别复杂的查询 18 Madlib: 迭代并行模型训练 Master model = init(…) WHILE model not converged model = SELECT model.aggregation(…) FROM data table ENDWHILE 模型存储过程 … 广播0 码力 | 52 页 | 4.48 MB | 1 年前3
共 26 条
- 1
- 2
- 3













