一、什么是高并发

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

二、如何理解高并发?

高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验。

我们常见的高并发场景有:淘宝的双11、春运时的抢票、微博大V的热点新闻等。除了这些典型事情,每秒几十万请求的秒杀系统、每天千万级的订单系统、每天亿级日活的信息流系统等,都可以归为高并发。

三、高并发系统设计的目标是什么?

从宏观角度看,高并发系统设计的目标有三个:高性能、高可用、高扩展。这3个目标是需要通盘考虑的,因为它们互相关联,甚至也会相互影响。

3.1高性能

性能体现了系统的并行处理能力,在有限的硬件投入下,提高性能意味着节省成本。同时,性能也反映了用户体验,响应时间分别是100毫秒和1秒,给用户的感受是完全不同的。

3.2高可用

表示系统可以正常服务的时间。一个全年不停机、无故障;另一个隔三差五出线上事故、宕机,用户肯定选择前者。

3.3高扩展

表示系统的扩展能力,流量高峰时能否在短时间内完成扩容,更平稳地承接峰值流量,比如双11活动、明星离婚等热点事件。

四、高并发系统三大利器

4.1限流

1.什么是限流?

限流是限制系统的输入和输出流量已达到保护系统的目的,是为了保证系统的稳定运行。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等。

2.限流操作有哪些?

拒绝服务:就是把请求直接拒绝掉。

服务降级:将系统的所有功能服务进行一个分级,当系统出现问题,需要紧急限流时,可将不是那么重要的功能进行降级处理,停止服务,这样可以释放出更多的资源供给核心功能的去用。

延迟处理:把请求全部放入到队列中,真正处理的话,就从队列里面依次去取,这样的话流量比较大的情况可能会导致处理不及时,会有一定的延时。

特权处理:这个模式需要将用户进行分类,通过预设的分类,让系统优先处理需要高保障的用户群体,其它用户群的请求就会延迟处理或者直接不处理。

4.2降级

1.什么是降级?

服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

2.服务降级方式

延迟服务:定时任务处理、或者mq延时处理。

页面降级:页面点击按钮全部置灰,或者页面调整成为一个静态页面显示"系统正在维护中......"。

关闭非核心服务:比如电商关闭推荐服务、关闭运费险、退货退款等。保证主流程的核心服务下单付款就好。

写降级:比如秒杀抢购,我们可以只进行Cache的更新返回,然后通过mq异步扣减库存到DB,保证最终一致性即可,此时可以将DB降级为Cache。

读降级:比如多级缓存模式,如果后端服务有问题,可以降级为只读缓存。

4.3缓存

1.什么是缓存?

Web缓存是用于临时存储(缓存)Web文档(如HTML页面和图像),以减少服务器延迟的一种信息技术。Web缓存系统会保存下通过这套系统的文档的副本;如果满足某些条件,则可以由缓存满足后续请求。

2.Web缓存的作用

减少网络带宽消耗:当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。

降低服务器压力:给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。

减少网络延迟,加快页面打开速度:带宽对于个人网站运营者来说是十分重要,缓存的使用能够明显加快页面打开速度,达到更好的体验。

3.web缓存有哪些?

数据库缓存:避免频繁的数据库查询,将查询的数据放入内存中,下次从内存中直接返回。

服务器缓存:服务器缓存一些经常会被用的资源,当多个用户访问时,因为他们共同需要访问的资源已经被缓存了,可以有效降低服务器压力。

浏览器缓存:缓存一些最近用到的图片,数据,页面等,提高网页打开速度。

五、结语

高并发是一个复杂且系统性的问题。笔者认为,高并发设计要秉承架构设计的3个原则:简单、合适和演进。"过早的优化是万恶之源",不能脱离业务的实际情况,更不要过度设计,合适的方案就是最完美的。

远齐科技基于成熟的软件架构、互联网、物联网、大数据、人工智能等技术构建面向未来的集成开发平台系统。在自有集成开发平台基础上,基于最佳业务实践开发出丰富的软件功能模块、业务系统,为企业提供高效的定制化开发服务。

上一篇:软件测试—软件企业的生命线 下一篇:企业级单点登录——信息化体系建设的基础