简单介绍:学习如何应对高并发的用户请求?
这里记录的是我个人对网络学习的一些总结性知识
#如何应对高并发
##高并发?
指互联网分布式架构中必须考虑的重要因数,其主要考量的指标有: 相应时间、吞吐量、并发用户数等。
##如何提升并发能力?
在分布式架构中,要提升整体的并发能力,可以结合垂直和水平两种方式。
###垂直扩展
垂直扩展是指提升单个服务器的处理能力,方式有两种:
- 提升硬件层面的性能:用更好的CPU、更大的内存、扩充硬盘(一般是磁盘)等。
- 提升软件层面的性能:使用更合适的架构、算法、使用异步处理、提升数据库访问速度等。
在企业初期阶段,一般是强烈建议采用“提升硬件层面的性能”的方式来提升并发能力。应为企业初期往往是要抢占市场,而“提升硬件层面的性能”的方式是最块的方法。
但是,这不是最终的解决方案,因为单台服务器的性能总是有限的。
###水平扩展
####先讲述互联网分布式架构的演化
例子:新浪微博
https://blog.csdn.net/weixin_46794373/article/details/107312128 - 单机系统
此时,应用程序的所有运行组件都在一台服务器上。 - 应用与数据库分离
将前面的服务器一分为三:应用程序、数据库、系统文件。将这仨分别部署在不同服务器上,进行“远程部署”、“远程访问”就可以了。这样处理能力就提升了3倍(真的3倍?我也不知道…) - 使用缓存
缓存,就是将应用程序需要读取的数据缓存在缓存中,通过缓存读取数据,而不是通过数据库读取数据。
缓存分有分布式缓存和本地缓存两种。本地缓存很好理解,就是在应用程序的服务器上的缓存;分布式缓存是将多台服务器共同构成一个集群,存储更多的缓存数据,共同对应用程序提供缓存服务,提供更强大的缓存能力。 - 负载均衡
通过负载均衡服务器,将应用服务器部署为一个集群,添加更多的应用服务器去处理用户的访问。 - 读写分离
将一个数据库通过数据复制的方式,分裂为两个数据库,主数据库主要负责数据的写操作,所有的写操作都复制到从数据库上,保证从数据库的数据和主数据库数据一致,而从数据库主要提供数据的读操作。