OceanBase 0.5版本开发实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

杨传辉,2014-04rizhao.ych@alipay.comOceanBase0.5版本开发实践OceanBaseOceanBase介绍2010.5~…服务器总量:1000+业务情况业务数:50+三淘:收藏夹、天猫评价、店铺装修、P4P报表/量子统计、库存中心、SNS、淘足迹、推荐系统,。。。支付宝:会员视图、移动通知、钱包公众账号、实时数据平台,。。。B2B:B2B收藏夹单集群单表最大记录数:OLTP(167亿)/OLAP(2130亿)单集群最大TPS/QPS:6.8万TPS/5.1万QPS单集群最大一天写入行数/总量:7亿/246G议程整体架构回顾0.5架构升级0.5开发测试经验不后续规划议程整体架构回顾0.5架构升级0.5开发测试经验不后续规划设计假设数据只读数据修改数据数据库中每天修改的数据只占整体数据的一小部分假设一天产生2亿笔事务,每笔事务需要10个DML语句,平均一个DML语句500个字节:一天修改量:0.2G*10*500=1TB假设单个节点存储200G,总共只需要5个节点分布式存储引擎数据基线数据修改增量查询修改每日合并数据基线数据修改增量新的修改增量每日合并过程丌影响读写服务每日合并通常在业务低峰期执行(2:00~6:00am)MergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerClientClientClientClientRootServerUpdateServerUpdateServerUpdateServer整体架构修改增量SQL执行基线数据配置中心Client分布式存储引擎+数据库执行层Client不MergeServer之间采用MySQL协议写事务MergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServer1.MS请求CS得到基线数据RootServerUpdateServerUpdateServerUpdateServer修改增量SQL执行基线数据配置中心ClientClientClientClientClient2.MS将基线数据不物理执行计划发送给UPS读事务MergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServerMergeServerChunkServer1.MS将读事务物理执行计划发送给CSRootServerUpdateServerUpdateServerUpdateServer修改增量SQL执行基线数据配置中心ClientClientClientClientClient2.CS请求UPS获取修改增量并不基线数据融合议程整体架构回顾0.5架构升级0.5开发测试经验不后续规划大集群RSMasterRSSlaveMSCSMSCSMSCSMSCSUPSMasterUPSSlaveMSCSMSCSMSCSMSCS租约租约租约租约数据同步租约租约自动错峰合并:每日合并将流量自动切走,合并完切回两机房主备=三机房选丼主备同步MSCSMSCSMSCSMSCSUPSMasterUPSSlaveMSCSMSCSMSCSMSCSUPSSlaveMSCSMSCSMSCSMSCS数据同步数据同步分块单元由Tablet(64~256MB)=2MB宏块新存储系统元数据:RootServer内存=分布式存储引擎中的一张“普通”表格元数据分布式化UserTableT1UserMetaTableT1'UserRootTableT1Tablet1Tablet2…TabletNTablet2Tablet1TabletN...UserTableT2UserMetaTableT2'UserRootTableT2Tablet1Tablet2…TabletNTablet2Tablet1TabletN...FirstRootTableT0.........TheThirdLevelTheSecondLevelTheFirstLevelSQL模块重构引入类MySQL“rangeanalysis”表达式内存管理、SQL模块对象管理代码重构SQL功能增强数据类型:Number操作:多行DML,nestloopjoin函数:日期时间函数,nvl,case…when等更多系统表复杂SQL功能二级索引复杂OLAP运算SQL功能增强问题1:如何对基线数据构建分布式索引?数据表主键为(k1,k2),索引列为(c1,c2)如何生成一张按照索引列(c1,c2)有序组织的分布式表格?问题2:如何维护数据表和索引表的一致性?机器1和机器2:机器1认为数据表有索引,机器2认为没有索引机器2修改数据表,未修改索引表;机器1查询使用了索引表=数据丌一致问题3:查询时如何选择合适的索引?有多个索引供查询选择时,选择哪一个?分布式索引selectsum(c1)fromtablegroupbyc1;OLAP功能升级工作机工作机工作机工作机协调机工作机工作机工作机工作机协调机工作机工作机工作机工作机shufflemergeHash(c1)=0Hash(c1)=3Hash(c1)=2Hash(c1)=1议程整体架构回顾0.5架构升级0.5开发测试经验不后续规划OB整体代码行数:50Wsourcecode+20Wtestcode本次改造量:10W+sourcecodeBug数量:1000+开发过程2013.4~2013.12预热期:分布式索引、新存储引擎、OLAP、元数据分布式化等主要功能开发2013.12~2014.4月底突破期:遗留功能开发、联调、压测等工程量质量保证开发&单测&联调&quicktestRD压力测试系统提测(buildrpm包)QA压力测试基本功能回归(接口、功能、容灾)正确性压力测试BenchmarkOB版本发布业务模型压力测试OB灰度上线敏捷开发所有测试用例都是文本化的,要求每个RD和QA都会写测试用例测试框架自动化,要求每个RD都会使用测试框架结果驱动而丌是角色驱动:部分测试用例由RD开发或者联合开发#部署一个OceanBase集群deployob1=OBI(cluster=1211);deployob1.reboot;sleep10;#连接到其中一台MergeServer(ms0)deployob1.connectconn1ms0adminadmintest;connectionconn1;createtablet1(pkintprimarykey,c1varchar);insertintot1values(2,'2_abc'),(3,'3_abc'),(4,'4_abc'),(5,'5_abc');updatet1setc1='5_UPDATE'wherepk=5;deletefromt1wherepk=2;#读取表格内容select*fromt1;议程整体架构回顾0.5架构调整0.5开发测试经验不后续规划数据校验:在各个环节校验crcchecksumOB0.5crcchecksum线下发现5+严重bug版本质量:代码bug的第一owner是RD,而丌是QA敏捷开发:开发、测试并行,通过外围业务做线上验证兼容性:系统设计之初想好以后如何做无缝升级权衡业务需求和基础架构:抽象业务需求,遵守SQL标准和主流厂商惯用法,避免根据业务定制开发经验总结后续规划多UpdateServer跨机房架构更多SQL功能持续丌断的性能优化……谢谢!开源网址(GPLv2)

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功