数据库读写分离

原文:http://wenku.baidu.com/view/30eacbb9172ded630b1cb685.html?re=view


大致分客户端业务层做读写分离,与中间件做读写分离。

客户端做读写分离缺点是对业务代码侵入大,优点是能够根据更细粒度选择哪些方法需要从读库或主库取。

中间件做读写分离,优点自然是对业务侵入较小,但有个问题是万一主库与从库间同步存在延迟,一个事务先写然后再查(查询可能被路由到读库),这时就会发生问题。

目前像360的Atlas(不支持分布式分表),阿里b2b的Cobar( 不支持读写分离),及淘宝的Tddl(比较复杂),mysql proxy(不提供强制主库读,对实时性要求较高的查询比较适合)。


目前还没有比较成熟的数据库中间件读写分离,各个开源读写分离中间件都有各自缺点。

客户端做读写分离,可以选择Spring的动态数据源配置,基本原理就是在业务DAO加标注@Datasource,然后AOP会根据标注值选择相应的数据源。

需要注意的是,service层一个事务有两个操作,一个是读某个表数据,然后对其作处理。如果该业务要求数据实时性高,这时要指明该业务操作读操作DAO要从主库读取。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值