前言:本系列文章适合有初/中级.NET知识的同学阅读。
(1)本系列文章,旨在讲述研发一个中大型项目所需要了解的一系列“基本构件”,并提供这些“基本构件”的【最简单】、【最快速】使用方法!!(并不深究技术原理)
(2)通过阅读本系列文章,能让你在正规“项目研发”方面快速入门+进阶,并能达成“小团队构建大网站”的目的。
(3)本系列文章采用的技术,已成功应用到人工智能、产业互联网、社区电商、游戏、金融风控、智慧医疗、等项目上。
本文讲述的数据库读写分离的实现方式,是基于前述“数据库的负载均衡”这篇文章的内容发展而来,请先对其阅读参考。
在某些大型应用系统中,往往需要把数据库的“读操作”与“写操作”分为两个数据库(甚至两组数据库)分开操作,以达到读写分离的目的。
要实现数据库的读写分离,只需在前述“数据库的负载均衡“这篇文章的内容上做两点修改即可实现:
一是在DeveloperSharp.json/xml配置文件中设置两个DatabaseCluster节点分别对应“读数据库”与“写数据库”。
二是建立两个“负载均衡器”类分别对应“读的DatabaseCluster节点”与“写的DatabaseCluster节点”。
举例如下,我们在数据库服务器中创建一个BaseRead数据库专门用作读操作,然后再创建一个BaseWrite数据库专门用作写操作。随后,我们的DeveloperSharp.json/xml配置文件则做相应修改。
若是在.Net Core环境下,DeveloperSharp.json修改如下:
{
"DeveloperSharp":
{
"DatabaseClusterList":
[
{
"Id":"BRead",
"DatabaseCluster":
[
{
"Id":"A1",
"Enable":"true",
"Weight":"100",
"DatabaseType":"SqlServer",
"ConnectionString":"Server=localhost;Database=BaseRead;Uid=sa;Pwd=123"
}
]
},
{
"Id":"BWrite",
"DatabaseCluster":
[
{
"Id":"B1",
"Enable":"true",
"Weight":"100",
"DatabaseType":"SqlServer",
"ConnectionString":"Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123"
}
]
}
]
}
}
若是在.Net Framework环境下,DeveloperSharp.xml修改如下:
<?xml version="1.0" encoding="utf-8" ?>
<DeveloperSharp>
<DatabaseClusterList>
<DatabaseCluster Id="BRead">
<Database Id="A1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseRead;Uid=sa;Pwd=123"/>
</DatabaseCluster>
<DatabaseCluster Id="BWrite">
<Database Id="B1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123"/>
</DatabaseCluster>
</DatabaseClusterList>
</DeveloperSharp>
注意,其中两个DatabaseCluster节点的Id属性值分别为BRead与BWrite。
接着,我们再创建两个“负载均衡器”类(Base4Read与Base4Write)分别对应BRead与BWrite。如下所示:
[DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BRead")]
public class Base4Read : DeveloperSharp.Structure.Model.DataLayer
{
//类中没有任何代码
}
[DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BWrite")]
public class Base4Write : DeveloperSharp.Structure.Model.DataLayer
{
//类中没有任何代码
}
此后,我们只需在相关程序代码中区分使用Base4Read与Base4Write这两个类,即可灵活实现数据库的读写分离。
推荐阅读
- .NET/C#大型项目研发必备(1)–UUID全球通用唯一识别码
- .NET/C#大型项目研发必备(2)–跨域访问
- .NET/C#大型项目研发必备(3)–数据库的负载均衡
- .NET/C#大型项目研发必备(4)–数据库的读写分离
- .NET/C#大型项目研发必备(5)–Web服务/WebApi的负载均衡
- .NET/C#大型项目研发必备(6)–IUtility工具介绍
- .NET/C#大型项目研发必备(7)–DataAccess数据库访问技术
- .NET/C#大型项目研发必备(8)–高效分页
- .NET/C#大型项目研发必备(9)–http请求调用(Post与Get)
- .NET/C#大型项目研发必备(10)–图片的裁剪、缩放、与加水印
- .NET/C#大型项目研发必备(11)–使用Redis缓存
- .NET/C#大型项目研发必备(12)–使用MQ消息队列
- .NET/C#大型项目研发必备(13)–DataAccess数据库访问技术(续)
- .NET/C#大型项目研发必备(14)–数据库的负载均衡(续)
如果文章对你有帮助,请点赞、收藏、关注(原创内容,欢迎转载,转载请注明出处)
出处:https://developersharp.blog.csdn.net/
【技术支持+获取更多宝贵资源,点击下方名片,备注“进群”】