目录
摘要
针对“三高:高并发、高可用、高性能”需求中的高并发问题的解决思路和实战:
思路:
单机,即单节点维度:
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架构师的今天,单机维度基本不在考量范围。
但不积跬步无以至千里,有的时候单机接口的的性能优化,会带来很高的经济成本价值。在代码维度,我这里重点介绍一种情况,关于多线程和异步方法。

1006

被折叠的 条评论
为什么被折叠?



