Java 分库分表——Mango 初体验
Java 分库分表——Mango 初体验
众所周知,随着系统的使用,数据库数据量不断上升,当单表数据量达到1000W以后,很多数据库操作都会比较吃力,这个时候数据库层面的分库、分表就显得迫在眉睫了。接下来,介绍一种 ORM 框架 Mango。
一、Mango 简介
首先,我们来看看 mango 官网关于 mango 的简介:
mango的中文名是“芒果”,它是一个极速分布式ORM框架。目前已有十多个大型线上项目在使用mango,在某一支付系统中,更是利用mango,承载了每秒12万的支付下单请求。
下面是mango的一些特性:
-
超高性能,响应速度接近直接使用JDBC
-
采用接口与注解的形式定义DAO,完美结合db与cache操作
-
支持动态sql,可以构造任意复杂的sql语句
-
支持多数据源,分表,分库,事务
-
提供拦截器功能,利用拦截器可为mango框架扩展各种自定义插件
-
独创“函数式调用”功能,能将任意复杂的对象,映射到数据库的表中
-
高效详细的实时统计系统,方便开发者随时了解自己的系统
-
独立jar包,不依赖其它jar包
-
提供便捷的spring插件,与spring无缝集成
乐视集团的订单系统便是Mango搭建,具体参见:乐视秒杀架构解读:从零开始搭建百万每秒订单系统
二、SpringBoot 集成 Mango
SpringBoot 近年大热的微服务架构的重要一员,相信各位看官早已经使用过,如果你还没有入门或者刚刚入门,建议可以看看翟永超大大的SpringBoot系列教程,相信你回受益良多。
2.1 获取 Mango
由于mango不依赖其它jar包,所以可以直接 下载mango-1.6.0.jar ,并将它放在工程的classpath下。
当然mango也已经上传到 maven中心库 中,如果您的工程在使用maven,那么只需要在pom.xml文件中添加下面的依赖就能使用mango的功能。
<dependency>
<groupId>org.jfaster</groupId>
<artifactId>mango</artifactId>
<version>1.6.0</version>
</dependency>
需要注意的是,只使用mango是无法连接数据库成功的,对于连接不同的数据库,您还需要添加相应的JDBC驱动,以连接MySQL数据库为例,您还需要用到 mysql-connector-java 。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
2.2 配置 xml
这里直接放上我的 xml 文件,相信各位看管都看得懂是怎么配置的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 配置简单数据源工厂 -->
<bean id="dataSourceFactory" class="org.jfaster.mango.datasource.SimpleDataSourceFactory">
<property name="name" value="dsf0" />
<property name="dataSource">
<bean class="org.jfaster.mango.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property