《阿里巴巴Cobar架构设计与实践》由会员分享,可在线阅读,更多相关《阿里巴巴Cobar架构设计与实践(163页珍藏版)》请在金锄头文库上搜索。
1、阿里巴巴分布式数据库 原理、实现和应用2012.11集团共享技术平台分布式数据库邱硕2012华东架构师大会分布式数据库中间件App App App AppCobarOracle MySQL MySQL MySQLErosaOracleErosaMySQLErosaMySQLErosaMySQLEromangaOtterOracle MySQL MySQLOtterErosaOracleErosaMySQLErosaMySQLEromanga 性能 容量 高可用 数据消费时效性 跨机房数据同步ASCDW.分布式数据库中间件App App App AppCobarOracle MySQL MySQ
2、L MySQLErosaOracleErosaMySQLErosaMySQLErosaMySQLEromangaOracle MySQL MySQLOtter 性能 容量 高可用 数据消费时效性 跨机房数据同步ErosaOracleErosaMySQLErosaMySQLEromangaOtterASCDW.分布式数据库中间件App App App AppCobarOracle MySQL MySQL MySQL Oracle MySQL MySQLOtterErosaOracleErosaMySQLErosaMySQLEromanga 性能 容量 高可用 数据消费时效性 跨机房数据同步Ero
3、saOracleErosaMySQLErosaMySQLErosaMySQLEromangaOtterASCDW.分布式数据库中间件App App App AppCobarOracle MySQL MySQL MySQLErosaOracleErosaMySQLErosaMySQLErosaMySQLEromangaOracle MySQL MySQLErosaOracleErosaMySQLErosaMySQLEromanga 性能 容量 高可用 数据消费时效性 跨机房数据同步OtterASCDW. Otter分布式数据库中间件App App App AppCobarOracle MySQL
4、 MySQL MySQLErosaOracleErosaMySQLErosaMySQLErosaMySQLEromangaOracle MySQL MySQLOtter 性能 容量 高可用 数据消费时效性 跨机房数据同步ErosaOracleErosaMySQLErosaMySQLEromangaOtterASCDW.大纲n 中间件引入n Cobar策略n 系统实现n 实施应用Cobar之前 Oracle单点数据库 性能问题 中文站 offer总数 : 2008年 1亿 - 2011年 3亿 高峰时: load 30、 cpu使用率 90% 数据库连接过多 可用性问题 Standby切换故障
5、成本和伸缩性问题 依赖高成本的硬件设备OracleMySQL MySQL MySQLMySQL MySQL MySQLMySQL MySQL MySQL单点: MySQL集群替换 OracleMySQL MySQL MySQL Oracle单点数据库 性能问题 中文站 offer总数 : 08年 1亿 - 今天 3亿 高峰时: load 30、 cpu使用率 90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备Cobar引入 水平拆分ID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQLID MEMBE
6、_ID INFO4 test1234 5 test1234 ID MEMBE_ID INFO3 abcd 9 abcd 20 abcd MySQLMySQLCobarApp Oracle单点数据库 性能问题 中文站 offer总数 : 08年 1亿 - 今天 3亿 高峰时: load 30、 cpu使用率 90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备App ID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQLID MEMBE_ID INFO4 test1234 5 test1234 ID ME
7、MBE_ID INFO3 abcd 9 abcd 20 abcd MySQLMySQLAppAppAppAppAppAppAppCobar引入 连接复用App ID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQLID MEMBE_ID INFO4 test1234 5 test1234 ID MEMBE_ID INFO3 abcd 9 abcd 20 abcd MySQLMySQLCobarProxyAppAppAppAppAppAppApp Oracle单点数据库 性能问题 中文站 offer总数 : 08年 1亿 - 今天 3亿 高峰时: l
8、oad 30、 cpu使用率 90% 数据库连接过多 可用性问题 Standby切换故障 成本和伸缩性问题 依赖高成本的硬件设备Cobar引入ID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQLCobarAppXCobar引入 failoverID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQL Master1CobarAppID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQL Master2XMySQLReplicationCobar引入 failo
9、verID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 CobarAppID MEMBE_ID INFO1 pavarotti17 11 pavarotti17 MySQLReplicationMySQL Master1MySQL Master2大纲n 中间件引入n Cobar策略n 系统实现n 实施应用OracleMySQL MySQL MySQLMySQL MySQL MySQLMySQL MySQL MySQLMySQL MySQL MySQL拆分数据表水平拆分ID MEMBE_ID INFO1 pavarotti17 3 abcd 4 test1
10、234 5 test1234 9 abcd 11 pavarotti17 20 abcd 水平拆分ID MEMBE_ID INFO1 pavarotti17 3 abcd 4 test1234 5 test1234 9 abcd 11 pavarotti17 20 abcd 拆分字段水平拆分ID MEMBE_ID INFO1 pavarotti17 3 abcd 4 test1234 5 test1234 9 abcd 11 pavarotti17 20 abcd ID MEMBE_ID INFO1 pavarotti17 4 test1234 5 test1234 11 pavarotti1
11、7 ID MEMBE_ID INFO3 abcd 9 abcd 20 abcd f(pavarotti17)=库 1f(test1234)=库 1f(test1234)=库 1f(pavarotti17)=库 1f(abcd)=库 2f(abcd)=库 2f(abcd)=库 2库 1库 2拆分字段水平拆分ID MEMBE_ID INFO1 pavarotti17 3 abcd 4 test1234 5 test1234 9 abcd 11 pavarotti17 20 abcd ID MEMBE_ID INFO1 pavarotti17 4 test1234 5 test1234 11 pav
12、arotti17 ID MEMBE_ID INFO3 abcd 9 abcd 20 abcd f(abcd)=库 2库 1库 2拆分字段f(pavarotti17)=库1f(test1234)=库 1f(test1234)=库 1f(pavarotti17)=库 1f(abcd)=库 2f(abcd)=库 2路由算法路由算法pavarotti17f(pavarotti17)=库1路由算法pavarotti17部分截取hash( ) = 3170972965401路由算法hash(pavarott) = 3170972965401 % 1024 = 5370 1023路由算法hash(pavar
13、ott) = 3170972965401 % 1024 = 5370 255 256 511 512 767 768 1023256256256256分库 1 分库 2 分库 3 分库 4路由算法hash(pavarott) = 3170972965401 % 1024 = 5370 255 256 511 512 767 768 1023256256256256分库 1 分库 2 分库 3 分库 4路由算法 扩容hash(pavarott) = 3170972965401 % 1024 = 5370 127 128 255 256 383 384 511 512 639 640 767 76
14、8 895 896 1023128 128 128 128 128 128 128 128分库 1 分库 2 分库 3 分库 4路由算法 扩容hash(pavarott) = 3170972965401 % 1024 = 5370 127 128 255 256 383 384 511 512 639 640 767 768 895 896 1023128 128 128 128 128 128 128 128分库 1 分库 2 分库 3 分库 4 分库 5 分库 6 分库 7 分库 8原分库 1 分库 2 分库 3 分库 4原 原 原路由算法 非均匀分布hash(pavarott) = 3170972965401 % 1024 = 5370 511 512