Neptune
Neptune copied to clipboard
流量控制设计
背景说明
系统需要做一个流量控制, 针对一些使用场景下, 对服务的保护、对服务的限制 需要从外部流量入口着手
思路
因为目前RPC的设计是应用级别提供服务的, 所以设计限流做到服务级别的限流即可
目前系统设计有
- provider processor 层, 这一层基本上解析完成了消息, 可以在这里进行限流行为
- 需要考虑后续 processor是会有自己的一套线程池的, 所以这里统计请求数量, 需要在多线程统计
- 限流算法应该需要做到 多种限流的支持, 分布式限流这个目前倒是没有很大必要, 服务的自我保护做好即可,其他交给上层lb
拓展性
- 限流应该是个全局的 拦截器, 但是这个拦截器最好支持用户重写 或者 增加 postprocessor 的功能, 一些场景下用户需要进行流量监控上报
- 如果用户想要自定义呢? SPI + 接口抽象需要有的