《阿里巴巴分布式数据原理和应用》由会员分享,可在线阅读,更多相关《阿里巴巴分布式数据原理和应用(150页珍藏版)》请在金锄头文库上搜索。
1、阿里巴巴分布式数据库,原理、实现和应用,2012.7,集团共享技术平台 分布式数据库 邱硕,分布式数据库中间件,App,App,App,App,Cobar,Oracle,MySQL,MySQL,MySQL,Erosa Oracle,Erosa MySQL,Erosa MySQL,Erosa MySQL,Eromanga,Otter,Oracle,MySQL,MySQL,Otter,Erosa Oracle,Erosa MySQL,Erosa MySQL,Eromanga,性能 容量 高可用 数据消费时效性 跨机房数据同步,ASC,DW,.,分布式数据库中间件,App,App,App,App,C
2、obar,Oracle,MySQL,MySQL,MySQL,Erosa Oracle,Erosa MySQL,Erosa MySQL,Erosa MySQL,Eromanga,Oracle,MySQL,MySQL,Otter,性能 容量 高可用 数据消费时效性 跨机房数据同步,Erosa Oracle,Erosa MySQL,Erosa MySQL,Eromanga,Otter,ASC,DW,.,分布式数据库中间件,App,App,App,App,Cobar,Oracle,MySQL,MySQL,MySQL,Oracle,MySQL,MySQL,Otter,Erosa Oracle,Erosa
3、 MySQL,Erosa MySQL,Eromanga,性能 容量 高可用 数据消费时效性 跨机房数据同步,Erosa Oracle,Erosa MySQL,Erosa MySQL,Erosa MySQL,Eromanga,Otter,ASC,DW,.,分布式数据库中间件,App,App,App,App,Cobar,Oracle,MySQL,MySQL,MySQL,Erosa Oracle,Erosa MySQL,Erosa MySQL,Erosa MySQL,Eromanga,Oracle,MySQL,MySQL,Erosa Oracle,Erosa MySQL,Erosa MySQL,Er
4、omanga,性能 容量 高可用 数据消费时效性 跨机房数据同步,Otter,ASC,DW,.,Otter,分布式数据库中间件,App,App,App,App,Cobar,Oracle,MySQL,MySQL,MySQL,Erosa Oracle,Erosa MySQL,Erosa MySQL,Erosa MySQL,Eromanga,Oracle,MySQL,MySQL,Otter,性能 容量 高可用 数据消费时效性 跨机房数据同步,Erosa Oracle,Erosa MySQL,Erosa MySQL,Eromanga,Otter,ASC,DW,.,大纲,中间件引入Cobar策略系统实现
5、实施应用,Cobar之前,Oracle单点数据库 性能问题 中文站offer总数:2008年1亿 - 2011年3亿 高峰时:load 30、cpu使用率90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备,Oracle,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,单点:MySQL集群替换Oracle,MySQL,MySQL,MySQL,Oracle单点数据库 性能问题 中文站offer总数:08年1亿 - 今天3亿 高峰时:load 30、cpu使用率90% 数据库连接过多 可用性问
6、题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备,Cobar引入 水平拆分,MySQL,MySQL,MySQL,Cobar,App,Oracle单点数据库 性能问题 中文站offer总数:08年1亿 - 今天3亿 高峰时:load 30、cpu使用率90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备,App,MySQL,MySQL,MySQL,App,App,App,App,App,App,App,Cobar引入 连接复用,App,MySQL,MySQL,MySQL,Cobar Proxy,App,App,App,App,App
7、,App,App,Oracle单点数据库 性能问题 中文站offer总数:08年1亿 - 今天3亿 高峰时:load 30、cpu使用率90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备,Cobar引入,MySQL,Cobar,App,X,Cobar引入 failover,MySQL Master1,Cobar,App,MySQL Master2,X,MySQL Replication,Cobar引入 failover,Cobar,App,MySQL Replication,MySQL Master1,MySQL Master2,大纲,中间件引入
8、Cobar策略系统实现实施应用,Oracle,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,MySQL,拆分数据表,水平拆分,水平拆分,拆分字段,水平拆分,f(pavarotti17)=库1,f(test1234)=库1,f(test1234)=库1,f(pavarotti17)=库1,f(abcd)=库2,f(abcd)=库2,f(abcd)=库2,库1,库2,拆分字段,水平拆分,f(abcd)=库2,库1,库2,拆分字段,f(pavarotti17)=库1,f(test1234)=库1,f(test123
9、4)=库1,f(pavarotti17)=库1,f(abcd)=库2,f(abcd)=库2,路由算法,路由算法,pavarotti17,f(pavarotti17)=库1,路由算法,pavarotti17,部分截取,hash( ) = 3170972965401,路由算法,hash(pavarott) = 3170972965401 % 1024 = 537,0 1023,路由算法,hash(pavarott) = 3170972965401 % 1024 = 537,0 255,256 511,512 767,768 1023,256,256,256,256,分库1,分库2,分库3,分库4,
10、路由算法,hash(pavarott) = 3170972965401 % 1024 = 537,0 255,256 511,512 767,768 1023,256,256,256,256,分库1,分库2,分库3,分库4,路由算法扩容,hash(pavarott) = 3170972965401 % 1024 = 537,0 127 128 255,256 383 384 511,512 639 640 767,768 895 896 1023,128,128,128,128,128,128,128,128,分库1,分库2,分库3,分库4,路由算法扩容,hash(pavarott) = 31
11、70972965401 % 1024 = 537,0 127 128 255,256 383 384 511,512 639 640 767,768 895 896 1023,128,128,128,128,128,128,128,128,分库1,分库2,分库3,分库4,分库5,分库6,分库7,分库8,原,分库1,分库2,分库3,分库4,原,原,原,路由算法非均匀分布,hash(pavarott) = 3170972965401 % 1024 = 537,0 511,512 767,768 895 896 1023,512,256,128,128,分库1,分库2,分库3,分库4,拆分表的数据访
12、问SQL转发,Cobar,App,select * from tb1 where member_id=test1234,拆分表的数据访问SQL转发,Cobar,App,select * from tb1 where member_id=test1234,Cobar,App,SELECT * FROM tb1 WHERE member_id IN (test1234,pavarotti17,abcd),拆分表的数据访问SQL转发,Cobar,App,select * from tb1 where member_id in (test1234,pavarotti17),select * from
13、tb1 where member_id in (abcd),拆分表的数据访问SQL转发,Result Merger,前台 通信,ResultSet:row1 row2,ResultSet:row3 row4 row5,ResultSet:row3 row1 row4 row5 row2,拆分表的数据访问结果返回,多维水平拆分,visit表,SELECT * FROM visit WHERE user=A,多维水平拆分,visit表,SELECT * FROM visit WHERE product = Coca-Cola,分库1,分库2,分库3,分库4,分库5,分库6,分库7,分库8,分库9,分库10,分库11,分库12,分库13,分库14,分库15,分库16,product值 Hash取模,user值 Hash取模,0,1,2,3,0,1,2,3,visit表,一张表的多个字段同时作为拆分字段,Hash(“A”)%4 =,分库1,分库2,分库3,分库4,分库5,分库6,分库7,分库8,分库9,分库10,分库11,分库12,分库13,分库14,分库15,分库16,product值 Hash取模,user值 Hash取模,0,1,2,3,0,