高并发系统的解决思路与思路

高并发系统的艺术:如何在流量洪峰中游刃有余 思路单机,即单节点维度1、硬件维度:提升单机能力,CPU、内存等;提升网络带宽;2、代码维度:适当内存缓存,提升接口性能;合理使用线程池;JVM调优,减少fullgc;尽量使用异步方法;多机,即多节点维度1、负载均衡集群,水平扩展,单体服务按领域划分成多个子领域服务每个子领域系统单独承担各自的流量;2、分布式服务,降级、熔断、限流、超时&重试机制;垂直维度1、业务应用:增加分布式缓存;消息队列、异步化流程;业务逻辑优化;2、数据库:分库分表;SQL优化、增加索引、优化查询;异构存储介质、读写分离。 阅读详情

转自https://blog.youkuaiyun.com/Q3838418/article/details/81988598

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。

高并发系统设计原则

1. 做得少,一方面是指在功能特性上有所为,有所不为,另一方面是指一次处理的信息量要少。 
2. 做得巧,根据业务自身的特点,选择合理的业务实现方式,选择合理的缓存类型和缓存调用时机。

1.扩容

 

根据业务系统的类型,考虑不同的针对在数据库方面的扩容:

-读操作扩容

-写操作扩容

2.缓存

手段

主要是Redis、CDN、浏览器等,其次可能存在的一些问题如下:

2.3可能存在的问题

2.3.1一致性

缓存一致性的话,主要可能考虑到以下几种可能导致一致性问题:

2.3.2缓存并发

由于并发时大量请求瞬间涌入,那么在建立或修改缓存时(还没完成),就可能已经打到DB或老缓存上了,造成雪崩或缓存一致性问题

解决方案:

锁机制

2.3.3缓存穿透

缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

解决方案:

最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

2.3.4雪崩

缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。

解决方案

大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。这里分享一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

3.消息队列
做到了大量请求异步与解耦,比如下单与短信验证码请求 的处理,及早返回处理。

比如远程调用较慢,可以用消息队列攒一堆去完成调用。

 

基于消息的模型,等通知即可,而不是处理(那是RPC),以及索引库更新,只是一个通知,而不是强完成(重量级),只是通知而不是职责所在(比如上游系统对下的通知)。

仅仅最终一致性。

 

需求场景

及一些非核心业务或者多个对象、数据量小时,而

相比RPC框架(dubbo等),RPC场景是需要 强一致性、对延迟敏感、注重结果立马返回、重量级

4.应用拆分
SOA 微服务等

个人看法,原则是:

1.业务是否适合拆分,拆分后耦合度不能高

2.是否需要拆分,拆分是为了高并发高可用,是否解决了高并发热点问题?

5.应用限流
比如股票系统中,收盘后,你有几百万数据需要入库了,如果不做限流,瞬间将会把带宽全部打满,其它服务暂时GG或者主从延迟很大等等问题。
--------------------- 
作者:词汇族 
来源:优快云 
原文:https://blog.youkuaiyun.com/Q3838418/article/details/81988598 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南 本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。 阅读详情

相关推荐

SPAD单光子雪崩二极管:从基础原理到前沿应用

本文深入解析SPAD单光子雪崩二极管的基础原理、硬件实现关键及核心性能参数,并探讨其在激光雷达、量子通信和生物医学成像等前沿领域的创新应用。SPAD凭借超高灵敏度和精确的时间分辨率,正在推动自动驾驶、量子技术和医学诊断等领域的革命性发展。

weixin_30335575的博客 663

redis高并发下的处理考勤打卡数据

背景 最近公司用户量上来了,因此,对考勤打卡的瓶颈也就越发明显。每到打卡高峰期,公司APP就打开很慢,甚至服务开挂。针对这些问题,检查服务器发现,原来是考勤接口并发上来不停请求数据库导致的CPU剧增。因此,升级了服务器,提升了配置,但是还是不能抗住压力。因此,自己百度发现redis是个好东西,可以做缓存数据库,缓解mysql压力。因此,写下这篇文章。 主要运用 - 1.redis:h...

摩尔小哥 2834

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤)

本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。

pear55的博客 865

打卡系统统计

