CYQ.Data V5 数据库读写分离功能介绍
前言
好多年没写关于此框架的新功能的介绍了,这些年一直在默默地更新,从Nuget上的记录就可以看出来:

这几天在看Java的一些东西,除了觉的Java和.NET的相似度实在太高之外,就是Java太原始,急需被拯救。
之后又回到.NET的思维来,想着怎么在框架里实现读写分离控制请求切换。
之前几个月一直都有在思考,想及对框架现有的代码改动可能较大,所以迟迟没怎么下手。
最近终于在厕所蹲下的一瞬间,灵光一闪,感觉思绪来了,然后一鼓作气,就把它给作了。
数据库读写分离的三步曲
1:实现主(读)从(写)同步的功能
A:MSSQL的复制订阅;
B:MySql的Master-Slave配置ini。
C:Oracle自身组件或第三方软件。
具体怎么实现,请以读写分离为关键字自行Google。
2:读写分离控制请求的3种方式
A:通过代码控制链接的切换(常用)。
B:通过中间第三方插件实现(需要放弃治疗:数据一致性)。
C:通过数据库驱动实现(没怎么见着)。
3:数据的一致性问题
由于主从数据库的同步时间差,必然产生数据一致性这个问题,所以通常还是会回到业务代码上控制。
代码解决主(写)从(读)请求分配与数据一致性
1:读写请求的分配原则
在底层:DbCommand的三个方法中:
分配读:ExecuteScalar和ExecuteReader
分配写:ExecuteNonQuery
2:读写请求的追加原则:
A:事务时:全分配到主数据库
B:非事务时:同一个链接,只要产生写主数据库,后续读仍挂在主数据库(初步解决数据一致性问题)。
3:处理数据一致性问题:
示例场景如:用户写完博客后(写),跳转到查看文章页面(读)。
很明显,如果主从库还没来得及同步,你要提示用户:缓存正在同步,请等待N秒后刷新看看?
A:这场景,不是同一个链接,却是同一个人。
B:需要把同一个人产生写主数据库操作后,必须在N秒内的操作都仍挂在主数据库。
所以,我用了三个方式来判断是否同一个人:
A:SessionID。
B:Cookie
C:线程ID
至此,读写分离的相关功能就算完成了。
CYQ.Data读写分离的使用演示
下面演示读写分写在ASP.NET Aries 框架上的使用示例:
1:从SVN下载ASP.NET Aries 开源框架的源码。
具体看:http://www.cnblogs.com/cyq1162/p/5487796.html
2:确保packages下的CYQ.Data 版本为V5.6以上,如果版本不够新,上Nuget搜cyqdata更新。
3:在数据库中建立好主从库订阅复制功能(MSSQL),演示就在同一台电脑了,Copy的为从(读)数据库。

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

PS说明:
如果主数据库name是XXXX,那么从库的配置为:XXXX_Slave1、XXXX_Slave2、XXXX_Slave3.....XXXX_SlaveN
搞定收功,使用就是这么简单,只要配数据库链接,就一切就OK了。
界面运行后截图
1:Chorme浏览器,登陆后编辑用户信息(此时操作的主数据库):

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

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

隐藏技能:

通过配置XXXX_Bak,当主数据库挂了时,会自动切换到备份数据库。
于是架构就变成1主+1备+N从的方式。
总结
用了此框架,你会发现1行业务代码都无需要改,只需config文件配上N个从数据的链接,数据库读写分离这种传说中的东西,马上就属于你了。
不要问我这几年为啥这么低调没怎么推广此框架,只是看淡了,不争,最好用的框架只属于少数的有缘人。
补充一条好消息:框架从V5.5.6.1版本开始,MSSQL数据库可以免费使用,不再需要授权。
对于免费开放MSSQL使用的消息,喜欢就赞一个!
CYQ.Data V5 数据库读写分离功能介绍的更多相关文章
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...
- CYQ.Data V5 分布式自动化缓存设计介绍
前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码 ...
- CYQ.Data V5 从入门到放弃ORM系列:框架的优势
前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...
- CYQ.Data V5 分布式缓存Redis应用开发及实现算法原理介绍
前言: 自从CYQ.Data框架出了数据库读写分离.分布式缓存MemCache.自动缓存等大功能之后,就进入了频繁的细节打磨优化阶段. 从以下的更新列表就可以看出来了,3个月更新了100条次功能: 3 ...
- CYQ.Data V5 MDataTable 专属篇介绍
前言 以前一两个月才出一篇,这三天有点变态地连续1天1篇(其实都是上周末两天写好的存货). 短期应该没有新的和此框架相关的文章要写了,这应该是最后一篇,大伙且看且珍惜. 前两篇讲数据库读写分离和分布式 ...
- CYQ.Data V5 分布式缓存MemCached应用开发介绍
前言 今天大伙还在热议关于.NET Core的东西,我只想说一句:在.NET 跨平台叫了这么多年间,其实人们期待的是一个知名的跨平台案例,而不是一堆能跨平台的消息. 好,回头说说框架: 在框架完成数据 ...
- 学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- 学会数据库读写分离、分表分库——用Mycat
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- (转)学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
原文:https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理 ...
随机推荐
- 怎么使用Delphi获取当前的时间,精确到毫秒
先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...
- 多个supplemental logging的说明与删除
有时候我们做ogg的时候,查看info trandata schema.table 无法查看到对应的supplement log信息, 但是我们查看table script的时候可以看到supplem ...
- WiX Toolset 教程索引页
注意:虽然WiX Toolset功能强大,但其学习曲线相对较高.请慎重选择: 若没有足够时间.没心思搞的请绕行至inno setup.installshield.nisi.setupfactory.. ...
- UWP学习记录3-设计和UI之样式
UWP学习记录3-设计和UI之样式 1.颜色 在系统的“设置”>“个性化”>“颜色”里,提供了主题色选择.选定主题色后,会根据颜色亮度的 HSB 值创建浅色和深色的主题色. 应用可使用阴影 ...
- Redis 数据库入门指南
Redis 是一个开源数据库,它使用内存数据结构存储,可作为数据库.缓存和消息代理使用.Redis 支持丰富的数据结构,有:字符串(Strings).哈希(Hashs).列表(Lists).集合(Se ...
- Go语言 获取get、post参数
在贴代码之前如果能先理解一下golang http.request的三个属性Form.PostForm.MultipartForm应该能较好的理解代码,下面摘录一下. 以上简要翻译一下: Form:存 ...
- 关于linux服务器上搭建ftp服务的流程
小龙最近折腾了一个阿里云的服务器,买完了就要开始做那么多那么多的功课,小龙对ssh也是一知半解的状态,做个小笔记,发布下整个ftp服务的搭建过程,大神勿喷:) 一.aliyun Linux(Redha ...
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
java日期格式大全 format SimpleDateFormat(转) SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH ...
- 迎战Meta 2,微软新专利有望解决Hololens视场角野窄问题
上周,微软HoloLens的竞争对手AR眼镜Meta 2正式发货,微软是该急了.我们知道Meta 2不仅在价格上比HoloLens便宜,而且在性能上也不弱,Meta2的可视角度达到90度,比HoloL ...
- 读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题
1.需求:有时候我们产品经理给我们的需求是会不断变化的,例如数量是1000现在变成500,我们不可以去改代码吧,这样很麻烦,所以就可以改配置文件properties(这个数据库链接一样),当然也有js ...