BFE:面对网络接入挑战的应对之道

2020 年 3 月 15 日 InfoQ

网络用户爆发式的增长,要求网络接入必须能快速响应各种层面的需求,如访问加速、接入高可用、安全防攻击等。在 2019 年的春晚红包活动中,BFE(Baidu Front End, 百度统一前端)稳定处理了海量用户请求,同时极大降低了对后端服务的压力,保证了活动的顺利进行。

实际上在 2019 年 8 月 BFE 转发引擎就已在 GitHub 上开源。截止今天 Star 已高达 3.2K,我们不妨一起来回顾一下这个项目。首先奉上 GitHub 开源地址:https://github.com/baidu/bfe

BFE 引擎已在 GitHub 开源

BFE 在百度网络接入架构中是如何部署的呢?

百度的网络接入架构

上图为百度的网络接入架构图,其中包括关键系统:GTC(外网流量调度系统,负责将来自各地的流量分配至合适的外网带宽出口),BGW(百度自研的四层负载均衡系统),BFE(七层负载均衡系统),GSLB(内网流量调度系统,可以在内网实现集群粒度的跨机房、跨集群的流量调度)。

设置 BFE 的主要目的是:一方面,支持网络资源统一管理,尤其是是带宽资源,在统一管理后可以进行深度优化。另一方面,实现功能的统一开发,配置和策略也可以统一上线。

可以看到,BFE 的主要功能包括:

  • 流量接入:提供多种协议支持(HTTP/HTTPS/HTTP2/QUIC 等)

  • 流量分发:基于 HTTP Header,支持丰富语义、各种规则组合的流量分发机制

  • 安全防攻击:提供应用层防火墙(WAF)、应用层 DDoS 攻击防御

  • 数据分析:提供多维度的数据报表,用于分析用户分布、服务状态、网络状态

  • 流量采集和调度:为上文提到的调度系统 GTC / GSLB 提供流量数据,并为 GSLB 提 供调度执行能力

为什么 BFE 在解决这类问题上面能力突出?

首先, 更高的安全性和稳定性。BFE 完全基于 Golang 开发 。相比于基于 C 语言开发的同类软件(如 Nginx),BFE 不存在缓冲区溢出这样的安全隐患,且可以针对异常进行精细的捕捉,可尽量避免服务程序的整体崩溃。其次,更高的研发效率。同样基于 Golang 相对于 C 的优势,对 BFE 进行功能扩展开发,研发效率提高数倍。最后, 完善的平台化解决方案。BFE 是包含运维管理、流量调度、安全和防攻击、数据统计等功能的完整解决方案,BFE 已经成功实现百度之外的商业化落地。

目前 BFE 转发引擎已在 GitHub 上开源,主要功能包括:

  • 主流的接入协议支持,如 HTTP(S)、SPDY、HTTP/2、WebSocket、TLS

  • 基于请求内容的路由,包括 BFE 独特而强大的“条件表达式”(Condition Expression) 能力。多种负载均衡策略包括 BFE 的多层级负载均衡模型,及过载保护能力

  • 灵活的模块框架,开发者可以方便的基于这个框架、开发扩展功能

  • 丰富的监控探针,相比于同类开源软件 BFE 面向金融级企业场景,内置了丰富详尽的监控指标

BFE 平台全景

目前 BFE 开源版本的功能还相对简单 ,据悉未来将围绕接入协议、转发协议、证书密钥管理等多方面对功能进行完善,以更好的满足各类使用者的需求,同时加强与其他主流开源软件 (如:k8s、gRPC、Prometheus 等) 的对接,更好的融入开源生态。

BFE 高效开源大赛交作业领奖品啦

一转眼 BFE 大赛开赛 3 个多月啦,比赛还未结束,欢迎各位童靴积极报名参赛!

TOP 20 提交代码的团队,团队成员将会获得小度音响一台哟!

大赛详情

报名链接

如今已进入赛事的第一波高潮,报 bug、提 feature,改文档~赛程还有半年。欢迎同学们的积极贡献!来自佛山科技学院的团队率先提交了代码。百度将会为该团队成员分别寄送小度音响一台!据小童鞋反馈,BFE 的代码可读性非常强拥有简洁清晰的代码结构,易于进行的模块开发。

此次参加开源大赛收获颇丰,愉快的阅读了 n 多 RFC 文档,熟悉了参加开源项目的流程速成了 go 语言。屏幕前的你,是不是也想好好学习,天天向上呢?那么,快来参加 BFE 开源大赛吧!

登录查看更多
0

相关内容

社区检测的深度学习:进展、挑战和机遇
专知会员服务
45+阅读 · 2020年7月9日
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
33+阅读 · 2020年7月5日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
122+阅读 · 2020年5月22日
大数据安全技术研究进展
专知会员服务
90+阅读 · 2020年5月2日
《人工智能2020:落地挑战与应对 》56页pdf
专知会员服务
195+阅读 · 2020年3月8日
【大数据白皮书 2019】中国信息通信研究院
专知会员服务
133+阅读 · 2019年12月12日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
91+阅读 · 2019年11月13日
【LinkedIn报告】深度自然语言处理的搜索系统,211页pdf
专知会员服务
105+阅读 · 2019年6月21日
阿里巴巴全球化架构设计挑战
InfoQ
35+阅读 · 2019年11月25日
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
防代码泄漏的监控系统架构与实践
FreeBuf
5+阅读 · 2019年4月30日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
A Survey on Bayesian Deep Learning
Arxiv
60+阅读 · 2020年7月2日
Arxiv
99+阅读 · 2020年3月4日
Paraphrase Generation with Deep Reinforcement Learning
Arxiv
6+阅读 · 2018年2月24日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
社区检测的深度学习:进展、挑战和机遇
专知会员服务
45+阅读 · 2020年7月9日
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
33+阅读 · 2020年7月5日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
122+阅读 · 2020年5月22日
大数据安全技术研究进展
专知会员服务
90+阅读 · 2020年5月2日
《人工智能2020:落地挑战与应对 》56页pdf
专知会员服务
195+阅读 · 2020年3月8日
【大数据白皮书 2019】中国信息通信研究院
专知会员服务
133+阅读 · 2019年12月12日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
91+阅读 · 2019年11月13日
【LinkedIn报告】深度自然语言处理的搜索系统,211页pdf
专知会员服务
105+阅读 · 2019年6月21日
相关资讯
阿里巴巴全球化架构设计挑战
InfoQ
35+阅读 · 2019年11月25日
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
防代码泄漏的监控系统架构与实践
FreeBuf
5+阅读 · 2019年4月30日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
相关论文
A Survey on Bayesian Deep Learning
Arxiv
60+阅读 · 2020年7月2日
Arxiv
99+阅读 · 2020年3月4日
Paraphrase Generation with Deep Reinforcement Learning
Arxiv
6+阅读 · 2018年2月24日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员