高并发是什么?
⾼并发(High Concurrency)是互联⽹分布式系统架构设计中必须考虑的因素之⼀,它通常是指通过设计保证系统能够同时并⾏处理很多请求。
高并发属性和因素
⾼并发相关常⽤的⼀些指标有响应时间(Response Time),吞吐量(Throughput,eg. RPS),每 秒查询率 QPS(Query Per Second),并发⽤户数等。
- 响应时间(RT) :系统对请求做出响应的时间。例如系统处理⼀个 HTTP 请求需要 200ms,这个200ms是系统的响应时间。
- 吞吐量:单位时间内处理的请求数量。
- QPS:每秒响应请求数。在互联⽹领域,这个指标和吞吐量区分的没有这么明显。
- 并发⽤户数:同时承载正常使⽤系统功能的⽤户数量。例如即时通讯系统,同时在线量就****代表了系统的并发⽤户数。
高并发容错技术
高并发容错技术主要是指在高并发场景下的技术实现和解决如何在发生错误的场景下,仍然可以保证系统可以正常运行的技术手段和设计实现方案。
雪崩效应
如何容错
- 超时
- 限流
- 舱壁模式
断路器
断路器转换示意图
断路器
组件名称 | Hystrix | Sentinel | Resilience4J |
---|---|---|---|
超时机制 | 线程池模式有timeout | 暂时支持的不好 | 通过限时器实现,此外也有线程池模式 |
限流 | 采用线程池和信号量限流 | 采用信号量机制限流 | 采用线程池和信号量限流 |
仓壁模式 | 采用线程池模式实现隔离 | 暂时支持的不好 | 采用线程池模式实现隔离 |
断路器 | 采用了开关进行模式 | 暂时支持的不好 | 采用了开关进行模式 |
异步化
本地调⽤异步化
- 创建⼀个线程,将耗时操作放到独⽴的线程中执⾏【不建议使⽤】
- 使⽤线程池创建线程
- @Async注解(尽量把@Async注解标注的⽅法,独⽴到⼀个类⾥⾯去,防⽌this调⽤导致⽆效)
线程池要⾃⼰指定⼀下⼤⼩,防⽌⾼并发场景下内存溢出