互联网高并发设计手段

徐雷Java为王互联网高并发架构设计与选型之路6.0.pdf 他是资深架构师、MongoDB中文社区联席主席——徐雷。徐雷专家专注于分布式架构,Java Spring Boot、Spring Cloud、MongoDB、Redis;拥有10年 开发经历,喜欢专研技术问题;同时还是《MongoDB实战》第2版、《24种云计算架构设计模式》的译者。 主要章节: Java为王,长期霸榜 Java永久免费 Java架构互联网公司 转Java架构互联网公司 立即下载
高并发设计主要关注的是系统性能,包括两个部分,1是吞吐量,2是响应延迟。

性能优化目标:
  1. 缩短响应延迟
  2. 提高并发数(吞吐量)
  3. 让系统处于合理状态

并发数、QPS、平均响应时间三者之间关系

 

从上图可以看出,

一开始,随着并发数的增加,资源利用率,吞吐量都是线性增长,逐渐达到一个峰值,响应时间变化不大
随着并发数继续增加,资源逐渐耗尽,没有资源可以再分配,服务器响应时间开始增加,甚至没有响应,吞吐量开始下降

优化手段

1 系统时间是瓶颈 ,利用空间换时间
比如,缓存复用计算结果,降低时间开销,因为时间较内存容量更加昂贵

2 系统大小是瓶颈,利用时间换空间
比如,网络传输是瓶颈,增减系统时间换取传输的空间,使用http的gzip压缩算法。
比如,app的请求分类接口,使用版本号判断哪些数据更新,只下载更新的数据

3 找到系统瓶颈
分析系统业务流程,找到关键路径并分解优化
比如,一个服务集群4w的QPS,调用量前5的接口贡献了3.5w的QPS,对关键路径的代码优化收益最大,当然系统剩下的部分也不能忽视,比如剩下5k的QPS的接口若性能有问题也可能把整体服务性能拖垮优化层次 从整体到细节
1 架构设计层次
关注系统控制,数据流程;
如何拆分系统,如何是各部分系统整体负载更加均衡,充分发挥硬件设施性能优势,减少系统内部开销等;
a)分布式系统微服务化
b)分库分表,读写分离,数据分片
c)无状态化设计,动态水平弹性扩展
d)调用链路梳理,热点数据尽量靠近用户
e)分布式cache,多级多类型缓存
f)容量规划
g)提前拒绝,保证柔性可用
2 算法逻辑层次
关注算法选择是否高效,算法逻辑优化,空间时间优化任务并行处理,使用无锁数据结构等;
a)增量式算法,复用之前的计算结果,比如一个报表服务,要从全量数据中生成报表数据量很大,但是每次增量数据较少,则可以考虑只计算增量数据和之前计算结果合并
b)并发和锁的优化,读多写少的业务场景,基于CAS的lockFree比mutex性能更好        
c)空间换时间;ThreadLocal
d)时间换空间;采用压缩算法,更复杂的逻辑减少数据传输
e)并行执行,比如一段逻辑调用多个rpc接口,而这些接口之间并没有数据依赖,则可以考虑并行调用,降低响应时间
f)异步执行,分析业务流程中的主次流程,把次要流程拆分出来异步执行,更进一步可以拆分到单独的模块去执行,比如使用消息队列,彻底和核心业务流程解耦,提高核心流程的稳定性以及降低响应时间
3 优化代码层次
关注代码细节优化,代码实现是否合理,是否创建了过多对象,循环遍历是否高效,cache使用是否合理,是否重用计算结构等
a)循环遍历是否合理高效,不要在循环里调rpc接口,查询分布式缓存,执行sql等,应该先调批量接口组装好数据,再循环处理
b)代码逻辑避免生成过多对象或无效对象
c)ArrayList,HashMap初始容量设置是否合理,注意扩容代价
d)对数据对象是否合理重用,比如通过rpc查到的数据能复用则必须复用
e)根据数据访问特性选择合适数据结构,比如读多写少,考虑CopyOnWriteArrayList(写时Copy副本)
f)拼接字符串的时候使用String相加还是使用StringBuilder进行append(在StringBuilder的容量预分配的情况下,StringBuilder的性能比String相加高15倍左右)
g)是否正确初始化数据,有些全局共享的数据,饿汉模式,在用户访问前先初始化好
4 数据库代码层次
a)数据库建表语句能尽量小的数据结构,比如表示状态的字段,如状态值在255以内使用unsigned tinyint,IP使用int而非varchar
b)避免使用select *查询数据,只查询需要的字段,避免浪费数据IO,内存,cpu,网络传输
c)分析查询场景建立合适的索引,分析字段的可选择性,索引长度,对长的varchar使用前缀索引
d)字段尽量为not null类型,,mysql手册说明允许null的字段需要额外的存储空间去处理NULL,并且很难查询优化
案例 电商秒杀系统

