●● 序 ●●
从2014年4月写下Go语言版本BFE的第一行代码起,7年多的时间过去了。从2015年1月Go语言版本BFE全量上线开始,BFE至今已经在百度稳定运行了6年多的时间,每天转发请求超过万亿次。
BFE(Baidu Front End,百度统一前端)是百度统一七层流量转发平台,当你访问百度的时候,很可能已经在使用BFE的服务了。
百度的BFE团队始建于2012年。当2012年年底我加入百度的时候,整个团队只有6~7个人。这个团队的创始人是夏华夏同学(现在在美团),他为BFE团队的工作方向做了奠基性规划。BFE初期的转发引擎是基于C语言的,听说是杨震原同学(现在在头条)的大作。
2014年年初,基于各种考虑,我们决定对转发引擎进行重构。这次重构前后花费了3个季度,投入了超过30个人月的资源。在面对多次失败的风险后,Go语言版本的BFE终于出炉了。
这里必须感谢部门领导李硕和团队经理贺锋的大力支持,感谢管理层的高度信任;感谢直接参与的几位同学(李炳毅、魏为、杨思杰、陶春华等),大家都是冒着失败离职的风险,硬着头皮把这个项目做下来的。
我必须要感谢百度。到目前为止,我仍然坚定地认为,百度是中国最适合做技术的公司。百度给了工程师最大的尊重和自由,也愿意为了技术研发承担最大的风险。BFE团队的另一个项目GTC(全局流量调度),前后研发了5年时间。曾经有一个朋友告诉我,也就只有百度可以给团队这么多的时间,如果在其他公司,一年内做不出来,项目很可能就被取消了。能够在百度、在中国做全球最领先的技术,我感到无比骄傲。
2019年7月,BFE的转发引擎对外开源。项目名称仍保留英文缩写BFE,英文全称更名为Beyond Front End(中文意为“超越前端”)。我们希望通过BFE的开源推动负载均衡技术的发展。
从开源的那天起,BFE就已经开始了新的征程。BFE得到了各方的广泛关注,有不少新增的功能是由百度之外的开发者贡献的。BFE也被一些客户选择用于关键的业务场景,在度小满金融、央视网、招商银行等处都有BFE的身影。作为一个做技术的人,能够让自己所做的工作为社会创造价值,这是莫大的幸福和荣幸。
在BFE开源后,我们不断地收到大家提出的一些问题。网络负载均衡本身是一个比较专业和复杂的技术方向;BFE是为面向工业级使用场景而设计的,在模型和机制上和其他同类软件相比,会更加复杂。以上这些因素让一些使用者和开发者在理解BFE的机制方面遇到了困难。希望通过这本书,能够帮助读者更好地了解网络负载均衡的相关技术,让读者更容易地理解BFE的设计机制和使用方法。
BFE项目,是一群技术人的汗水、梦想和追求。
BFE开源,是为了交流、共享,为全中国、全世界的同行赋能。
感谢各位读者的关注,欢迎大家使用BFE开源项目,并提出反馈或参与开发!
章淼 博士
百度BFE团队技术负责人、百度代码规范委员会主席
2021年6月25日写于百度
● ●前 言● ●
●为什么要写这本书●
网络负载均衡技术已经存在了很多年。无论是商用的硬件负载均衡器,还是免费的Nginx、HAProxy等开源软件,都已经被业界使用多年。随着云计算技术的蓬勃发展,我们又迎来了重新定义负载均衡系统的时机。
作为一个现代的七层负载均衡软件,BFE在2014年基于Go语言编写,在百度内部每日处理的请求超过1万亿次,并于2019年年初成功支持了百度“春晚红包”项目。BFE于2019年7月对外开源,并于2020年6月被云原生计算基金会(CNCF)接受为“沙盒项目”。
BFE是学术、技术和工程相结合的产物。从2015年开始,笔者已经围绕BFE对外做过多次技术分享,在BFE开源项目的官网上也有一些说明文档。但是,对于BFE的原理、设计和实现机制仍缺少系统、全面的资料,这给相关同行了解和使用BFE带来了困难。
为此,笔者整合了BFE开源项目的相关资料和自己的研发心得,希望能够通过这些内容帮助读者理解BFE的原理、实现机制和使用方法。
●如何阅读本书●
本书面向的读者包括计算机网络方向的研究者、网络相关技术的开发者、一般后台程序的开发者、负载均衡系统的使用者等。
本书分为四部分。
第一部分为原理篇,包括第1章至第3章,介绍BFE开源项目的概貌,并对BFE所涉及的网络前端接入和网络负载均衡的技术原理做简要介绍。
第二部分为设计篇,包括第4章至第8章,说明BFE开源项目的设计细节,包括BFE的设计思想、BFE的转发模型、与转发相关的关键机制、运维相关机制、HTTPS的优化等。
第三部分为操作篇,包括第9章至第13章,说明如何安装和部署BFE、如何在各种使用场景下配置BFE。
第四部分为实现篇,包括第14章至第17章,从处理流程、插件机制、协议实现等方面说明BFE的实现机制。
●勘误与支持●
由于笔者水平有限,书中难免会出现一些错误,恳请读者批评指正。如果您有宝贵的意见和建议,请发邮件到BFE-OSC@baidu.com,期待和您进一步深入交流。
●致 谢●
首先,感谢百度公司和百度的各位同事,为BFE的诞生和发展创造了良好的环境,本书的完成离不开大家的支持和鼓励。
然后,感谢BFE开源社区的贡献者和参与者,感谢CNCF,BFE开源项目的发展源于大家的关爱和支持。
最后,诚挚地感谢电子工业出版社的滕老师等工作人员,依靠大家的鼓励和幕后支持,才有了本书的出版。