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使用的消息,喜欢就赞一个!


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

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
5月前
|
JavaScript 前端开发 Java
LayUI之CRUD(增删改查功能实现)项目案例
LayUI之CRUD(增删改查功能实现)项目案例
47 0
|
30天前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
57 0
|
30天前
|
SQL 存储 安全
【软件设计师备考 专题 】数据库管理系统的功能和特征
【软件设计师备考 专题 】数据库管理系统的功能和特征
73 0
|
1月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
1月前
|
SQL 编解码 数据库
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
14 1
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
|
1月前
|
Java 关系型数据库 MySQL
Java调用shell脚本实现数据库备份功能
本篇文章主要介绍怎样使用Java程序,执行服务器上的数据库备份Shell脚本进行MySQL数据库的备份功能。
|
1月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
36 1
|
3月前
|
存储 SQL NoSQL
云数据库提供了哪些优势和功能?
云数据库提供了哪些优势和功能?
54 0
|
3月前
|
存储 Linux 数据库
基于Linux系统聊天室增加数据库sqlite功能实现(08)
基于Linux系统聊天室增加数据库sqlite功能实现(08)
37 0
|
3月前
|
存储 缓存 数据库
Shiro【核心功能、核心组件、项目搭建 、配置文件认证、数据库认证 】(一)-全面详解(学习总结---从入门到深化)
Shiro【核心功能、核心组件、项目搭建 、配置文件认证、数据库认证 】(一)-全面详解(学习总结---从入门到深化)
41 1

热门文章

最新文章