Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1178|回复: 0

.net高并发的解决方案(转)

[复制链接]
  • TA的每日心情
    奋斗
    2025-3-18 14:43
  • 签到天数: 805 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    73万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    731050
    发表于 2021-5-31 09:22:20 | 显示全部楼层 |阅读模式

    .net高并发的解决方案

    测试方法:
    本地模拟测试网站高访问高并发采用的测试工具是大名鼎鼎的Loadrunner,这个工具做测试的一般都知道。在代震军的博客中,有以下几篇介绍了通过Loadrunner进行压力并发测试。

    当DiscuzNT遇上了Loadrunner(上)
    http://www.cnblogs.com/daizhj/archive/2009/09/25/1573926.html

    当DiscuzNT遇上了Loadrunner(中) 
    http://www.cnblogs.com/daizhj/archive/2009/09/27/1574897.html

    当DiscuzNT遇上了Loadrunner(下) 
    http://www.cnblogs.com/daizhj/archive/2009/09/27/1575091.html


    Discuz!NT是一个论坛程序,是典型的互联网应用,在设计时本身就考虑了互联网应用场景下高并发高访问量的需求,在普通开源版本中,主要采用的缓存机制来提高系统的性能。

    一、缓解数据库读取压力

     

    相关文章如下:
    Discuz!NT 缓存设计简析 [原创] 
    http://www.cnblogs.com/daizhj/archive/2007/08/15/855163.html

    这个缓存机制使用的是.Net本身提供的缓存功能,System.Web.Caching.Cache
    这个方案可以解决一般访问量不是很大的站点的需求,更高一级的,可以通过增加Web园工作进程来达到提升性能的需求,而且这个方案里面,已经解决多进程下缓存同步的问题。


    在Discuz!NT企业版中,提供了更高层次的解决方案,使用了分布式缓存机制,引入了Memcached、Redis、LLServer,相关文章如下:

    Discuz!NT中集成Memcached分布式缓存
    http://www.cnblogs.com/daizhj/archive/2009/03/23/1386652.html

     

    在Discuz!NT中进行缓存分层(本地缓存+memcached)  
    http://www.cnblogs.com/daizhj/archive/2009/11/17/1604436.html

     

    Discuz!NT中的Redis架构设计

    http://www.cnblogs.com/daizhj/archive/2011/02/21/1959511.html

     

    Discuz!NT跨站缓存同步

    http://www.cnblogs.com/daizhj/archive/2010/06/18/discuznt_memcache_syncdata.html

     

    Discuz!NT中的LLServer架构设计

    http://www.cnblogs.com/daizhj/archive/2011/08/26/discuznt_llserver_arch.html

     


    Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。具体的介绍可以参考:

    Memcached深度分析
    http://www.cnblogs.com/luluping/archive/2009/01/14/1375456.html

    通过以上的方案,能解决大部分高访问高并发的需求,因为论坛产品的特殊性,读写比大概是4:1,所以首先应该在读数据方面进行减压优化。

     

    二、缓解Web服务器压力

     

    Discuz!NT在缓解Web服务器压力上采用了如下的方案。

     

    1. 将用户上传的附件通过FTP方式传送到另外一台服务器上,相关的文章如下:

      Discuz!NT中远程附件的功能实现[FTP协议]

      http://www.cnblogs.com/daizhj/archive/2008/07/28/1254648.html


    3. 通过SQUID将静态文件缓存分布
    使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,从而给Web服务器减压,提升性能。

    Discuz!NT静态文件缓存(SQUID)解决方案
    http://www.cnblogs.com/daizhj/archive/2010/06/10/1692758.html


    三、负载均衡

     

    通过以上的方案,Web服务器压力小了,性能也提升了,但是如果遇到更高的并发访问量,单台Web服务器还是不能满足需求,Discuz!NT采取了负载均衡的方案。使用了LVS+KEEPALIVED、NGINX等。相关文章如下:

     

        Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)
        http://www.cnblogs.com/daizhj/archive/2010/06/13/1693673.html

     

        Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)

        http://www.cnblogs.com/daizhj/archive/2010/06/13/1693673.html

     

        Discuz!NT负载均衡方案

        http://www.cnblogs.com/daizhj/archive/2010/06/24/1667422.html

     

        使用的是nginx,使用nginx作为前端负载均衡,这个确实很有吸引力,有时间能试用下就好。

     

     
    四、缓解数据库压力


    在Discuz!NT中,数据库作为数据持久化工具,必定在并发访问频繁且负载压力较大的情况下成为系统性能的‘瓶颈’。即使使用上面的本地缓存等方式来解决频繁访问数据库的问题,但仍旧会有大量的并发请求要访问动态数据, 其中的‘读写分离’方案就是一种被广泛采用的方案。相关文章:

     

        Discuz!NT数据库读写分离方案

        http://www.cnblogs.com/daizhj/archive/2010/06/21/dbsnap_master_slave_database.html

        全文搜索方案:

        Discuz!NT企业版之Sphinx全文搜索(上)

        http://www.cnblogs.com/daizhj/archive/2010/06/28/discuznt_entlib_sphinx_one.html

     

         Discuz!NT企业版之Sphinx全文搜索(下)

        http://www.cnblogs.com/daizhj/archive/2010/06/30/discuznt_entlib_sphinx_two.html

     

        处理大数据量:

        Discuz!NT千万级数据量上的两驾马车--TokyoCabinet,MongoDB

        http://www.cnblogs.com/daizhj/archive/2010/07/22/1781140.html

     

    好了,上面就是Discuz!NT企业版为了提升性能采取的一系列方案,确实对asp.net互联网应用很有参考价值,其中用到的很多开源产品都是基于Linux的,如Memcached、Redis、LLServer、SQUID、NGINX、LVS、Sphinx,虽然有些产品有Windows版本,但是其性能表现能力远远比不上Linux上面,看来在Web应用上,性能方面的表现以及开源产品的研究,Linux远远的走在了Windows前面

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-4-21 08:41 , Processed in 0.060252 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表