在线引流的离线环境是一般要求,广泛应用于功能测试、压力测试等场景,字节跳动基础架构技术迭代演进之路,线上流量引流线下环境是单个通用需求,广泛应用于功能测试、压测等场景,本文介绍了引流系统在字节跳动的发展过程和系统设计,期望能给众人带来一点新的思虑和收成。
通过三个方面讲解
本文将从业务场景、系统架构和问题分析三个方面介绍字节码复制系统的演进过程,构建基于TCPCopy的第一代引流系统2.1,业务需求在开始时比较简单,即业务端部署完目标服务(HTTP和RPC)后,引流系统可以复制转发相应线路上产生的流量,整个引流过程可以灵活控制,只在需要流量的时候才开始。
主路复制和旁路复制
从引流本身来看,引流系统选择主要分为两种,主路复制和旁路复制,我们分别分析一下这两种模式的优缺点,主回路复制指的是调用链中的流量复制,优点:可以高度组合业务逻辑,实现细粒度的定制流量复制,比如只能复制某个用户的流量,这样可以最大化对引流源的有效流量收集率,缺点:业务逻辑和引流逻辑高度耦合,功能相互影响,每个请求都需要额外的引流处理,这会对业务流程产生性能影响。
旁路复制的特点
例如,在服务网格中,流量是根据染色标记复制的,与主路复制相比,旁路式复制突出了服务无意识的特点,引流模块可以独立部署和升级,服务端无需关注引流功能的实现;通过在协议栈底部复制流量,性能更好,缺点在4层网卡级别捕获网络数据包后,仍然需要对数据包进行重组和解析。
选择核心基础
开源解决方案TCPCopy虽然Linux提供了libpcap等底层的包捕获库,但我们选择开源TCPCopy作为整个引流系统的核心基础,目的是为了快速交付业务需求,这里就不介绍TCPCopy了,下面只附上一个简单的架构图,其中TCPCopy和Intercept是TCPCopy的两个组件,对相关细节感兴趣的同学可以自行查找数据。
本文暂时没有评论,来添加一个吧(●'◡'●)