首页 > 编程知识 正文

java多线程并发(前端如何处理高并发)

时间:2023-05-03 06:00:49 阅读:86633 作者:248

个人网站这样的小网站可以使用最简单的html静态页面实现。 为几个图像带来美化效果,所有页面都保存在一个目录中。 这类网站对系统的体系结构、性能要求简单,随着互联网业务的不断充实,网站相关技术经过这几年的发展,细分为非常细致的方面。 特别是在大型网站上,所采用的技术更是多方面的,从硬件到软件、编程语言、数据库、web服务器、防火墙等各个领域都有很高的要求,是传统的简单html静态网站

门户网站等大型网站。 在面对大量用户访问、高并发要求的情况下,基本解决方案集中于使用高性能的服务器、高性能的数据库、高效的编程语言和高性能的Web容器。 但是,除了这几点,不能从根本上解决大型网站面临的高负荷和高并发性问题。

上面提供的一些解决思路在一定程度上意味着较大的投资,并且这种解决思路具备瓶颈,没有良好的扩展性。 让我从低成本、高性能、高扩展性的角度谈谈我的一些经验。

1、HTML的静态化

其实大家都知道,最高效、消耗量最少的纯粹是静态的html网页,所以尽量用静态的网页来实现我们网站的网页。 这个最简单的方法其实是最有效的方法。 但是,对于大量且经常更新的网站,我们不可能全部手动个别实现。 因此,就像我们经常访问的各门户网站的新闻频道、他们的其他频道一样,被我们经常使用的信息发布系统所管理和实现。 信息发布系统可以实现最简单的信息输入,自动生成静态页面,具备频道管理、权限管理、自动捕获等功能,对于大型网站来说拥有一套高效的网站

不仅是门户网站和信息传播类型的网站,对于互动性有要求的社区类型的网站来说,尽可能静态化也是提高性能的必要手段,有了社区内的投稿和文章实时静态化、更新网络社区等也一样。

html静态化也是某些缓存策略使用的方法。 在经常使用数据库查询但内容更新很少的APP上,可以考虑使用html静态化,例如当前主流论坛在后台进行管理并存储在重新数据库中的论坛的公共配置信息。 这些信息实际上由前台程序大量调用,但由于更新频率较低,在后台更新这部分内容时可以通过静态化来避免大量的数据库访问请求

2、图像服务器的分离

众所周知,对Web服务器来说,无论是Apache、IIS还是其他容器,图像都是最消耗资源的。 因此,有必要分离图像和页面。 这基本上是大网站采用的战略,他们有独立的图像服务器,有很多图像服务器。 这样的体系结构可以降低提供页面访问请求的服务器系统的压力,并保证系统不会因图像问题而崩溃。 APP服务器和图像服务器可以优化不同的配置。 例如,apache在配置内容类型时最大限度地减少支持,最大限度地减少负载模块,从而保证更高的系统消耗和运行效率。

3、数据库集群和库表哈希

大型网站有复杂的APP,这些APP必须使用数据库。 面对大量访问时,数据库瓶颈很快就会出现。 在这种情况下,一个数据库无法立即满足APP。 因此,必须使用数据库集群或库表哈希。

ign-justify">在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。

上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

4、缓存

缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。

架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。

网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了,.net不是很熟悉,相信也肯定有。

5、镜像

镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

6、负载均衡

负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。

想要学习Dubbo框架、zookeper基本原理、redis分布式缓存、JVM性能优化,Nginx+apache+Tomcat集群部署、大数据hadoop,Hbase实时计算spark、storm、数据分析分词和权重等核心技术;需要的可以关注之后私信哈,记得要点赞转发噢!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。