转: http://zhengdl126.javaeye.com/blog/419850
数据库水平切分的实现原理解析---分库,分表,主从,集群,负
载均衡器
关键字: 水平切分,分库,分表,主从,集群
第 1 章 引言
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶
颈问题。对于一个大型的互联网应用,每天几十亿的 PV 无疑对数据库造成了相
当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来
提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分
数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。
通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;
通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读
写分离策略更是最大限度了提高了应用中读取(Read)数据的速度和并发量。
目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,
Taobao,Alibaba,Tencent,它们大都实现了自己的分布式数据访问层(DDAL)。
以实现方式和实现的层次来划分,大概分为两个层次(Java 应用为例):JDBC
层的封装,ORM 框架层的实现。就 JDBC 层的直接封装而言,现在国内发展较好
的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,
现在仍然处于测试阶段(beta 版),其运行效率和生产时效性有待考究。就
ORM 框架层的实现而言,比如 Taobao 的基于 ibatis 和 Spring 的的分布式数据
访问层,已有多年的应用,运行效率和生产实效性得到了开发人员和用户的肯
定。本文就是以 ORM 框架层为基础而实现的分布式数据访问层。本课题的难点
在于分库后,路由规则的制定和选择以及后期的扩展性,比如:如何做到用最
少的数据迁移量,达到扩充数据库容量(增加机器节点)的目的。核心问题将
围绕数据库分库分表的路由规则和负载均衡策略展开。
第 2 章 基本原理和概念
2.1 基本原理:
人类认知问题的过程总是这样的:what(什么)-?why(为什么)-?how(怎么
做),接下来,本文将就这三个问题展开讨论和研究:
2.1.1 什么是数据切分
评论0