高并发读写优化方案

简介: 系统优化方案与高并发读写优化方案,及其优缺点。

优化方案分析

​ 对于一个系统而言,想要综合性提高并发能力,一般采取的都是下面3种方案:

  • 提高单机并发:减少接口的RT(Response Time),提高单个接口的响应速度。
  • 服务水平扩展(水平复制):将高频服务多部署几台,借助负载均衡提升整体性能
  • 做好服务保护:并发提升的情况下,服务的高可用更要保障,做好服务熔断、降级保护措施
    小提示:
    比如当前系统较慢,排查的方法可以从前端-缓存-后端(业务代码/线程池/sql索引)入手。
    具体的优化可以从提高单机并发/服务水平扩展入手。

    高并发读优化

  • 增加缓存:优先查缓存,缓存也可以有多种集群架构,可用性也进一步提升
  • 优化Java代码:同步查询多个接口可以变成异步(CompletableFuture接口),多线程
    • for-rpc/http
      • 假设有一个接口:User queryById(Long userId)
      • 接口调用方:for (Long userId : userIds) {queryById(userId)}
      • 解决方案:让接口提供方提供一个批量操作(CRUD)接口
    • for-db
      • insert:for:save
      • update:for updateById
      • delete: for removeById
      • 解决方案:batch操作-mybatis-mp-sql
  • SQL优化:创建简单索引,涉及多字段的创建聚合索引

高并发写优化

  • 优化Java代码:单线程变多线程写、批量写操作
  • 同步变异步:发个MQ、或者定时任务轮询写
    高并发写(1).jpg
    • 优点
      • 无需等待,大大减少响应时间。
      • 利用MQ存储信息,流量削峰填谷
      • 降低写频率,减少数据库并发压力
    • 缺点
      • 依赖MQ/定时任务可靠性
      • 只是降低频率,没有减少数据库写次数。
  • 合并写请求:所有请求,适用于新增、更新、删除逻辑
    合并写优化(2).jpg

    • 优点
      • 写缓存速度更快,大大减少响应时间
      • 真正有效降低数据库写频率和写次数,减轻数据库并发压力。
    • 缺点
      • 实现复杂
      • 依赖缓存中间件可靠性
      • 不支持事务和复杂业务
目录
相关文章
|
9天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
27天前
|
运维 监控 Kubernetes
高并发来了,运维别慌:如何优化运维流程,才能稳住阵脚?
高并发来了,运维别慌:如何优化运维流程,才能稳住阵脚?
53 4
|
9天前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
3月前
|
缓存 监控 Cloud Native
Java Solon v3.2.0 高并发与低内存实战指南之解决方案优化
本文深入解析了Java Solon v3.2.0框架的实战应用,聚焦高并发与低内存消耗场景。通过响应式编程、云原生支持、内存优化等特性,结合API网关、数据库操作及分布式缓存实例,展示其在秒杀系统中的性能优势。文章还提供了Docker部署、监控方案及实际效果数据,助力开发者构建高效稳定的应用系统。代码示例详尽,适合希望提升系统性能的Java开发者参考。
164 4
Java Solon v3.2.0 高并发与低内存实战指南之解决方案优化
|
3月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1015 7
|
4月前
|
数据采集 Web App开发 监控
如何用Pyppeteer打造高并发无头浏览器采集方案
本文从电商行业数据采集痛点出发,结合 Pyppeteer 高并发无头浏览器技术,打造可配置代理的高效采集方案。通过爬虫代理突破 IP 限制,模拟真实用户行为,实现 Amazon 特价商品数据的稳定抓取与分析。代码示例详细展示了代理集成、并发控制及数据处理流程,实验验证效率提升超 4 倍。该方案助力商业决策、竞品分析,并支持技术扩展与创新应用。
175 13
如何用Pyppeteer打造高并发无头浏览器采集方案
|
4月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
351 3
|
11月前
|
存储 监控 固态存储
在高并发环境下,如何优化 WAL 的写入性能?
在高并发环境下,如何优化 WAL 的写入性能?
170 2
|
8月前
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
231 1
|
9月前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案

热门文章

最新文章