1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 轻量级读写分离客户端 MyRWSplit 0.2 版发布 下载

Discussion in '软件资讯' started by 漂亮的石头, 2017-05-01.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    487,979
    Likes Received:
    47
    轻量级读写分离客户端 MyRWSplit 0.2 版发布了。本次更新:

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

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

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

    [​IMG]

    只要把这些数据抛给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。

    产品简介


    设置数据源格式

    <property name="url"
    value="jdbc:mysql://{1.1.1.1:3306,2.2.2.2:3306,3.3.3.3:3306}/ambari?zeroDateTimeBehavior=convertToNull" />

    第1个IP:port为master,剩下的是slave

    代码片段

    1)事务片段

    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<Role>() {
    @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);
    }
    }

    2)非事务片段

    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);

    }
    }
    轻量级读写分离客户端 MyRWSplit 0.2 版发布下载地址
     
Loading...