万亿级流量转发:BFE核心技术与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.1 BFE转发引擎重构的缘起

百度 BFE平台最早于2012年年初上线并使用,那时的转发引擎主要基于一个名为 Transmit的内部系统,Transmit基于 C语言实现,是“多进程+Libevent”的模型。到了2013年年底,百度产生了重构转发引擎的想法,主要原因有如下几方面。

(1)平台化的需要。在 BFE平台上线初期,只有十多个业务线使用它。而到2013年年底,已经扩展至几十个业务线了。原有的系统中没有多租户机制,不易做多业务的配置管理。另外,配置的格式是非结构化的,不易使用程序来生成和处理;原来系统的配置热加载机制也比较复杂。

(2)降低网络协议栈的维护成本。Transmit中的 HTTP协议栈是百度自研的,我们在使用过程中发现了一些协议一致性方面的细节问题,维护成本较高。另外,在2013年年底,百度已经启动了对 HTTPS的调研,需要在转发引擎上增加对 HTTPS的支持。网络协议栈是反向代理系统的重要模块。从长期来看,维护完全自研的网络协议栈的成本很高。

(3)状态监控能力欠缺。一个工业级水平的转发系统需要有很强的状态监控能力,Transmit原有的监控信息较少,而且增加新的监控状态也比较困难。

(4)转发配置的维护难度较高。Transmit的转发配置主要使用正则表达式来描述。在实践中,我们发现正则表达式存在可维护性方面的问题。

2014年年初,百度确定基于 Go语言来重构 BFE转发引擎,并于2014年4月开始编写代码,2014年年底完成开发,2015年年初 Go语言版本的转发引擎在百度完成全量上线。