经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
windows平台的分布式微服务解决方案(4)--数据库的读写分离
来源:cnblogs  作者:DeveloperSharp  时间:2021/12/15 9:22:20  对本文有异议

本文讲述的数据库读写分离的实现方式,是基于前述“数据库的负载均衡”这篇文章的内容发展而来,请先对其阅读参考。

 

在某些大型应用系统中,往往需要把数据库的“读操作”与“写操作”分为两个数据库(甚至两组数据库)分开操作,以达到读写分离的目的。

要实现数据库的读写分离,只需在前述“数据库的负载均衡“这篇文章的内容上做两点修改即可实现:

一是在DeveloperSharp.xml配置文件中设置两个DatabaseCluster节点分别对应“读数据库”与“写数据库”。

二是建立两个“负载均衡器”类分别对应“读的DatabaseCluster节点”与“写的DatabaseCluster节点”。

 

 

举例如下,我们在数据库服务器中创建一个BaseRead数据库专门用作读操作,然后再创建一个BaseWrite数据库专门用作写操作。随后,我们的DeveloperSharp.xml配置文件则修改为如下:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <DeveloperSharp>
  3. <DatabaseClusterList>
  4. <DatabaseCluster Id="BRead">
  5. <Database Id="A1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseRead;Uid=sa;Pwd=123"/>
  6. </DatabaseCluster>
  7. <DatabaseCluster Id="BWrite">
  8. <Database Id="B1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123"/>
  9. </DatabaseCluster>
  10. </DatabaseClusterList>
  11. </DeveloperSharp>

注意,其中两个DatabaseCluster节点的Id属性值分别为BRead与BWrite。

 

 

接着,我们再创建两个“负载均衡器”类(Base4Read与Base4Write)分别对应BRead与BWrite。如下所示:

  1. [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BRead")]
  2. public class Base4Read : DeveloperSharp.Structure.Model.DataLayer
  3. {
  4. //类中没有任何代码
  5. }
  6. [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BWrite")]
  7. public class Base4Write : DeveloperSharp.Structure.Model.DataLayer
  8. {
  9. //类中没有任何代码
  10. }

此后,我们只需在相关程序代码中区分使用Base4Read与Base4Write这两个类,即可灵活实现数据库的读写分离。

【本文采用.NET/C#语言撰写,如需其它语言版本,请联系作者索取。】
【本文采用Sql Server数据库撰写,如需其它数据库版本,请联系作者索取。】

作者二维码

如果文章对您有帮助,请点赞、收藏、关注、分享(原创内容,欢迎转载,转载请注明出处)


扫描左侧二维码可以联系作者,收获更多精华知识。

出处:https://www.cnblogs.com/DeveloperSharp/
官网:http://www.365ey.net/

本文采用「CC BY 4.0」知识共享协议进行许可,转载请注明作者及出处。

原文链接:http://www.cnblogs.com/DeveloperSharp/p/15690932.html

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号