我们在落地过程发现社区版本envoy延迟、资源消耗较大,在一些大扇出复杂场景下,流量劫持带来的延迟上涨接近5ms,cpu消耗占比20%以上,无法满足厂内在线业务高吞吐、低延迟场景。我们分析evnoy底层模型,本质原因是envoy 是一个单进程多线程的libevent线程模型,一个event-loop只能使用一个核,一个回调卡住就会卡住整个线程,容易产生高延时,导致吞吐长尾控制能力比较差。
我们基于envoy扩展接口扩展envoy的网络模型&线程模型,引入brpc底层高性能的bthread协程模型 。在我们内部简称高性能brpc-envoy版本。同时我们打通pilot,实现原始libevent和brpc-thread在线切换,用户可以非常方便自助选择开启高性能模型。备注:brpc 百度内部c++ 高性能rpc开源框架,内部数几十个产品线再使用,实例数有数百万规模优品拍拍
测试下来结果,相比开源社区版本和MOSN(蚂蚁自研已开源)等业界框架, CPU降低60%+,平均延迟降低70%+,长尾延迟平均降低75%+,性能大幅领先业界,彻底解决社区版envoy无法满足大规模工业高性能场景的问题,为大规模落地mesh扫清障碍。
同时我们正在调研ebpf、dpdk等新技术,进一步降低延迟和资源消耗。目前测试下来ebpf相比本地lookbackip转发性能有20%的提升,dpdk相比内核协议栈有30%的性能优化空间(在绑核条件下)。