Please enable JavaScript.
Coggle requires JavaScript to display documents.
高并发处理 High Concurrency Handling - Coggle Diagram
高并发处理
High Concurrency Handling
1 Traffic Splitting 分流
1 LB - 基于负载均衡的分流
2 CDN - 动静分流
3 DNS - 基于地理位置的分流
2 Cache
3 Down Grade
4 Limiting - 限流
Rate Limiter - 令牌桶
单机 - 可以用Guava来实现,也可以自己试着写一个来实现
分布式 - 可以用Redis来实现,因为redis的单线程特性可以保证分布式并发环境下的一致性
有一个独立的线程来定时的进行计数器+1操作,模拟令牌生成
服务每次获取令牌时将计数器-1,如果计数器为0则进行限流操作
Leaky Bucke - 漏桶
单机 -
分布式 - mq
计数器限流
通常用来进行单位时间内访问数量的限流,例如微信,支付宝,银行API的访问限流
实现
采用一个有过期时间的计数器,过期时间大小等于时间窗的大小,每次到达过期时间后将计数器归零
可以用redis来实现,redis的操作是单线程的,天然线程安全,而且支持设置ttl
Redis中要达到最好效果的需要结合lua脚本来实现,这样可以避免时间窗临界点更新计数器时的同步问题。lua脚本可以将技术器+1和过期后归零并重新设置过期时间变成原子操作