特点:
a)大量并发,在某一刻99%的用户涌入
b)有效请求数很低,可以认为有效请求和库存一致,可能99%以上的流量都是无效的
c)库存数据一致性要求严格,不能超卖
架构思路
a)数据分层次校验,上层尽量把无效请求过滤掉
b)上层可以是不精确的过滤
c)层层限流,最后一层做一致性校验,扣减库存
架构设计
a)HTML,JS,CSS等静态文件存放CDN,缓存到用户端(APP,浏览器)
b)非实时动态数据(秒杀期间如商品标题,商品描述,图片URL列表,店铺信息,秒杀活动等),这些数据缓存在用户访问链路中靠近用户的位置,粗过滤一部分流量,比如用户是否有秒杀资格,秒杀是否已结束等,这些数据实时性要求不高
c)实时数据如用户营销数据(如红包,折扣),商品库存等再过滤一批用户
d)经过多层过滤,最终落到数据库的流量已经很少,最终再数据库层面使用事务保证扣减库存准确性

 

(新建的群1039047324,欢迎对技术感兴趣的朋友加入,群内可以接私活,聊技术,分享工作中容易踩的坑,以及如何避免踩坑,分享最新架构视频)

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案 本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前... 阅读详情

相关推荐

细胞膜电学特性的分数阶微积分建模

分数阶微积分在细胞膜电学特性建模中的应用主要体现在对细胞膜的电容行为和神经元放电活动的更精确描述上。

冰河世纪20的博客 623

Java高并发处理方案

高并发

weixin_39648907的博客 1万+

CrackerXI+脱壳实战:解决iOS应用逆向中的加密文件问题

本文详细介绍了如何使用CrackerXI+工具对iOS应用进行脱壳,解决App Store应用因FairPlay DRM加密而无法进行静态分析的难题。通过图形化界面一键操作,CrackerXI+能高效获取解密后的可执行文件,为逆向工程奠定基础。文章涵盖工具选型、实战步骤及常见问题排查,是iOS逆向入门与进阶的实用指南。

seed的博客 261

高并发下的网络 IO 模型设计

今天我们先聊一下高并发下的网络 IO 模型设计高并发即我们所说的 C10K(一个server 服务 1w 个 client),C10M,写出高并发的程序相信是每个后端程序员的追求,高并发架构其实有一些很通用的架构设计,如无锁化,缓存等,今天我们主要研究下高并发下的网络 IO 模型设计,我们知道不管是 Nginx,还是 Redis,Kafka,RocketMQ 等中间件,都能轻松支持非常高的 QPS,其实它们背后的网络 IO 模型设计理念都是一致的,所以了解这一块对我们了解设计出高并发的网络 IO 框架具体重

m0_71777195的博客 373

Modscan32连接上了却没数据?一文拆解所有报错(从“Device NOT CONNECTED”到“Checksum Error”)

本文深入解析Modscan32连接异常问题,从状态栏报错到数据异常,提供系统化的诊断思路和解决方案。涵盖物理层问题、配置参数错位、端口占用冲突等常见故障,帮助工程师快速定位和解决Modbus通信中的各类错误。

weixin_30384217的博客 400

java并发编程与高并发解决方案

