高并发系统的艺术:如何在流量洪峰中游刃有余

目录

摘要

前言

单机维度

2.1 多线程和异步方法的误区

2.2 多线程能够解决高并发场景么

多机维度

  垂直维度

4.1 数据库

4.2 业务应用

理论和实战兼得

5.1 小试牛刀

5.2 循序渐进

5.3 大显身手

总结


来源:高并发系统的艺术:如何在流量洪峰中游刃有余

摘要

针对“三高:高并发、高可用、高性能”需求中的高并发问题的解决思路和实战:

思路

单机,即单节点维度

1、硬件维度:提升单机能力,CPU、内存等;提升网络带宽;

2、代码维度:适当内存缓存,提升接口性能;合理使用线程池;JVM调优,减少fullgc;尽量使用异步方法;

多机,即多节点维度

1、负载均衡集群,水平扩展,单体服务按领域划分成多个子领域服务每个子领域系统单独承担各自的流量;

2、分布式服务,降级、熔断、限流、超时&重试机制;

垂直维度

1、业务应用:增加分布式缓存;消息队列、异步化流程;业务逻辑优化;

2、数据库:分库分表;SQL优化、增加索引、优化查询;异构存储介质、读写分离

怎么评估各个服务的节点数

1、根据评估流量大小,及往常经验该流量下CPU、内存使用情况,评估业务应用节点数及配置;

2、mysql (单节点几千最大并发数)、redis(单节点几万最大并发数)预估需要多少节点及配置:mysql和redis的最大连接数-CSDN博客

3、新系统,需要明确目标流量下能力目标,并按设定的配置进行目标流量的压测测试,找到瓶颈点,代码该优化的优化,优化差不多了,还是不行,则需要加配置,加节点,再进行压测,直到满足预设能力目标,比如可用性T99等;

实战

抽奖、秒杀、促销降价抢购、热点新闻事件等高并发场景;

针对库存扣减场景:

采用Redis预减库存,MQ异步更新Mysql数据库;

当Redis单key扛不住并发时,采用分片将库存分配到多个子Key进行扣减,通过发片调度服务进行负载均衡到某个发片上,将并发分散,即分而治之;

MQ也不是立马就发,而是到达一定的数量和时间再批量发送MQ,减轻MQ发送端和消费端的并发量;

上述手段是参考:Kafka、ES的实现原理来做的。

前言

我们经常会说互联网“三高”,那什么是三高呢?我们常说的三高,高并发、高可用、高性能,这些技术是构建现代互联网应用程序所必需的。对于京东618备战来说,所有的中台系统服务,无疑都是围绕着三高来展开的。而对于京东庞大的客户群体,高并发的要求尤为重要。用户对在线服务的需求和期望不断提高,系统的并发处理能力成为衡量其性能和用户体验的关键指标之一。高并发系统不仅仅是大型互联网企业的专利,对于任何希望在市场中占据一席之地的公司来说,能够处理大量并发请求的能力都是至关重要的。

高并发系统的设计和实现是一个复杂且多层次的过程,涉及到硬件资源的合理利用、系统架构的精心设计、并发控制技术的应用以及性能调优等多个方面。无论是电商平台在大促期间应对突发流量,还是社交媒体在热点事件发生时的流量激增,抑或是金融系统在交易高峰期的平稳运行,都需要一个高效、稳定、可扩展的高并发系统作为支撑。

接下来我通过一张思维导图展开我的分享,帮大家梳理一下一个高并发系统所需要考虑的技术点。

图片

02 

单机维度

在单机维度上, 我们一般分为硬件维度和代码维度两个方向考虑。硬件维度比较简单,就是提升单机的硬件性能和网络带宽。而代码维度,则是在高并发系统架构设计时,最容易被大家忽视的,尤其是现在大量的互联网架构师脱离一线研发并进化成PPT架构师的今天,单机维度基本不在考量范围。

但不积跬步无以至千里,有的时候单机接口的的性能优化,会带来很高的经济成本价值。在代码维度,我这里重点介绍一种情况,关于多线程和异步方法。

2.1 多线程和异步方法的误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值