koala
特点:多数据源动态切换,数据源分组和负载均衡(轮询)
项目源码以及demo:https://github.com/zeq9069/koala
请大家关注一下哦!!哈哈!
最近,在开发项目的时候后,要用到多个数据源的动态切换,于是就开发了koala
这个小小得框架,koala支持多数据源的切换,数据源的分组和负载均衡(轮询)!
只需要将jar引入到你自己的项目中之后,然后进行简单配置就可以使用了!!使用起来
非常方便,该项目提供了三个核心的注解@ChangeTo,@DataSourceDistribute,
@DataSourceGroup.
我们在下面详细的讲解一下怎么使用。
1. @ChangeTo
该注解是用在你的service层的实现类的方法上的,意思就是改变数据源为指定的数据源,
例如:@ChangeTo(value="slave"),将数据源切换到数据源slave。如果不设置value的话,
意思就是使用默认的数据源。
2.@DataSourceDistribute
该注解使用在service层的实现类的类上,我叫它"数据源派遣",哈哈!什么意思呢?
就是将指定的数据源分配到对应的方法上。
例如:
@DataSourceDistribute(value={
@DataSourceEntity(dataSource="slave",methodPattern="get*|delete*") })
这个注解有点长,我们来分析一下。
首先,@DataSourceDistribute这个注解是主体,它有一个数组形式的参数value,
这个数组里放的是好多个子注解@DataSourceEntity,每一个子注解中都有两个参数
dataSource和methodPattern,dataSource对应数据源,methodPattern对应一些方法名
的正则表达式。
这样你就明白了吧?这个例子的意思就是将数据源slave分配到跟以get或者delete开头
的方法上!!!当然你可以设置多个@DataSourceEntity,这里只设置了一个!!这样就不用
再每一个方法上手动设置数据源了,省了不少事!!
3.@DataSourceGroup
这个注解也是用在service层的实现类上,它更上一个注解不同,上一个注解只能将一个
dataSource对应到多个方法上,而@DataSourceGroup的目的就是一个或多个方法对应到
一个dataSource组,也就是多个dataSource!!!这一个数据源组中的数据源是轮询执行的,
这样就起到了负载均衡的效果!!
例如:
@DataSourceGroup(groups={
@Group(groupName="master-group",methodPattern="get*|delete*")
})
呵呵!!是不是跟上一个注解很类似啊!!
我们详细解释一下,首先@DataSourceGroup有个数组形式的参数groups,里卖弄存放的是一
些子注解@Group,@Group中又有两个参数groupName和methodPattern,分别对应数据源组
名和方法名的正则表达式。(怎么配置数据源和数据源组名呢??详细请看项目的使用文档
https://github.com/zeq9069/koala)
上面的例子意思就是将以get或delete开头的方法对应到数据源组master-group上,这样当
方法执行时,就可以去轮询master-group组中的数据源了,而且数据源被访问到机会是均等的。
这样既起到了负载均衡的效果又简化了配置。
4.优先级
当三个注解同时使用时,@ChangeTo > @DataSourceDistribute > @DataSourceGroup
以上的核心内容就完了!
去看看项目源码吧,有详细的配置和注意事项说明。
有什么不懂得发邮件到 kyrincloud@qq.com