2017-07 何登成:AliSQL 引领开源技术变革之路(首届中间件技术峰会)

文字内容
1. AliSQL 引领开源技术变革之路 数据库事业部-数据库内核-何登成 1
2. 个人简介  何登成,资深技术专家@Alibaba  从04年开始从事数据库内核研发达10+年 以上。先后参与并主导过国产神舟Oscar数 据库,网易自研存储引擎NTSE/TNT等数 据库产品的研发。同时也作为数据库总负 责人参与了多年阿里巴巴双11购物狂欢节, 蚂蚁新春红包的备战保障工作。有着丰富 的数据库内核研发经验和数据库应用架构 经验。目前负责阿里巴巴数据库内核研发 团队,主导AliSQL的产品研发(AliSQL: 开源MySQL的阿里分支)以及下一代数据 库系统的规划和研发工作。  联系方式  微博:@何_登成 2
3. Agenda AliSQL发展历史简要回顾 X-KV:高性能K-V接口 X-Cluster:AliSQL集群解决方案 3
4. AliSQL? Alibaba的MySQL分支  Since 2010 我们为什么发展一个MySQL分支?  性能  功能  可运维性 4
5. AliSQL:成果展示   40+ new bugs have been found & fixed  All have been reported to the community 40+ new Features have been added New BugFix  30+ bottlenecks have been optimized Performance enhance Feature  Colin Charles Charles (2016). AliSQL and some features that have made it into MariaDB Server 5
6. AliSQL:精简架构 B+Tree Segment/Ext ent/Page Transaction Redo/Undo Replication Change Buffer Lock Binlog Meta Read View Parser Optimizer Net IO Executer InnoDB Concurr ency Control 6
7. AliSQL:性能优化 Online DDl Optimization High Contention Optimization Thread Pool Insert Optimization B+Tree Segment/Ext ent/Page Transaction Redo/Undo Replication Change Buffer Lock Binlog Meta Read View Parser Optimizer Net IO Per Table Multi Thread Slave Group Prepare InnoDB Concurr ency Control Executer Lock_log split Slave Apply Optimization Semi-Sync Optimization BINLOG Throttling … Read Only Transaction Optimization Read View Optimization 7
8. AliSQL:功能 & 可运维性增强 High/Low Watermark Protection Various Flow Control Online Execute Plan Optimize Select from update B+Tree Segment/Ext ent/Page Transaction Redo/Undo Replication Change Buffer Lock Binlog Meta Read View Parser Optimizer Net IO Executer Fast Get Table Meta Per SQL Lock Timeout Option InnoDB Concurr ency Control Auto Fix Inconsistent Column Compression Enrich Deadlock Info … 8
9. Agenda AliSQL发展历史简要回顾 X-KV:高性能K-V接口 X-Cluster:AliSQL集群解决方案 9
10. 什么是X-KV?  X-KV  AliSQL高性能K-V接口,InnoDB Memcached Plugin的扩展  为什么需要X-KV?  Query Performance  Data Consistency Application SQL x protocol mysqld MySQL Server Parse Optimize X-KV Execute Handler API InnoDB API InnoDB Storage Engine 10
11. X-KV:Data Type支持增强 Float/ Double …… Integer Decimal Char/ Varchar …… DateTime Custom Format …… 11
12. X-KV:功能增强 Multi get from multi tables Non-unique index composite indexes & prefix search 12
13. X-KV:新协议  InnoDB Memcached Plugin存在的问题  通过指定delimiter来区分每一列: delimiter如何选择?  NULL和空值无法区分:NULL = 空 PK NAME 1 WORKING PLACE He dengcheng 阿里巴巴西溪园区8号楼  X-KV:新协议  Field = Meta Info + Data  Meta Info • Version Count Length1 Length2 Length3… 0 3 1 1 2 3 1 PK NAME WORKING PLACE 1 He dengcheng 阿里巴巴西溪园区8号楼 13
14. X-KV:可运维性优化  InnoDB Memcached Plugin存在的问题  修改Container表:Uninstall -> Install,生效  运维操作对业务有较大影响  X-KV:运维优化  Container表新增K-V读取配置:直接生效  Container表修改原有配置:通过新协议的Version来生效  DDL,自动重新加载 14
15. X-KV:性能优化 X-KV Performance Optimization 700000 640000 600000 500000 420000 400000 300000 180000 200000 60000 100000 0 Single Get Before Optimization Multi-get from 4 tables Current X-KV  测试场景  模拟阿里的交易数据库上的Query请求(优化后:网卡和CPU瓶颈) 15
16. Agenda AliSQL发展历史简要回顾 X-KV:高性能K-V接口 X-Cluster:AliSQL集群解决方案 16
17. AliSQL/MySQL:Drawback  Why X-Cluster?  数据一致性 • 异步复制 • 半同步复制  持续高可用  区域化/全球化部署  上下游生态联动 17
18. X-Cluster:Based on AliSQL  设计目标  一体化架构:运维友好  极致性能:同城三副本相对 于单机性能下降在10%以内  可异地部署:异地部署,延 时增加,但是保持高吞吐  稳定性:网络抖动高容忍性  兼容性:对原有生态100%兼 容 18
19. X-Cluster核心组件:X-Paxos  设计目标  高性能、可异地部 署、网络抖动高容忍 性  独立基础库,可单独 X-Paxos 使用 Various Distributed System PutLogEntry OnCommit GetInfo AdminCommand Consensus Protocol Stack Replicate Log Module Command Module Heartbeat Module Leader Election Module Worker Pool Async Timer Service Net (libeasy) 19
20. X-Cluster核心技术:Batching & Pipelining 客户程序 乱序确认,顺序提交 Batching & Pipeling 乱序接收日志  Tuning paxos for high-throughput with batching and pipelining (ICDCN12) 20
21. X-Cluster核心技术:Batching & Pipelining(续) Batching Pipelining p1 p1 p2 p2 p3 p3 i i Log Reorder i+1 乱序确认顺序提交 5 6 5 7 67 p1 p2 p3 5 7 6 window window 乱序接收日志 21
22. X-Cluster核心技术: Locality Aware Content Distribution  核心优势  解决Leader出口网络 瓶颈  降低跨Region长传链 路带宽 Region A F F L Region B F F Region C F F F F 22
23. X-Cluster核心技术:日志实现  核心技术  插件式X-Paxos的日志  归一化的ConsensusLog代 替Binlog和RelayLog X-Paxos Consensus Protocol Stack Transmission Module Election module Meta Module Controller  全局统一的Log Index ConsensusLog AliSQL Server DB Server Layer Storage Engine 23
24. X-Cluster核心技术: Asynchronously Commit 24
25. X-Cluster: vs MySQL Group Replication Sysbench QPS in low latency(0.1ms) network 275127.17 300000 241317.4 200000 100000 110432.3 41290.5 0 INSERT OLTP X-Cluster 5.7.17 Gr Sysbench RT in low latency(0.1ms) network 30 20 10 0 25 22 7 3.43 INSERT OLTP X-Cluster 5.7.17 GR 25
26. X-Cluster: vs MySQL Group Replication Sysbench QPS in high latency(30ms) network 400000 200000 265616.02 50366.62 0 104974 11275 INSERT OLTP X-Cluster 5.7.17 GR Sysbench RT in high latency(30ms) network 400 200 304 150 58 98 0 INSERT OLTP X-Cluster 5.7.17 GR 26
27. X-Cluster生态:超越数据一致性和持续可用 27
28. X-Cluster生态:持续备份  原有MySQL备份逻辑  定期备份Binlog文件  RPO一般比较大,例如:大于5分钟  备份跟MySQL的数据一致性保障困难  X-Cluster:持续备份  备份节点,作为X-Cluster的一个Learner节点。实时推送X-Cluster上达成多数派的日志  RPO < 1秒  由于备份的一定是达成多数派的日志,因此无数据一致性问题 28
29. X-Cluster生态:自动化高可用  原有MySQL高可用方案  外部组件依赖:ADHA、ZK  X-Cluster:自动化高可用  Client、Server一体化,No 外部组件依赖 29
30. X-Cluster生态:自动化增量日志消费  原有MySQL下游日志消费  准实时消费MySQL产生的日志  问题之一:数据一致性  问题之二:数据库主备切换与下游消费端的联动  X-Cluster:自动化增量日志消费  日志消费节点作为X-Cluster的Learner节点  只消费达成多数派的日志:数据一致性  X-Cluster自动选主,新Leader自动向日志消费节点推送新日志:彻底解决联动问题 30
31. X-Cluster生态:区域化/全球化部署  按需增加Learner节点  增加读能力,但是不会带来强同步 开销  按需增加Loger节点  Loger节点只有日志,没有数据。  Loger节点可参与选主,但是没有 新增存储开销。低成本节点。  3节点X-Cluster = 2节点MySQL 主备  权重化体系  可以指定节点选主权重,控制每个 节点的选主优先级 31
32. X-Cluster实战:实战中踩过的坑,总结  异常处理  硬件异常  网络异常:Leader Stickiness  Batching & Pipelining  极大事务  极小事务  不同网络时延下的Batching/Pipelining策略  网络异常情况下的Batching/Pipelining策略  全球化部署下的优化  权重体系  热点带来的影响 32
33. 写在最后 联系方式  微博:  Linkedin:  邮箱: 何_登成 he dengcheng dengcheng.hedc@gmail.com 33
34. 34