上一篇,笔者概括介绍了一下对于流量治理的三板斧操作;本篇文章笔者主要来介绍下流量的常见特点,所谓知己知彼百战百胜,我们只有了解了流量的特点,特别是他们存在的挑战,我们才能更好的治理流量。
针对流量而言,长期的流量不均,流量的响应延迟过高,瞬时的流量过大,以及流量本身内容的不安全,是我们平时治理流量的时候,不得不面对的问题,并且这些问题往往会对我们的产品产生很大的影响和冲击。
下面笔者整理一个流量特点介绍的详细树图,方便大家参考:
针对流量不同的特点,我们就需要采用不同的方法和手段来进行处理和解决。
1.流量不均问题
通常的解决方案是负载均衡策略,这里包括随机,轮训,hash,最慢响应耗时几种方式,而负载均衡的方式除了关注这些算法之外,还需要关注负载均衡的流量粒度是什么,比如全部流量,还是很细粒度的例如:http的path粒度,因为不同的粒度流量的均衡策略会让产品有更细粒度的管控。
现在的产品有很多是基于全局流量来做的,这就导致了某一类的流量在某一台设备上面过于集中,进而影响产品的处理。
如果上述几种负载均衡策略还是不能满足你的流量需求,特别是流量中夹杂着某一类耗时很久的特殊流量的情况,这就需要构建流量反馈机制,让负载均衡和后端服务进行配合,通过反馈机制做自适应调节,对负载均衡进行实时调节来达到目的。
2.流量响应耗时过大问题
这类问题的关键点是需要识别出来耗时热点在哪里。
如果是在网卡,网络传输速率上面,升级设备即可解决;
如果是在网络链路跳数过多上面,需要优化网络链路,例如使用cdn的动态加速功能。
如果是网关类产品问题,例如:clb,ng,业务网关等,可以考虑扩容或者替换成更高级的产品。
如果是业务服务问题,可以考虑扩容、优化,或者在网关层面添加限流功能,按照流量特性配置不同的限流值,让业务在一个能承受的范围内。当然也可以在业务服务上面实现降级,例如:流量优先级丢弃策略,在流量超过限制之后,选择性丢掉一些优先级不高的流量。
3.瞬时流量过大问题
这类问题,首先要识别流量特征,是可以丢弃的,还是不可以丢弃的。
可以丢弃的话,例如:秒杀场景,秒不到就算了,这一类的流量,直接使用topn队列,或者令牌环限流就可以满足条件,如果希望有一定随机性的话,可以采用按时间进行随机丢包的玩法来搞。
不可以丢弃的话,削峰是首要选择,采用消息丢到消息队列的方式,让后端业务慢慢消费就好了,当然如果有时间限制的话,可以设置流量的超时时间。如果上报流量的客户端也是自己开发的话,可以做个闭环设计,在客户端做下流量过滤和聚合来减少无效流量的上报,不过这种玩法取决于对客户端的定位。
4.流量安全问题
这类问题取决于流量安全的类型,是攻击型,爬虫类还是管制类。
基本策略就是引入安全设备做防御,筛选和识别,例如:防火墙,反爬产品,风控产品,甚至可以接入鉴权类产品对流量做认证。
上面这些是笔者根据自己的经验和知识做的一个简单介绍和讲解,如果有读者还有其他场景需要补充,欢迎大家私信我。
灰子做于2022-9-27日,公众号:灰子学技术