美文网首页
对多数据源、读写分离的一些思考

对多数据源、读写分离的一些思考

作者: 溪水散人 | 来源:发表于2020-10-01 21:29 被阅读0次

    对多数据源、读写分离的一些思考:

    1、对于单体应用来说,整个应用连接的都是同一个数据库,所以数据源的配置也是只有一个。

    2、当系统的业务量上来以后,可能就要考虑读写分离。当然,读写分离的前提是配置了主从同步。

    3、一般来说,增、删、改的业务都是在主库中进行,查的操作在从库中进行。

    4、读写分离的实现方式:

        1、注入多个数据源后,在数据库的业务操作自己去选择对应的数据源,重复性工作比较多,不够灵活。
    
        2、利用AOP方式来实现,通过注册一个切面,切面去拦截这些对数据库操作的方法。
    
          如果是增删改的操作返回主库数据源;如果是查询类的操作返回从库数据源。
    

    1.AOP的实现方式是通过动态代理的方式来实现,分为JDK动态代理和CGLib动态代理。

    简单的来说这两种代理:JDK动态代理是会给被代理类生生成一个代理类,CGLib动态代理是会给被代理类生成一个代理子类。

    在程序运行过程中,使用的是代理类对象。

    所以,AOP方式会产生很多代理对象,这确实是很耗费资源;但相较于带来的便利:如对代码无入侵,重复性工作少,这些资源消耗暂时是可以忽略的。

    2.如果通过AOP的方式来进行事务管理,定义事务切面,配置相应的事务管理器,事务管理器管理着对应的数据源,

    这确实势必造成了每个DB操作都成了显式的事务DB操作,是很消耗程序性能的,这点不可否认。

    所以,更好一点的做法是:对于事务管理这一块,可以不采用AOP的方式,而是采用模板事务的方式。

    总结下来就是:数据源的选择和切换,使用AOP的方式;事务管理:采用模板事务的方式。

    相关文章

      网友评论

          本文标题:对多数据源、读写分离的一些思考

          本文链接:https://www.haomeiwen.com/subject/cbdvuktx.html