高并发限流(一)——简介
2016-07-24 18:39
288 查看
本系列章节内容参考自聊聊高并发系统之限流特技-1
1.背景
一般解决高并发问题的时候有三种策略,缓存、降级和限流。缓存比价简单,为了提高访问速度,因为从缓存中读取效率都比较高。比较常见场景就是后面挂一个mysql或者其他类型的db,然后中间嵌套一层redis缓存,有的甚至会加一层本地的二级缓存来进一步提高读写速度。缓存面临的问题是——数据一致性。
降级是为了保护更核心的服务,把一些没那么核心的服务停掉,等访问高峰期过了,或者相关系统问题解决之后再打开之前关闭的服务。
有些场景无法用上述两种手段来解决,比如稀缺资源——秒杀,抢购,比如写服务——评论,下单,频繁的复杂查询——评论的最后几页。解决上述类似问题可以采用限流的措施。
2.常用场景
高并发系统常见的限流模式有这么几种。1.限制总并发数
数据库连接池,线程池,redis连接池。如果总并发数超过了已有资源的数量,对于数据库或者redis会报拿不到连接的异常,线程池会reject。
2.限制时间窗口内的平均速度
guava的RateLimiter,nginx的limit_req模块,限制每秒的平均速率。
3.其他
限制远程接口调用速率,限制MQ的消费速度,根据网络连接数(httpclient设定的连接数),网络流量,CPU或者内存负载来限流。
相关文章推荐
- R语言数据基本类型与操作
- 图形界面(GUI)
- 最新ps cs6序列号 永久免费可用
- cc2530操作任务系统初始化分析
- POJ2492 A Bug's Life 并查集
- 我常用的 C++ 读写锁
- 项目报Unable to process Jar entry [...........] from .........
- 正规函数
- C#:网络通信(TCP)
- 常用算法时间复杂度和空间复杂度表
- Oracle/Sun JDK与OpenJDK的区别和联系
- jsp在Servlet下载图片和远程加载Servlet上的图片
- 家谱处理
- 热血军团-targetFrameRate
- POJ3668 Game of Lines
- 二分法查找数组中元素
- 总结OpenWrt系统基本操作方法
- HTML之布局position理解
- 利用Python实现简单的相似图片搜索
- 浅谈安卓中的MVP模式