文章:https://cloud.tencent.com/developer/article/1770301
视频:https://www.bilibili.com/video/av201782294/
从大佬的分享中学到了很多,对比我司的搜索架构对比总结一下
可用性
我司的ES集群是阿里云购买的中小规格集群,可用性一言难尽。
限流
经常出现由于某个查询导致集群CPU内存都飙升,为此我们的采用的就是视频中大佬提到的第一种限流。
我们是开发了一套es的代理服务,在代理中做限流、权限限制等,但是限流效果并不好,而且实现起来很复杂,需要对查询和索引的数据量进行分析,正如大佬所说,这种方案的限流只能简单的控制流量的数量,但对流量占用的资源却无法准确的估计,因此我们的集群还是会时不时的有资源占用率告警,可能差的只剩一根稻草。。。
第二种原生的方案,其实就是基于线程池,也是无法对资源进行管控。
大佬分享的第三种限流方案,是一种补充方案,即在原生的基础上,增加了对资源的控制,这可以很好的防止集群被打垮。这种方案其实也适用于我们一般的应用服务,一般的应用服务限流,其实也是基于线程漏斗模型的,如果可以结合资源的使用情况进行限流,则是更优的。