知识点 线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C,等等 高并发解决思路与手段 扩容:水平扩容、垂直扩容 缓存:Redis、Memcache、GuavaCache等 队列:Kafka、RabitMQ、RocketMQ等 应用拆分:服务化Dubbo与微服务Spring Cloud 限流:Guava RateLimiter使用、常用限流算法、自己实现分布式限流等...

GavinZhera的博客 2万+

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1710

徐汉彬:Web系统大规模并发——电商秒杀与抢购

摘要:电商的秒杀和抢购,从技术的角度来说,会对Web系统产生巨大的考验。本期《问底》,徐汉彬将带大家关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因。 【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。 电商的秒杀和抢购,对我们来说,都不是一个陌...

weixin_30781631的博客 7507

基于Qt的工业组态软件开发:图形绘制与TCP通讯实现

在数据接收时,通过 readyRead 信号触发解析函数,校验数据包完整性后提取有效数据,并更新对应图形元素的状态,例如根据温度值改变矩形的填充色,实现设备状态可视化。测试阶段,我们将软件部署到Windows工控机,连接PLC设备进行通讯测试,结果表明图形元素响应及时,TCP数据传输稳定,满足工业现场的基本需求。综上所述,基于Qt的组态软件开发,核心在于利用 QGraphicsView 框架实现图形元素的灵活绘制与管理,结合 QTcpSocket 完成工业数据的可靠交互。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 273

大模型之Spring AI实战系列(二十一):Spring AI + MCP + 本地文件系统实战指南

在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过 Brave Search 实现了互联网搜索能力的接入。本文将继续深入 Spring AI 的 MCP 实战能力,介绍如何将 **本地文件系统** 封装为 LLM 可调用的工具

寻道AI,探索AI无限可能! 2524

Java处理互联网高并发(专题精讲)

引子: 高并发是互联网应用的一大特点,也是互联网应用不可避免的一个问题;比如 淘宝双11购物狂欢节,京东618购物促销节,12306春节火车票,促销,秒杀等; 解决高并发问题是一个系统工程,需要站在全局高度统筹谋划,从多个角度进行架构设计,在实践中,我们探索、总结和提炼出来了很多应对高并发的方案或者说手段,分别如下: ***A.硬件解决方案: 方式一: 单体应用----单体应用也叫集中式应用; 产...

qq_30347133的博客 788

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,本文的内容接上一篇的代码逐行解析(一) 项目目录分析,本文对于小白来说非常友好,非常推荐大家进行阅读,深度的了解模型的工作原理已经流程,下面我们从yaml文件来讲解。

Snu77的博客 1万+

架构设计内容分享(七十四):互联网高并发设计的手段:架构、算法、代码

● L1缓存容量小负责抗最热点的数据, L2缓存考虑目标是容量,缓存更大范围的数据(一般用户的timeline), 高热点,数据单独缓存,比如设置白名单,大V 的用户数据放在L1缓存。● 增量式算法,复用之前的计算结果,比如一个报表服务,要从全量数据中生成报表数据量很大,但是每次增量的数据较少,则可以考虑只计算增量数据和之前计算结果合并,这样处理的数据量就小很多。● APP的请求分类接口,使用版本号判断哪些数据更新,只下载更新的数据,使用更多的代码逻辑处理更细粒 度的数据。

之乎者也·的博客 1031

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

高并发与高可用知识总结

究竟啥才是互联网架构“高并发” 一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。 响应时间:系统对请求做出响应...

二十同学 5万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【面试】如何设计一个高并发系统?

面试题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发...

田维常 1595

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

5000并发_Java面试常问题:如何设计一个高并发系统?你该如何优雅的回答

面试原题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期...

weixin_39782709的博客 193

高并发数据库系统架构设计与分布式存储优化

