设计一个高并发高性能系统需要考虑哪些方面
Posted 敲代码的小小酥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计一个高并发高性能系统需要考虑哪些方面相关的知识,希望对你有一定的参考价值。
前言
如何设计高并发系统,是需要根据系统具体需求业务以及数据量、访问量等因素综合分析才能得出的。这里只是简单记录一下提高系统并发和性能的一些常用方法和手段,以便于在系统设计时,有思考的方向。
我将提升系统并发和性能的方面分为部署设计,系统内部架构设计,前端访问控制三方面。
一、部署架构设计
部署架构设计是一个很大的概念。不光涉及到软件的部署,还涉及到硬件的部署架构,网络的部署架构等等因素。对于一个软件程序员而言,其他方面的部署架构设计也不懂,这里只记录一下软件方面的部署架构设计。
系统服务单一职责+集群部署
最简单粗暴的方式就是加机器,加集群。然后采用负载均衡,来提升系统的访问量。将整个大的系统,拆分成多个小系统,每个小系统进行集群部署,最大限度提升系统性能。
当然这里的集群不单单是应用服务的集群了。例如反向代理用nginx的话,nginx集群也需要搭建起来。总之就是相关服务的集群都要搞起来。
购买CDN服务
关于CDN的理解可以参考两篇文章:前端理解CDN 、 面向前端的CDN 原理介绍
简单理解就是CDN服务会寻找客户端最近的服务器去访问,并会缓存前端的图片,视频,html,js,css等相关的内容,使用户更快获取到前端资源的一种技术手段。
二、系统内部架构设计
部署架构设计主要是花钱加机器,购买服务的方式提升系统并发和性能。而系统内部,也需要做出一系列优化措施,来提升服务的并发度和性能。这样既可以节省一部分部署所花费的资金,也能体现出程序员所在的价值。如果系统不做任何优化,纯靠加钱来提升性能,那还需要高级程序员干啥呢,省下来高级程序员的工资来加机器不就得了吗。
系统内部性能优化主要从缓存、动静分离、限流熔断、队列削峰、数据库优化几个方面考虑。
缓存
加入缓存设计,减少数据库压力,同时减少请求响应时间,以此提升系统性能。
动静分离
使用nginx做好动静分离,减轻后台服务器压力。
限流熔断降级
加入限流、熔断降级框架和功能,提高系统高可用性。
队列削峰
采用MQ做高并发请求的缓冲载体,削峰填谷,提升系统的稳定性,避免大流量冲垮系统。
数据库优化
分库分表的设计、数据库表索引优化等手段。根据具体业务场景而定。
三、前端访问控制
前端也需要采用一些手段,来提升系统的并发和性能,主要手段有:恶意请求拦截、防重复提交机制、验证码机制等等。
恶意请求拦截
这个功能后端也可以完成,避免恶意攻击服务器。
防重复提交机制
例如提交的表单不能重复提交。防止用户一直点某个按钮,一直发送请求到后台。
验证码机制
验证码机制也是一种防恶意攻击和错峰提交的手段。例如,在某个热点功能的提交动作,加入输入验证码机制,来错开大量用户同时提交请求的情况出现。电商中的加入购物车操作,也是错峰提交的一种手段。
以上是关于设计一个高并发高性能系统需要考虑哪些方面的主要内容,如果未能解决你的问题,请参考以下文章