高并发那些事



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


关于高并发的常见概念
分布式:系统中的多个模块部署在不同的服务器上面,即可称为分布式系统,比如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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值