随着越来越多的项目采用mysql,不可避免的遇到分库分表和读写分离的需求,现在对自己在项目中采用过的方案做一个总结和梳理:
一、分库
DAO层:通过在DAO层实现代码时候,通过硬编码的方式加入分库分表的逻辑,该层实现一般由项目组自行根据需求实现。
ORM 框架层。该方案的实现是通过实现一个ORM框架,该框架自带分库分表功能,如:guzz;另外一种方式是基于开源成熟的ORM框架(比如MyBaits、Hibernate)进行扩展分库分表特性,主要的开源产品有:cobar-client、hibernate shard、ibatis-sharding。
JDBC API层。该方案通过封装JDBC API,实现分库分表逻辑,这个方法比较直接,而且有比较强的可控制性,主要开源方案: sharding-jdbc、
数据访问代理层。该方案通过位于客户端和服务端中间的代理服务器实现分库分表逻辑,主要产品有mysql proxy、Cobar等。
二、读写分离
根据jdbc标准,在jdbc中做读写分离逻辑封装
详细使用见:/chenjy16/xudanrw