题目 在XX的工时打卡计算系统中,一个工作日的定义是由工作当日当天的凌晨03:00:00开始,到隔天凌晨03:00:00(不包含)为止。这其中,工作日当天的中午12:30:00到下午14:00:00(不包含)为午休时间,不计入工作时间。Tom由于工作繁忙,担心自己有时候会忘记打卡,因此他每次经过打卡机到时候都会不由自主地打一次卡。为了更好的了解自己的工作情况,Tom找到了自己整个八月份的乱序打卡...

nongfusanquan_2015的博客 597

离心泵级间导叶的设计计算

离心泵级间导叶的设计计算高速离心泵级间流道的作用是将第一级复合叶轮流出的高速液流收集起来并送入第二级复合叶轮。级间流道的设计应考虑降低液体的流速,实现动能向压力能转化,减小液体的水力损失。级间流道主要有蜗壳形流道和导叶两种结构形...

cqzc55322的博客 2566

FFT中的精度博弈:定点数缩放、块浮点与溢出处理在Vivado IP核中的实践权衡

本文探讨了在Vivado FFT IP核中实现高精度快速傅里叶变换的关键技术,包括定点数缩放策略、块浮点模式及溢出处理机制。通过分析不同精度控制方案的资源开销与性能权衡,为工程师在医疗成像、雷达信号处理等高动态范围应用中优化FFT实现提供实践指导。

melon的博客 1097

Java项目中高并发问题的简单解决方案

1、尽量使用缓存技术来做。用户缓存,页面缓存等一切缓存,使用特定的机制进行刷新。利用小号内存空间来换取用户的效率,同时减少数据库的访问次数。2、把数据库的查询语句进行优化,一般复杂的SQL语句就不要使用ORM框架自带的做法来写,采用自己来写SQL,例如hibernate的hql中的复杂语句就会很耗时。3、优化数据库的表结构,在关键字、主键、访问率极高的字段中加入索引。但尽量只是在数字类型上面加,因...

qq_24963285的博客 7684

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 564

高并发系统设计 --基于bitmap的用户签到

设置值,value只接受0或者1 setbit key offset value # 获取值 getbit key offset # start和end非必填,不写的话,查询的是key里面含有value=1的总共有多少个 bitcount key [ start ] [ end ]

qq_61039408的博客 1604

手把手教你学simulink实例--基于Simulink的船舶发电柴油机建模与健康状态研究

船舶发电柴油机是现代船舶电力系统的核心设备,为船舶提供稳定的电能供应。然而,由于长期运行在复杂的海洋环境中,船舶发电柴油机容易受到磨损、腐蚀和疲劳等损伤的影响,导致其性能下降甚至发生故障。因此,对船舶发电柴油机进行建模和健康状态监测具有重要意义。本项目旨在使用MATLAB/Simulink平台,建立船舶发电柴油机的动力学模型,并通过仿真分析其健康状态,预测潜在故障,从而提高船舶运行的安全性和经济性。

MHD0815的博客 1325

智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线

目录前言基本扫线(除了进入环岛状态或者坡道或者十字路口的普通扫线)基本数据和初步特征进一步特征提取1、计算并且显示前n行左右线各丢失数目(不break和break的都有)2、计算左右线方差(以右线为例)【a】计算右线曲率(选三个点:r_start、中点、break点)【b】如果右线曲率在一定的范围,就进行右线拟合,从空白行开始计算斜率,否则则从0行开始计算 前言 图像大小185*70,通过扫线获取.........

hanhan的博客 3万+

[转]优化高并发的常见十种解决办法

大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗 CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。对于大部分公司,会选择廉价有效的方法扩展整个系统的架构,来增加服务器的吞吐量和处理能力,以及承载能力。普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻底解决性能问题。的话,很有可能会死在那儿了。

Admans的专栏 695

按角色定制同一张 Fiori 画面:一篇讲透 SAP Fiori UI Adaptation for Roles 的版本、优先级、视图迁移与安全边界

摘要:SAP Fiori应用中常见的问题并非功能缺失,而是同一应用被不同岗位用于不同工作流时导致界面难以满足各方需求。SAP的"角色适配UI"机制允许在不修改后端逻辑或创建新应用的情况下,为不同角色定制界面呈现。该机制包含多套界面适配方案,按用户角色自动匹配显示,同时保持统一的应用入口。实施时需注意:适配方案与原始应用共享版本管理;需设置"默认界面层";多角色用户通过优先级机制确定显示方案;界面隐藏不等于权限控制,数据安全仍需后端保障。该方案能有效解决跨岗位的界面适配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 147

针对高并发系统的解决思路与方案

