天天看点

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

好多年没写关于此框架的新功能的介绍了,这些年一直在默默地更新,从nuget上的记录就可以看出来:

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

这几天在看java的一些东西,除了觉的java和.net的相似度实在太高之外,就是java太原始,急需被拯救。

之后又回到.net的思维来,想着怎么在框架里实现读写分离控制请求切换。

之前几个月一直都有在思考,想及对框架现有的代码改动可能较大,所以迟迟没怎么下手。

最近终于在厕所蹲下的一瞬间,灵光一闪,感觉思绪来了,然后一鼓作气,就把它给作了。

a:mssql的复制订阅;

b:mysql的master-slave配置ini。

c:oracle自身组件或第三方软件。

具体怎么实现,请以读写分离为关键字自行google。

a:通过代码控制链接的切换(常用)。

b:通过中间第三方插件实现(需要放弃治疗:数据一致性)。

c:通过数据库驱动实现(没怎么见着)。

由于主从数据库的同步时间差,必然产生数据一致性这个问题,所以通常还是会回到业务代码上控制。

在底层:dbcommand的三个方法中:

分配读:executescalar和executereader

分配写:executenonquery

a:事务时:全分配到主数据库

b:非事务时:同一个链接,只要产生写主数据库,后续读仍挂在主数据库(初步解决数据一致性问题)。

示例场景如:用户写完博客后(写),跳转到查看文章页面(读)。

很明显,如果主从库还没来得及同步,你要提示用户:缓存正在同步,请等待n秒后刷新看看?

a:这场景,不是同一个链接,却是同一个人。

b:需要把同一个人产生写主数据库操作后,必须在n秒内的操作都仍挂在主数据库。

a:sessionid。

b:cookie

c:线程id

至此,读写分离的相关功能就算完成了。

下面演示读写分写在asp.net aries 框架上的使用示例:

1:从svn下载asp.net aries 开源框架的源码。

2:确保packages下的cyq.data 版本为v5.6以上,如果版本不够新,上nuget搜cyqdata更新。

3:在数据库中建立好主从库订阅复制功能(mssql),演示就在同一台电脑了,copy的为从(读)数据库。

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

4:web.config中添加一条数据库链接

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

ps说明:

如果主数据库name是xxxx,那么从库的配置为:xxxx_slave1、xxxx_slave2、xxxx_slave3.....xxxx_slaven

搞定收功,使用就是这么简单,只要配数据库链接,就一切就ok了。

1:chorme浏览器,登陆后编辑用户信息(此时操作的主数据库):

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

2:保存后跳转到列表页面:此时还是操作的主数据库:

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

3:在firefox浏览器里立即刷新查看:读的是从数据库,此时主从还没同步好,所以还是旧数据。

CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结
CYQ.Data V5 数据库读写分离功能介绍前言数据库读写分离的三步曲代码解决主(写)从(读)请求分配与数据一致性CYQ.Data读写分离的使用演示界面运行后截图隐藏技能:总结

通过配置xxxx_bak,当主数据库挂了时,会自动切换到备份数据库。

于是架构就变成1主+1备+n从的方式。

用了此框架,你会发现1行业务代码都无需要改,只需config文件配上n个从数据的链接,数据库读写分离这种传说中的东西,马上就属于你了。

不要问我这几年为啥这么低调没怎么推广此框架,只是看淡了,不争,最好用的框架只属于少数的有缘人。

补充一条好消息:框架从v5.5.6.1版本开始,mssql数据库可以免费使用,不再需要授权。

对于免费开放mssql使用的消息,喜欢就赞一个!

本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/p/5617121.html