面对日益增长的用户需求和技术挑战,构建一个高效稳定的高并发数据库系统需要综合运用多种技术和策略。本文介绍了读写分离、分库分表、缓存机制等架构设计原则,并详细阐述了Sharding、Replication、Load Balancing等分布式存储优化措施。希望这些内容能够帮助开发者更好地应对高并发带来的各种难题。在未来的工作中,我们应当持续关注最新的技术趋势,不断调整和完善现有的架构体系,以满足未来更加苛刻的应用场景。```

2501_90746336的博客 926

高并发?

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:...

li_gong_zi的博客 194

面试题:互联网三高解决思路

互联网的三高架构就是指设计互联网系统架构时需要满足高可用,高性能,高并发

FDXCG_X的博客 2383

高并发搜索引擎Elasticsearch与Solr深度优化在互联网实践分享

集群架构与高可用多节点分片副本、Leader选举机制自动故障检测与索引重建保证高并发稳定索引与写入优化字段选择、分词、批量写入、异步刷新索引合并、压缩、分片路由减少热点查询与负载优化查询缓存、滚动查询、聚合优化热点索引分片与负载均衡提高查询性能监控与工程化闭环写入吞吐、查询延迟、分片状态监控自动化部署、弹性扩容、压测优化形成持续闭环通过合理的搜索引擎架构设计、索引策略、高并发写入与查询优化,以及监控和工程化部署,高并发互联网系统能够实现低延迟、高吞吐、稳定可靠、可扩展。

2501_94114815的博客 855

阿里二面:如何避免超预期的高并发压力压垮系统?

在互联网高可用架构设计中,限流是一种经典的高可用架构模式。因为某些原因,大量用户突然访问我们的系统时,或者有黑客恶意用DoS(Denial of Service,拒绝服务)方式攻击我们的系统时,这种未曾预期的高并发访问对系统产生的负载压力可能会导致系统崩溃。

weixin_50205273的博客 734

从0到1:Java构建高并发、高可用分布式系统的实战经验分享

在面对复杂的分布式系统构建时,不仅需要掌握扎实的技术栈,更要在实践中不断探索与优化,以满足日益增长的业务需求,同时保持对新技术的关注与学习,从而为团队带来更高效、稳定的系统解决方案。

勤于笔记,成于点滴。 1498

网络安全与高并发防护架构在互联网系统中的设计优化与工程实践经验分享

分层安全架构CDN/WAF边缘防护 + API网关 + 数据加密零信任设计提高系统安全性高并发防护策略DDoS防护、限流、熔断、请求验证异常流量检测与自动阻断访问认证与敏感数据保护OAuth2.0/JWT、RBAC/ABAC权限管理数据传输加密与日志脱敏日志监控与持续优化闭环异常检测、告警、审计、优化形成闭环持续迭代提升系统安全与稳定性工程化与高可用设计CI/CD自动化部署多可用区部署、弹性伸缩和容灾机制保证业务连续性。

2501_94114293的博客 615

高并发数据库MySQL/PostgreSQL/NoSQL优化在互联网系统实践经验分享

架构设计与分库分表主从/主主复制、分库分表、NoSQL分布式集群提高高并发读写能力和系统可用性索引与查询优化合理索引、SQL优化、聚合分页优化避免全表扫描和复杂JOIN高并发写入与缓存优化批量写入、异步处理、队列削峰热点数据缓存、读写分离策略监控与工程化闭环QPS、慢查询、锁等待、节点健康监控自动化部署、弹性扩容、压测优化形成持续闭环通过合理的数据库架构设计、索引与查询优化、高并发写入与缓存策略,以及监控与工程化部署,高并发互联网系统能够实现高吞吐、低延迟、稳定可靠、可扩展。

2501_94114711的博客 836

分布式存储与对象存储在高并发互联网系统中的架构优化与工程实践经验分享

架构分层与模块化分布式存储 + 对象存储 + 多级缓存热数据快速访问,冷数据长期归档高并发读写优化并行访问、批量写入、异步写入多副本读写和负载均衡分片与副本策略动态分片与热数据均衡多副本同步与一致性保证可靠性缓存与访问策略热点数据缓存,CDN加速批量请求和Range请求优化吞吐工程化与监控闭环自动部署、扩容与迁移监控、告警、日志分析形成持续优化闭环通过合理的数据分片与副本策略、高并发读写优化、多级缓存与访问策略、容灾备份和工程化监控,分布式存储与对象存储在高并发互联网系统中能够实现。

2501_94114332的博客 550
上一篇: java基础一点也不基础
下一篇: 服务负载均衡设计与实践
微服务架构
博客等级 码龄10年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值