总体上: 开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。 1.扩容 根据业务系统的类型,考虑不同的针对在数据库方面的扩容: 2.缓存(特别重要) 缓存设置的地方 手段 主要是Redis、CDN、浏览器等,其次可能一些问题 2.3可能存在的问题 2.3.1一致性 缓存一致性的话,主要可能考虑到以下几种可能导致一致性问题: ...

一些学习的记录,主要做个人知识总结整理 5744

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

秒杀 系统 解决思路,高并发 Django性能介绍

介绍秒杀 正常电子商务流程 查询商品;2. 创建订单;3. 扣减库存;4. 更新订单;5. 付款;6. 卖家发货 秒杀业务的特性 低廉价格;2. 大幅推广;3. 瞬时售空;4. 一般是定时上架;5. 时间短、瞬时并发量高; 秒杀的特点 读多写少 缓存 高并发 限流、负载均衡、缓存、异步并发(消息队列中间件)、队列 资源冲突(超卖) 数据库锁(乐观锁,悲观锁)、 分布式锁(redis、zk) 所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是网络商家为促

海里鱼的技术博客 1645

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

系统高并发解决思路

系统高并发解决思路: 统集群化 数据库方面的分库分表 + 读写分离 针对读多写少的请求,做缓存操作 针对写多读少的请求,做MQ中间件集群

好人兄的博客 285

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

高并发系统的常见挑战与解决思路

场景优化前优化后提升率请求延迟2s50ms97.5%↓系统吞吐量5 万/秒10 万+/秒100%↑故障恢复时间>5 分钟<30 秒90%↓1. **提前规划容量**:压测评估峰值流量,预留足够资源。2. **分层治理流量**:通过限流、降级、熔断保护核心服务。3. **异步解耦**:减少实时调用链路,提升系统弹性。4. **监控与告警**:实时监控关键指标,快速响应异常。

nihao2q的博客 536

高并发Web系统架构解决方案的几点思路

每一次面对公众的应用系统宕机,背后都是被白白消耗无数社会资源的代价,是多么痛的领悟。 对于需要应对高并发流量的每一个IT系统应用,这都是一个巨大而艰难的挑战。 根据我们经历过的电商双十一,平台型应用等多个流量高度集中场景,一般没有经过优化的系统都极容易出现性能瓶颈,在多个项目的实践积累中我们总结研发了一套应对高并发web系统架构,下面聊聊我们在应对高并发web方面的一些解决思路,欢迎交流

skybehind 3044

秒杀系统的设计思路(应对高并发,超卖等问题的解决思路)

用户通过前端请求获取秒杀地址的path。后端根据用户信息、商品ID等生成动态的秒杀地址。将生成的地址通过加盐的加密算法处理,存入Redis缓存中,建立用户ID和商品ID的关联。用户提交秒杀请求时,携带path参数,后端根据前端请求的URL获取path,再与Redis缓存中的地址进行比对,判断请求的合法性。通过这种方法,成功防止了用户通过直接请求秒杀地址进行恶意操作,保障了秒杀活动的公正性和安全性。

w_l666的博客 1757

秒杀系统架构优化思路(高并发解决)

实现功能思路: 使用消息队列进行任务的添加和取出,定义对应的函数,使用多任务(多线程/进程)进行处理,整体采用生产者和消费者的模式进行功能的架构设计,进行限流、削峰、缓存、异步处理。 数据冲突问题解决: 对于冲突数据,使用数据库乐观锁的方式来解决,读取数据时,记录数据,增删改时进行判断值是否在此期间被其他人进行修改 访问优化解决: 对于高访问的数据使用redis进行缓存,相关页面使用页面...

惊乀鸿 547

浅谈高并发的一些解决思路

中国互联网发展状况统计报告》指出,截至2020年6月,我国网民规模已经达到9.40亿,较2020年3月年增长3625万,除了如此庞大的用户基数,如今人们接入互联网的方式也越来越多样,小到智能手表,手机,大到笔记本,汽车,这也意味着实际使用互联网服务的entry point正以亿级的增长速率膨胀。也就是基于如此规模急剧扩大的环境下,服务厂商开始面临着两大压力,一个是更大的并发访问压力,一个是海量数据存储的压力。高并发问题是各大平台必须解决的问题之一,它关系着平台可以承担多大的用户量以及能否提供可靠的服务。

诗酒趁年华 1873
下一篇: Java intern() 方法
tobecoder0539
博客等级 码龄9年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值