红联Linux门户
Linux帮助

轻量级读写分离客户端MyRWSplit 0.2版发布

发布时间:2017-05-01 12:05:51来源:红联作者:baihuo
轻量级读写分离客户端 MyRWSplit 0.2 版发布了。本次更新:

1)完善非事务型的构造方法

2)增加获取connection的耗时审计

3)增加sql执行耗时审计,方便定位系统瓶颈

只要把这些数据抛给MyEye的http://git.oschina.net/qiangzigege/MyEye的myeye_metrics_client(埋点jar包),就可以完成sql审计,myeye_metrics_client已经内置同一条sql模板自动merge功能。

PS:根据实际经验,myeye_metrics_client的API模型可以用于任何你想监控的点,比如我们之前曾经用于监控(url,rpc的方法,cache的命令,数据库的sql,消息队列的积压情况)等。

网址: http://git.oschina.net/qiangzigege/MyRWSplit

产品介绍

一个轻量级 读写分离 的技术组件,基于Mybatis-3.4.2 + 插件技术 + Druid-1.0.29 + mysql-connector-java-5.1.41。

产品简介

设置数据源格式[code] value="jdbc:mysql://{1.1.1.1:3306,2.2.2.2:3306,3.3.3.3:3306}/ambari?zeroDateTimeBehavior=convertToNull" />[/code]第1个IP:Port为master,剩下的是slave

代码片段

1)事务片段[code]package transaction;

import org.apache.ibatis.session.SqlSession;
import com.freedom.mysql.myrwsplit.bean.Role;
import com.freedom.mysql.myrwsplit.helper.LoggerHelper;
import com.freedom.mysql.myrwsplit.interfaces.RoleMapper;
import com.freedom.mysql.myrwsplit.runnable.MyRwSplitTransactionRunnable;

public class MyRwSplitWithTransactionAdvanced {
private static LoggerHelper LOGGER = LoggerHelper.getLogger(MyRwSplitWithTransactionAdvanced.class);

public static void main(String[] args) {
// 初始化时,请设定你需要的参数,比如:Executor类型,是否自动提交,事务级别
Role result = new MyRwSplitTransactionRunnable() {
@Override
public Role execute(SqlSession sqlSession) {
// 从这里,开始写任何你需要的的业务代码,
// 处于一个事务里,事务相关的东西,业务不需要关心,框架已经做好了
RoleMapper userMapper = sqlSession.getMapper(RoleMapper.class);// 获得mapper
// delete
Role role = new Role();
role.setId(13);
userMapper.deleteRole(role);
// insert
role.setId(13);
role.setTitle("xxx");
role.setAuthor("yyy");
userMapper.insertRole(role);
// select
role = userMapper.getRole0(11);
return role;
}
}.run();
//
LOGGER.debug("" + result);
}
}[/code]2)非事务片段[code]package notransaction;

import com.freedom.mysql.myrwsplit.bean.Role;
import com.freedom.mysql.myrwsplit.helper.LoggerHelper;
import com.freedom.mysql.myrwsplit.helper.MapperUtils;
import com.freedom.mysql.myrwsplit.interfaces.RoleMapper;

public class MyRwSplitWithNoTransactionAdvanced {
@SuppressWarnings("unused")
private static LoggerHelper LOGGER = LoggerHelper.getLogger(MyRwSplitWithNoTransactionAdvanced.class);

// 在读写分离的情况下,必须重新获取mapper,才可以支持每次操作都重新判断来决定从master/slave来获取新的连接
// 如果连续运行就会报错
public static void main(String[] args) {
//
RoleMapper mapper = MapperUtils.getMapper(RoleMapper.class);
Role role = mapper.getRole0(13);

//
mapper = MapperUtils.getMapper(RoleMapper.class);
role = new Role();
role.setAuthor("xxx");
role.setTitle("yyy");
mapper.insertRole(role);

}
}[/code]软件详情:http://git.oschina.net/qiangzigege/MyRWSplit/commit/ea492bd8918d0f8e1122b145fbb3863d25f6672f

下载地址:http://git.oschina.net/qiangzigege/MyRWSplit

来自:开源中国社区
文章评论

共有 0 条评论