C#.NET 权限管理系统组件 - 大数据读写分离实现的例子
2013-02-18 13:33 通用C#系统架构 阅读(9481) 评论(10) 编辑 收藏 举报当web服务器的每天的访问量超过10万ip时对服务器主机的性能要求就非常高了,而且这些访问量又不是平均分布在24个小时里,往往有一个集中的访问高峰,晚上服务器的访问量又很低甚至是深夜连续好几个小时没访问量!
例如我们平时维护的网站的日平均访问量是30万ip、访问高峰时并发的用户量非常大,数据库主机的压力非常大,虽然我们采取了分库措施,但是有些大表、核心业务表的访问压力又非常大,例如有同时有1千个用户在读取数据库又同时这1千个用户在写入数据库,往往读取的次数比写入的更多一些。
1:购买更好的服务器硬件提升性能(硬件性能越高价钱越高,这个是无止境的投资,而且闲置下来的服务器有时候也无法发挥更好的作用,同时还需要购买相同配置的备份服务器,以防止硬件突然损坏,所以这个代价不只是购买1台就可以了,要购买2台才可以)。
2:利用读写分离进行性能优化,例如数据库的复制机制,把主数据库复制出一份到另外一个服务器上,写入操作都写主数据库,读取操作都从另外一个服务器读取,这样并不需要非常牛的服务器,就可以把1千人同时读取,同时又写入的操作,分给2台服务器来承担。这样主服务器的压力明显可以减少了,性能下降也会明显得到改善。一台主机可能处理起来要接近死机了,2台主机来承担这个压力,可能2个主机都活得好好的,而且还可以承担的更大的并发压力了。
3:数据库的复制同步可以让数据库管理员来设置配置了,我们写程序主要是改我们的源码,原来的1个数据库连接UserCenterDbConnection读写在一起的修改一下,UserCenterWriteDbConnection(写入)、UserCenterReadDbConnection(读取)的进行分离,当然我们的系统刚开始设计的时候就足够健壮那就耗费1天2天就可以修改过来了,再仔细测试一下就可以重新发布了,读写分离就这么搞定了,心里舒坦了很多。
4: 读写分离也不是那么100%绝对的,主要目的是为了降低主服务器的性能压力,尽量把读取操作集中在另外一个读取的数据库服务器上,解放主服务器;例如一个操作需要马上写入服务器,然后需要及时读取到值的,也直接写入读取主服务器就可以了,读写分离也是相对的,我们的主要目的是把主服务器的并发访问压力减缓、提高主服务器的数据处理性能。
下图是大数据读写分离的示意图,做得非常好看,我喜欢
下面是数据库连接到2个服务器的配置方法,第一个是写入的服务器,第二个是读取的服务器。
这里是连接2个服务器的例子
下面是读写分离的服务器上监控只读服务器上的sql语句运行情况的例子抓图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!