查看原文
其他

写在 百度万亿流量转发引擎BFE开源 之际

Editor's Note

本文写于2019年11月。BFE于2019年7月底开源,于2019年11月正式对外官宣。

The following article is from 章老师说 Author 章老师说

BFE正式宣布开源了!


BFE是什么?

想用几句话解释清楚不容易。

BFE是百度的统一七层流量转发平台,每天转发流量请求接近1万亿。

当你访问百度的时候,很大可能已经在使用BFE的服务了。

关于BFE的详细介绍,可以查看 百度统一前端平台 - 技术面面观 (点击文章下方的“阅读原文”可以查看视频版)


BFE有什么特点?

最大的特点就是基于Go语言来编写。

在这个领域,最著名的开源软件是NGINX,但那是用C语言写的。BFE是全球第一个将Go语言用于大规模网络接入转发的案例。

BFE为啥要用Go语言呢?可以查看 关于Golang的一些思考


2015年,我在美国举行的Velocity大会上见到了Go Team的PM Jason Buberel, 他听到BFE的故事后,兴奋的和BFE的海报合影留念。2016年,我在美国旅游,在一个工作于Google的朋友的家中闲聊。他提到,“听说百度有一个团队Go使用的规模很大”。我回答,那就是我所在的BFE团队呀。


BFE是怎么诞生的?

BFE团队始建于2012年。这个团队的founder是夏华夏同学(现在美团),目前BFE团队的很多工作方向还是沿着华夏的规划在前进。这里面还要感谢杨震原同学(现在头条),虽然没有直接合作,但是BFE的第一版代码是基于震原的大作。下面这张照片是BFE早期成员的合影,其中大多数小伙伴都已经不在BFE团队了,但是他们所做的贡献会一直随着BFE的品牌延续下去。

亲爱的小伙伴们,非常想念你们!


开源版本的BFE是怎么诞生的?

刚才刚念了震原的好,但2015年后,BFE已经全面使用基于Go语言重构的版本了。2014年,基于各种考虑,我们开始了BFE的重构。前后花费了3个季度,投入了超过30个人月的资源,经历了多次失败的风险后,Go版本的BFE终于出炉了。
这里必须要感谢李硕的大力支持,感谢管理层的高度信任。感谢直接参与的几个同学,大家都是冒着失败离职的风险,硬着头皮把这个项目做下来了。
这里我还必须要感谢百度。无论外人如何评说,我必须要说,到目前为止,我仍然坚定的认为,百度是中国最适合做技术的公司。百度给了工程师最大的尊重和自由,也愿意为了技术研发承担最大的风险。BFE团队的另一个项目GTC(全局流量调度),前后研发了5年时间。曾经有一个朋友告诉我,也就只有百度可以给这么多时间,在其它公司1年做不出来就cancel了。能够在百度、在中国做全球最领先的技术,我感觉无比骄傲。



什么是BFE的理念?

有太多人只关心那些漂亮的系统,却不关心这些系统是如何被设计出来的。

这里,我想说,BFE团队是靠一系列的科学而系统的方法论来工作的。


下面这段话是我放在BFE招聘启示里作为前言的,或许可以说明BFE的理念。


如果你的人生目标是成为Jeff Dean那样的技术专家,那么你正是BFE团队想要寻找的人      

                                       

在这个浮躁的时代,BFE团队相信只有宁静才能致远。只有对技术足够痴迷,你才能抵挡无数的诱惑、到达一般人无法企及的境界                  

- 相比“码农”,BFE团队寻找的是真正的Software Engineer(SE)。对真正的SE来说,30岁只是开始,写代码只是无数的必备素质之一                

- 在这个普遍看重KPI的时代,BFE团队最看重寻找和培养人才。只有一流的精英才能创造出最精彩的产品和技术                  

- 在这个普遍看重结果的时代,BFE团队最看重过程。如果没有正确的方法,成功只有偶然                

- 在这个普遍加班的时代,BFE团队只需要975。努力工作,更需要聪明的工作。平衡了工作和生活,会更有创造力                  

                                  

BFE团队相信,在中国也可以做出和美国一样顶级的技术。


结语

BFE的开源只是一个开始。

七年,一群人的汗水、梦想和追求;

未来,路还长。

开源,是为了交流、共享,为全中国、全世界的同行赋能。



欢迎有兴趣的同学和我们联系,BFE开源专用邮箱 bfe-osc@baidu.com。

BFE开源项目地址:https://github.com/bfenetworks/bfe






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存