-
Notifications
You must be signed in to change notification settings - Fork 1
限流处理
Liu Zhongchao edited this page Sep 5, 2015
·
1 revision
- 服务器由于受限于自身处理的能力,在连接的请求不断加大到一定程度的时候,服务器服务就会越来越差劲
- 限流的目的就是针对在请求超过一定范围的时候,通过限制超额流量的访问,来使得服务器仍然可以提供较好的服务
在 csutil 的体系中,由于工作线程有多个,这里的限流策略可以有两种:
- 整体限流:所有工作线程共用一个限流策略,这样做的好处是能够对服务器进行整体把控,即当整体的请求超过一定范围后,所有的线程都会同时进行限流;坏处是:所有的线程必须要通过锁机制来保证同步
- 局部限流:每个工作线程都有自己的限流测试,这样做的好处是各个工作线程之间相互独立,不用进行加锁同步;坏处是:每个线程只能够控制自己线程内的请求,可能会导致某些工作线程已经限流而其他工作线程仍然空闲的状态;
针对上述两种处理方式,考虑到线程之间尽可能减少同步机制,保证每个工作线程都可以高效地工作,以及当某个工作线程的请求已经超标而其他线程仍然空闲的情况,客户端可以通过减少请求或者重新创建连接进行访问的方式来获取服务器服务,因此选择 局部限流的策略