迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:RWS开源软件地址:https://gitee.com/lkclkc88/RWS开源软件介绍:#RWSRWS是一个非常小的组件,实现数据库读写分离的功能。 背景 :大多数项目中,为了避免数据库单节点故障,都会采用主从的方式来构建数据库高可用,在主从结构当中,主要的操作都在主库上执行,而从节点仅仅只实现数据备份的功能,是非常浪费的,因此可用将部分的查询请求放在从节点执行,达到缓解主节点查询压力的作用。另外,如果在一个读写比比较低的系统中,数据库的读写锁争用,会降低数据库的查询性能。 功能:组件实现简单的读写分离功能,通过ReadWriteRule接口,来判断获取数据库连接时采用写库还是读库。同时通过LoadRule接口实现多个读库的负载。ReadWriteDataSource : 实现读写分离的主类。提供一下属性。gloabCanWrite: 是否全局可写,默认为true,代表数据源可用执行写操作。writer : 写数据源,执行写操作时,将从写数据源获取数据库连接.readers : 读数据源,执行读操作时,将会从readers中根据规则获取数据源,如果readers为空,讲从write获取连接.loadRule : 负载规则,用于决定多个读节点时,各个节点的负载情况。readWriteRules: 读写规则,通过读写规则,决定获取连接时获取写库还是读库。 灾备:组件只是一个简单的功能实现,不提供灾备功能。使用者需自己设计灾备方案,例如keepalived,Amoeba等。 主从延迟问题:组件只是一个简单的功能实现,不解决数据库主从配置的延迟问题,如果需要实现强一致兴趣,可以自己实现组件设置,也能通过手段设置,讲代码使用写库做数据查询。 开发组件的原因: 开源社区里,已经存在了不少中间件组件,然后在对事物的支持上无法完全支持。因此在我开发项目过程中,希望能够找到一个能够实现事物,并且支持读写分离的组件,因此写下了此段代码,既可以手动控制读写分离,也能规矩规则控制读写分离。 ![]() |
请发表评论