Suche senden
Hochladen
Tdsql在微众银行核心交易系统中的实践 雷海林
•
3 gefällt mir
•
1,311 views
Cheng Feng
Folgen
Tdsql在微众银行核心交易系统中的实践 雷海林
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Stand out your presentation - 让演讲PPT脱颖而出
Stand out your presentation - 让演讲PPT脱颖而出
Bobby Gao
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
jackbillow
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例
郁萍 王
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
内存数据库[1]
内存数据库[1]
小新 制造
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
YANGL *
Empfohlen
Stand out your presentation - 让演讲PPT脱颖而出
Stand out your presentation - 让演讲PPT脱颖而出
Bobby Gao
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
jackbillow
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例
郁萍 王
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
内存数据库[1]
内存数据库[1]
小新 制造
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
YANGL *
1 opening-jeff-storagesummit-347340-zhs
1 opening-jeff-storagesummit-347340-zhs
ITband
MySQL 網路參考架構
MySQL 網路參考架構
郁萍 王
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
XiaoJun Hong
Memcached vs redis
Memcached vs redis
qianshi
No sql带来了什么 孙立
No sql带来了什么 孙立
Shaoning Pan
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
Wensong Zhang
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
Ceph Community
数据架构方面的一些探讨
数据架构方面的一些探讨
Chao Zhu
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
XiaoJun Hong
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
drewz lin
Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
新浪微博redis技术演化
新浪微博redis技术演化
XiaoJun Hong
現代資料庫
現代資料庫
Jasper Chen
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
Leechael
自助工具助Dba提升效率
自助工具助Dba提升效率
Chao Zhu
Redis运维之道
Redis运维之道
jackbillow
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
Brendan Gregg
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
Brendan Gregg
BPF: Tracing and more
BPF: Tracing and more
Brendan Gregg
Weitere ähnliche Inhalte
Was ist angesagt?
1 opening-jeff-storagesummit-347340-zhs
1 opening-jeff-storagesummit-347340-zhs
ITband
MySQL 網路參考架構
MySQL 網路參考架構
郁萍 王
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
XiaoJun Hong
Memcached vs redis
Memcached vs redis
qianshi
No sql带来了什么 孙立
No sql带来了什么 孙立
Shaoning Pan
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
Wensong Zhang
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
Ceph Community
数据架构方面的一些探讨
数据架构方面的一些探讨
Chao Zhu
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
XiaoJun Hong
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
drewz lin
Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
新浪微博redis技术演化
新浪微博redis技术演化
XiaoJun Hong
現代資料庫
現代資料庫
Jasper Chen
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
Leechael
自助工具助Dba提升效率
自助工具助Dba提升效率
Chao Zhu
Redis运维之道
Redis运维之道
jackbillow
Was ist angesagt?
(19)
1 opening-jeff-storagesummit-347340-zhs
1 opening-jeff-storagesummit-347340-zhs
MySQL 網路參考架構
MySQL 網路參考架構
大规模数据库存储方案
大规模数据库存储方案
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
Memcached vs redis
Memcached vs redis
No sql带来了什么 孙立
No sql带来了什么 孙立
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
The opportunity and challenge of Enterprise Ceph - Jiaju Zhang, Gao Mingxing
数据架构方面的一些探讨
数据架构方面的一些探讨
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
Taobao数据库这5年
Taobao数据库这5年
分布式缓存与队列
分布式缓存与队列
新浪微博redis技术演化
新浪微博redis技术演化
現代資料庫
現代資料庫
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
自助工具助Dba提升效率
自助工具助Dba提升效率
Redis运维之道
Redis运维之道
Andere mochten auch
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
Brendan Gregg
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
Brendan Gregg
BPF: Tracing and more
BPF: Tracing and more
Brendan Gregg
Linux Profiling at Netflix
Linux Profiling at Netflix
Brendan Gregg
Velocity 2015 linux perf tools
Velocity 2015 linux perf tools
Brendan Gregg
Linux Systems Performance 2016
Linux Systems Performance 2016
Brendan Gregg
Andere mochten auch
(6)
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
BPF: Tracing and more
BPF: Tracing and more
Linux Profiling at Netflix
Linux Profiling at Netflix
Velocity 2015 linux perf tools
Velocity 2015 linux perf tools
Linux Systems Performance 2016
Linux Systems Performance 2016
Ähnlich wie Tdsql在微众银行核心交易系统中的实践 雷海林
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
liu sheng
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
YANGL *
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
百度数据库中间层
百度数据库中间层
yp_fangdong
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
mysqlops
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
翀 刘
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
Dahui Feng
Big data, big deal ms it168文库
Big data, big deal ms it168文库
Accenture
Big data, big deal ms it168文库
Big data, big deal ms it168文库
Accenture
My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1
Ivan Tu
imobile-beta技术沙龙
imobile-beta技术沙龙
posestudio
开源分布式数据库Tidb简介
开源分布式数据库Tidb简介
www.tujia.com
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈
Liang Xie
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
3.架构设计篇2
3.架构设计篇2
gavin shaw
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
Chao Zhu
Bdwf11 netezza james_zheng
Bdwf11 netezza james_zheng
bigdatawf
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
十二項架構設計原則
十二項架構設計原則
Philip Zheng
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
Feng Yu
Ähnlich wie Tdsql在微众银行核心交易系统中的实践 雷海林
(20)
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
百度数据库中间层
百度数据库中间层
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
Big data, big deal ms it168文库
Big data, big deal ms it168文库
Big data, big deal ms it168文库
Big data, big deal ms it168文库
My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1
imobile-beta技术沙龙
imobile-beta技术沙龙
开源分布式数据库Tidb简介
开源分布式数据库Tidb简介
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
3.架构设计篇2
3.架构设计篇2
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
Bdwf11 netezza james_zheng
Bdwf11 netezza james_zheng
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
十二項架構設計原則
十二項架構設計原則
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
Mehr von Cheng Feng
Strata singapore survey
Strata singapore survey
Cheng Feng
Sparkcamp stratasingapore
Sparkcamp stratasingapore
Cheng Feng
运营商去O浅析 公开版-王晓征
运营商去O浅析 公开版-王晓征
Cheng Feng
数据库架构师做什么 58同城数据库架构设计思路-沈剑
数据库架构师做什么 58同城数据库架构设计思路-沈剑
Cheng Feng
Maria db新特性剖析 京东张金鹏
Maria db新特性剖析 京东张金鹏
Cheng Feng
Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰
Cheng Feng
Maria db新特性剖析 京东张金鹏
Maria db新特性剖析 京东张金鹏
Cheng Feng
Epsrcws08 campbell kbm_01
Epsrcws08 campbell kbm_01
Cheng Feng
Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01
Cheng Feng
Mehr von Cheng Feng
(9)
Strata singapore survey
Strata singapore survey
Sparkcamp stratasingapore
Sparkcamp stratasingapore
运营商去O浅析 公开版-王晓征
运营商去O浅析 公开版-王晓征
数据库架构师做什么 58同城数据库架构设计思路-沈剑
数据库架构师做什么 58同城数据库架构设计思路-沈剑
Maria db新特性剖析 京东张金鹏
Maria db新特性剖析 京东张金鹏
Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰
Maria db新特性剖析 京东张金鹏
Maria db新特性剖析 京东张金鹏
Epsrcws08 campbell kbm_01
Epsrcws08 campbell kbm_01
Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01
Tdsql在微众银行核心交易系统中的实践 雷海林
1.
2.
TDSQL架构分享 腾讯 - 计费平台部 harlylei
3.
• harlylei(雷海林) • 腾讯
/ TEG / 计费平台部 • 2007年加入公司,10年以上的Linux后台 Server开发经验,目前主要从事分布式 Cache,实时大数据处理引擎,分布式 MySQL(TDSQL)设计和开发工作。
4.
联机交易 数据层解决方案 米大师 数据层解决方案 金融云 敬请期待…
5.
1. 我们需要什么样的MySQL 2. 系统结构 3.
解决的几个重要问题 a. 自动扩容缩容,透明分表 b. 高一致性容灾 c. 高可用性的保障机制 4. 目前的运营数据 5. 展望
6.
如果: MySQL性能足够强大 MySQL一致性切换足够完善 MySQL不需要关心分库分表 MySQL不需要关心容量不足 那么: 代码会比现在简单 运维会比现在简单 而简单意味着 —— 健壮 百亿级的账户,订单数据 百亿级的日交易流水 十万级别每秒并发 毫秒级交易响应 —— 易伸缩,高并发 一分不差的银行级业务 ——
高一致性的容灾 7 * 24 小时的不间断服务 —— 自动容灾,自动扩容
7.
• 继续通过MySQL API和sql接口访问集群 •
节点异常自动切换,切换过程保证数据零丢失,管好钱袋子 • 按需自动扩容/缩容,以支撑业务爆发式增长,扩容过程对业务 基本上无感知 • 业务之间支持隔离,集群自身具备流控机制 • 对SQL语句做实时的时耗统计,慢查询分析,异常SQL拒绝等
8.
主 MySQL+Agent 备1 MySQL+Agent 备N MySQL+Agent Set1 ZooKeeper Scheduler Scheduler 网关 网关 网关 主 MySQL+Agent 备1 MySQL+Agent 备N MySQL+Agent SetM 应用 MySQL API 解释,转换sql分发 1.监控实例状态并上报到zk 2.监控表的状态并上报到zk 3.从zk拉取迁移任务并执行 4.参与主备切换流程 1.从zk拉取DDL任务,并在实际的mysql实例上执行 2.从zk获取状态,生成扩容任务 3.控制set内的主备切换 4.多个scheduler自身通过kp的选举实现容灾 1.识别出ddl操作,并以任务形式保存到zookeeper 2.识别出dml操作,进行sql转换并发到对应的set中的主或者备机 3.收集set内各个节点的应答,组合处理之后返回给前端应用api 4.Watch zookeeper,拉取路由,权限等信息
9.
• 规则(水平扩容还是垂直扩容) • 标的:Table •
最小粒度:SET • 即一个伸缩任务应该是:将某个Table的容量伸缩n个SET
10.
谁要扩? • 如何发现源头? 扩到哪? • 如何选择目标? 怎么扩? •
迁移谁? • 是否分裂表?分裂多少? 监控是基础,调度是核心
11.
资源级 • CPU • 内存 •
磁盘空间 • 磁盘IO • 网络IO 业务级 • 时延 • 请求量 • 记录数
12.
• 伸缩方式 • 整表迁移 •
子表分裂 • 原则:避免表分裂,及时表合并 • 表分裂的问题 • 在一个集群中,每次表分裂,会导致集群表数量的增加;集群中 表的数量就是路由的条数,表数量越多,路由的效率就会越低 • 一个实例上面的表越多,对该实例运行环境的判断就越复杂:同 一实例上的子表,表现各异,交叉影响的评估难度增大,可能导 致连锁反应 • 扩容:整表迁移 > 子表分裂 • 缩容:子表合并 > 整表搬迁 整表迁移 子表分裂 T1 T2 T3 T2T1
13.
T GW(逻辑表) T 0 Mysql(物理表) 初始态:逻辑表=物理表 T T 0 T 1 T 2 T 3 T n GW(逻辑表)Mysql(物理表) 扩容后:逻辑表=N个物理表 当SET资源不够 或表记录超标 时,触发扩容, 物理表分裂 该过程自动完成
14.
• 搬迁策略 • 先切后搬 •
先搬后切 • 搬迁过程 1. 镜像同步 • 源agent:记录日志点,导出T中新号段镜像 • 源agent:向T_d批量插入镜像数据 2. 追日志 • 源agent:向T_d追日志 3. 日志追平 • 源agent:日志相差<n时,修改T表名为T_s • 源agent:追平日志 4. 切换新路由 • scheduler :修改新号段路由至T_d 5. 完成 • 搬迁过程中的故障处理(快速失败) • 源主机宕机,容量伸缩终止,现网不受影响 • 目标主机宕机,容量伸缩终止,现网不受影响 gw 源表T 目标表 T_d agent schedu ler agent
15.
• 传统的DDL操作A->B • A表加读锁(影响写) •
用A的建表语句创建B,并修改B结构 • 拷贝A数据到B,锁定B,删除A • B rename成A • 刷新数据字典并释放锁 • 新方式 • 直接采用在线迁移的方式完成 a)可以立即返回到业务,实际的迁移操作异步完成 b)整个过程基本上不锁表
16.
• group by •
Max,sum,min,ave等聚合函数 • Distinct,count(1) • Order by MySQL MySQL MySQL gw业务Server Select * from T order by f1 limit 10; Select * from T_shard_1 order by f1 limit 10; Select * from T_shard_3 order by f1 limit 10; 流式收集结果 并排序
17.
自动切换 自动恢复 主备一致性 跨IDC容灾
18.
谁要切换? • 如何发现故障? • 如何确定是否需要切换? 怎么切换? •
如何保障数据一致性? • 如何切请求? 如何恢复? • 如何重建SET? 监控是基础,一致性是核心
19.
zookeeper MySQL 实例 Agent A 监控是否可以建立新连接, 可读,可写,可同步,资源 消耗情况 注册成临时节点 schedulerwatcher MySQL 实例 Agent B MySQL 实例 Agent
C 检测到A当机,执行选 举切换流程 MySQL 实例 Agent C
20.
MySQL 主节点 1.写入undo log 2.更新page
cache 3.写redo log 4. trx_prepare日志 5.写入binlog 6.Commit日志 7.Return给客户端 Binlog文件 MySQL 备节点 Relay log文 件 Binlog文件 Sql线程apply relay log Slave的io线程读取binlog !!!给了 业务应答, 但是binlog 可能没有被 同步到备机, 导致事务丢 失
21.
MySQL 主节点 1.写入undo log 2.更新page
cache 3.写redo log 4. trx_prepare日志 5.写入binlog 6.Wait ack 6.Commit日志 7.Return给客户端 Binlog文件 MySQL 备节点 Relay log文 件 Binlog文件 Sql线程apply relay log Slave的io线程读取binlog !!!给了业 务应答,能保 证binlog已经 同步到备机的 relay log 收到relaylog 返回应答
22.
SQL Parse Storage Involve Write
binlog Return to client SQL Parse Storage Involve Write binlog Waiting slave dump Storage commit Return to client Commit Commit完成 Commit Commit完成 Storage commit User thread User thread 异步复制 半同步复制 VS 半同步复制可保障一致性,但是…
23.
• 1.超时后蜕化成异步,金融场景不合适 • 2.跨IDC的情况下性能不乐观 主备复制方案(跨IDC)
TPS 时耗(ms) 异步 20,000 <10 半同步 2,200 4~600 网易innosql(半同步) 4,500 4~500 MariaDB Galera Cluster 6,000 4~10000
24.
25.
User Thread Dump Thread IO Thread SQL Thread Binlog write read relaylo g Send Transaction(T1) with
ACK request ACK(T1) write read Inform(T1) Engine commit Commit(T1) OK(T1) master slave User ACK Thread Dump ACK Thread 主备复制方案(跨 IDC) TPS 时耗(ms) 异步 20,000 <10 半同步 2,200 4~600ms 异步化改造后的半 同步 9,500 99.9%的<30ms,少量毛刺,最大达 到600 网易innosql(半同 Commit(T2) Send T2 返回应答 保存 THD 回话
26.
原则: 1、主机可读可写,备机只读,备机可以开放给业务查询使用 2、任何时刻同一个SET不能有两个主机 3, 宁愿拒绝服务,不提供错误的服务,追求CAP中的C,必要的时候牺牲部分A 1、主DB降级为备机(杀死当前所有session,设置只读, 如因为当机原因没有收到下次重新启动也会执行这个 流程),同时会给网关下发暂时没有主节点的路由 2、参与选举的备机停止io线程之后上报最新的binlog点 3、scheduler收到binlog点之后,选择出binlog最大的 节点(可能同时有2个)并要求对应的机器加载完relay log。当收到加载完relay log信息之后,则选择这个 应答的节点为主机; 4、重建主备关系 5、修改路由 6、请求发给新的主机 Proxy Scheduler Master
DB Slave 1 Slave 2 SET Agent Agent Agent Proxy Scheduler Slave 3 Master Slave 26 SET Agent Agent Agent
27.
A(主) a+1,a+2,a+3 C(备) a+1,a+2 B(备) a+1 C(主) a+1,a+2,c+1,c+2 B(备) a+1,a+2,c+1,c+2 A当机,C选举 成新的主机 C(主) a+1,a+2,c+1,c+2 A(备) a+1,a+2,a+3,c+ 1,c+2 B(备) a+1,a+2,c+1,c+2 C(主) a+1,a+2,c+1,c+2 D(备) … B(备) a+1 重新加入,可 能需要回退部 分事务 回退事务a+3 Xtraback up自动快 速重做
28.
• TDSQL当前定位是支撑OLTP类型短事务的业务,不支持join操作 • 弱化了单机MySQL的功能,如存储过程,触发器,视图,自增序列号, Session变量等 •
业务可以将它看成一个加强版的NoSQL系统,优势是存储的是结构化 数据,支持SQL操作 ,支持多个索引,数据高一致性访问,持久化非 常强,数据自动扩容等 • 所有的表能通过某个shard字段(如QQ号,微信号等)进行数据水平拆 分,高频的SQL操作都能带上这个shard字段
29.
• 按组扩容 拥有同样shard字段的所有表采用同样的路由规则,以支持同一 个shard下所有的sql操作,如join,事务等 • 集群虚拟化 引入docker来更灵活地管理set和节点,加强资源隔离
30.
31.
Q&A
32.
33.
热烈欢迎各位大牛加入 微信:harlylei Email: harly@vip.qq.com
Jetzt herunterladen