「万字干货」高并发系统分析与大型互联网架构介绍

本文详细介绍了高并发系统分析与大型互联网架构设计,涵盖高并发原则、容错原则、CAP原则、幂等性原则和可扩展原则。讨论了系统设计时如何处理高并发请求,如使用缓存、分布式服务、Session共享策略,以及如何应对缓存穿透和雪崩问题。此外,还探讨了技术选型、数据库设计和大型系统架构设计中的关键点,为开发者提供了深入理解高并发系统设计的指导。
摘要由CSDN通过智能技术生成

(篇幅较长,建议大家先收藏再看哦~)

在初步地学习并掌握了基础的编程之后,如何提高编程能力是每个开发者关心的问题。对于 Java 的学习者来说,高并发是每个开发者技术进阶的必经之路。但是高并发的技术要求和业务场景本身就是比较复杂的,这就会给大家的学习之路带来一定的难度。

下面我们带大家了解高并发系统的应用场景、市场需求以及目前市面上比较成熟的大型互联网的系统架构基线是怎样的,让大家对于高并发有一个初步地认识,了解一些复杂业务场景需求下的高并发定制化应对策略,以及一些常见的高并发环境下的解决方案。

要点

  • 大型系统的技术基石-高并发

  • 系统分析原则

  • 系统设计要点

  • 大型系统架构设计

大型系统的技术基石-高并发

目前互联网分布式系统架构设计中必须得考虑高并发因素的影响,我们给它一个定义的话它通常是指通过设计来保证系统能够同时并行处理很多的请求。小到门户网站的并发阅读量、在线聊天功能,大到春运期间 12306 官网的并发购票业务、每年的双十一电商大促时的并发交易量、电商秒杀、除夕夜微信红包的并发等,这些都体现了现实业务开发的高并发技术的刚性需求。

在双十一等电商大促活动之后,除了屡创新高的交易额外,还有一个看点就是各大电商平台整点交易的并发量。很显然,对于高并发的掌握能力在一定程度上反映了一个电商平台的技术水平,往往我们都对于一个能抗得住高并发的系统格外的青睐。一些国内外的互联网企业都在频繁地推出各种高并发相关的新技术框架,由此可见对于高并发的极致追求一直是各大互联网企业不断挑战、乐此不疲的研究方向。

“系统繁忙,请稍后再试”等异常反馈相信大家都在生活中碰到过,高并发技术是很重要的,但是也存在着巨大的技术挑战和提升的价值空间。它是一个广义的概念可以包含架构设计、SOA 面向服务的架构、分布式、微服务、数据处理、多线程等很多细分出来的知识。

现在给大家从技术的角度简要地介绍一下如何处理高并发的请求。

例如,电商的秒杀活动会带来非常大的高并发请求,为了避免超额的高并发请求冲垮电商的服务器,就需要对所有的并发请求进行处理。一般而言,可以先通过验证码和 IP 限制等手段拦截非法的用户请求,然后搭建服务集群,将合法的并发请求进行分流。之后还可以在服务器内部设置最大的连接数、最大并发数等服务参数,并通过消息队列对海量的并发请求进行削峰填谷处理。此外,为了让数据库稳定地处理高并发请求,还需要通过缓存中间件减少用户请求数据库的次数,并通过服务降级等策略减轻高并发峰值期间对系统的访问压力。最后,为了在极端情况下仍然能够保障数据的安全性能,还需要搭建数据库集群并设置合理的隔离机制。由此可见,高并发贯穿在项目设计的方方面面,从网关到服务器开发再到数据设计等环节都需要考虑高并发情况下的应对策略。

大家在学习过程中一定要在看懂文案、读懂代码的基础上多实践,多输出,这样子才可以后期自己实现“写出来”。不要只是动眼、动耳但是不动手。希望大家参与到实践中来,多练习,多总结。

系统分析原则

在市面上存在各种优秀的软件系统,他们都遵循着相同的设计原则。大型的系统在设计的时候需要重点考虑一些原则和设计要点,这也是我们在这里想要强调的,这些原则会对系统架构的演进方案和具体的架构设计提供基础的支持,这也是我们作为系统开发设计人员在设计一个系统刚开始需要掌握的理论基础。

开发大型系统时,我们除了根据业务需求实现相应的功能模块外,还需要从高性能和高可用等多个维度来思考如何对系统进行设计,遵循高并发、容错性和可扩展等多个设计分析原则是我们重要需要考虑的。

高并发原则

高并发是每个大型项目都无法回避的问题,保证项目在高并发的环境下正常运行可以通过垂直扩展和水平扩展来实现,我们简述一下垂直和水平扩展。

垂直扩展:
直接通过提升单机的性能的层面去升级硬件或者软件技术,可以用一个比喻来说明,比如当一个小牛无法拉动货物的时候,就可以将小牛换成体能强壮的大牛。

水平扩展:
通过增加服务器的节点个数来横向扩展系统的性能,这也是分布式的一个说明方式,还是上面的这个比喻,当一头牛无法拉动货物的时候,就可以把货物进行拆分,然后用多头牛去拉这些货物,或者用多头牛一起去拉这批货物。

对比上面这两种方案,我们可以很显然地发现,处置扩展是最快的方法,只需要购买性能更加强大的硬件设备就可以迅速地提升性能,但是单机的能力还是有限的,如果货物很多的话,比如我们用一座山来类比,一头牛再厉害也是拉不动一座小山的,因此,大型互联网系统对于高并发的最终解决方案是水平扩展。

从技术层面讲,可以使用缓存来减少对数据库的访问,用熔断或者降级来提高响应的速度,通过流量削峰等手段在项目的入口限流,先拆分项目或者使用微服务技术快速构建功能模块,然后再用 Spring Cloud 或 Dubbo 等来统一治理这些模块,通过中间件搭建基于读写分离的高可用的数据库集群等。在系统的测试阶段还可以使用 JProfiler 等工具进行性能分析,寻找性能瓶颈,从而有针对性地优化。

衡量高并发的常见指标包括:响应时间、吞吐量或 QPS(Query per Second,每秒查询率)、并发用户数等。

容错原则

如果高并发使用不当的话,就容易造成各种逻辑混乱的情景,因此我们就需要对各种潜在的问题做好预案,也就是要确保系统要拥有一定的容错性。比如使用 Spring Boot 和 Redis 来实现分布式缓存,使用 MQ 实现分布式场景下的事务一致性,使用 MQ、PRG 模式、Token 等解决重复提交的问题,使用“去重表”实现操作的幂等性,使用集群或 Zookeeper 解决失败迁移的问题。

在分布式系统中,网络时延也是不可避免的,一般情况可以在长连接的情况下通过“心跳监测机制”来处理,我们下面简单阐述一下心跳监测机制。

在正常的网络环境下面,当用户点击了手机上某个 App 的“退出”按钮后,就会调用服务端的 exit()等退出方法,从而注销掉用户的状态,如果用户的手机信号中断、关机或者处于飞行模式话该如何判断用户的状态呢?除了通过 Session 有效时长来进行判断外,就可以通过心跳检测来判断,客户端每隔 60s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值