欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

高并发那些事

程序员文章站 2022-05-06 08:47:01
...


高并发分布式架构演进之路


关于高并发的常见概念
分布式:系统中的多个模块部署在不同的服务器上面,即可称为分布式系统,比如django和数据库分别部署在不同的服务器上面,或者同一份代码部署在多个服务器上

高可用
系统中的某个节点失效时,其他节点能够接替它继续提供服务,则可以认为系统高可用


集群
例如redis集群,其也可以说是保证高可用的前提,一般是指一个特定领域的软件部署在多台服务器上面并作为一个整体提供一类服务,这个整体称之为集群,在常见的集群里面,客户端可以连接任一节点实现需求


负载均衡
请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀处理请求负载,则可以认为系统是负载均衡的


正向代理与反向代理
系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。
简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程.









切入正题

解决一个问题,我们得先知道这个问题的痛点在哪里,或者说瓶颈,高并发高可用架构也是一样,在随着用户量的不断增大,高并发架构需要因对的瓶颈也是不同的,下面会是一些简单的介绍






1.1传统单机:资源有限,性能扩张不方便

传统的单机架构流程,项目和数据库之间存在竞争资源,单机性能不足以支撑业务

浏览器请求=>DNS服务器获取域名ip,返回浏览器=>浏览器请求部署django项目的服务器=>项目访问本地服务器数据库
解决办法:将数据库与Tomcat分开来部署到不同服务器


1.2随着用户层次再次上升,频繁的读取mysql数据库称为了瓶颈
解决方法,本地缓存,分布式缓存
涉及技术点:缓存穿透,缓存击穿,缓存雪崩,缓存一致性问题,热点数据集中失效问题



1.3缓存抗住了大部分的请求,用户层次再次上升,并发压力全部落在了Tomcat上面,响应再次变得缓慢
此时将Tomcat部署到多台服务器上面,使用nginx做代理,分别转发到不同的服务器上面

涉及技术点:session共享,文件上传与下载的问题



1.4反向代理使得服务器支持的并发量大大增加,但这个时候意味着更多的请求穿透到数据库,单机部署的数据库成为了瓶颈

解决:将数据库进行读写分离

涉及技术问题点:数据一致性问题,数据同步,是否需要分库分表问题




1.5业务再次增大,不同业务之间的访问量差距较大,意味着不同业务之间竞争数据库,相互影响性能

将不同模块之间的数据库读写业务进行剥离,单独部署,对于访问大的业务可以使用更多的服务器来进行支撑






淘宝架构演进之路:
https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247488722&idx=1&sn=8bf1d0cc048ad270fd6231b61439fcce&chksm=ebd62bfedca1a2e8fb6ede7a70563689b50c56cc9630571fc2cc9d2e50e17079ed9287236e63&scene=21#wechat_redirect



支付宝架构
https://mp.weixin.qq.com/s/d4K9hJHzZ5IAd2aarsdQrw