多线程高并发如何优化?

Yanyan 481 2023-11-06

线程与高并发

线程:

1、线程的介绍

在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。

2. 线程的概念

线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度 ,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。

3. 线程的作用

多线程可以完成多任务

多线程效果图:


1699242268822.png

并行和并发:

并发:指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)。

真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的多核数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。


1699242291012.png

并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的

1699242378835.png

高并发:


1699242401201.png

相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务,同时有上万人观看。

高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。


多线程高并发如何优化?

1、HTML静态化
我们可以将页面静态化提供访问来缓解服务器压力,能够缓解服务器压力加大以及降低数据库数据的频繁交换。适合于某些访问量过大,但是内容不经常改变的页面,如首页、公告页等;
前后端分离,即前端与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。前端界面的显示是通过后台服务器的接口返回的json数据进行渲染后返回给前端浏览器进行解析执行;
2、图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
静态资源部署至CDN上,即直接将静态资源全部存放在CDN服务器上。因为之前项目中的JavaScript,CSS以及img文件都是存放在CDN服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点——CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
3、负载均衡
1、软/硬件负载均衡
2、本地/全局负载均衡

3、使用nosql和Hadoop技术

4、集群与分布式架构
5、反向代理
客户端直接访问的服务器并不是直接提供服务的服务器,它从别的服务器获取资源,然后将结果返回给用户。
代理服务器和反向代理服务器:
代理服务器是代我们访获取资源,然后将结果返回。例如,访问外网的代理服务器。反向代理服务器是我们正常访问一台服务器的时候,服务器自己调用了别的服务器。
反向代理就是说,用户的请求请求到负载均衡的设备上,负载均衡设备再讲请求分发到空闲的应用服务器上处理,处理完成之后再通过负载均衡设备返回给用户,这样对于用户来说,后来的分发是不可见的。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:为什么要解决高并发问题,教你几种高并发的处理方法
下一篇:高并发架构经验, 9种高性能可用高并发的技术架构
相关文章