百度智能云章淼:详解企业级七层负载均衡开源软件BFE

百度开源项目BFE-BFE总览 BFE学习笔记 阅读详情

随着云计算和云原生的发展,七层负载均衡得到了越来越多的关注,同时也出现了很多不同的解决方案。BFE是基于Go语言编写的七层负载均衡开源软件,在2020年6月被CNCF接受为“沙盒项目”,成为中国第一个网络方向的CNCF开源项目。

2022年7月27日,在由开放原子开源基金会主办的“2022开放原子全球开源峰会”上,百度智能云资深研发工程师、BFE开源项目发起人章淼带来了《BFE:企业级七层负载均衡开源软件》的主题演讲。

BFE在百度的应用

对于企业来说,流量转发服务实际就是把服务高效地交付给终端用户。

上图展现了百度是如何将BFE用于整个流量转发的,有四道主要的系统。

  • 全局流量调度系统GTC:在网络入口对外网流量进行调度,基于DNS生效;

  • HTTPDNS:支持移动域名解析;

  • BGW:四层负载均衡;

  • BFE:七层负载均衡,支持多机房集群粒度的流量调度。

负载均衡技术的发展趋势

用软件替代硬件

使用软件替代硬件这件事情在互联网公司已经发生了超过十年的时间,但很多传统的行业还在大量使用硬件设备。当前,硬件所提供的负载均衡功能,可以用软件全部实现,相比之下硬件并不占优势。那软件有什么好处呢?

  • 降低成本;

  • 可快速升级功能;

  • 云原生化,可快速扩缩容。

从系统到服务

现在的企业都在使用开源软件,但并没有形成统一的云化服务。很多企业对于每个独立的业务都搭建了独立的开源软件集群,有的甚至达到上百套,对于这样的庞大数量,该如何有效地做运维成为难题。

为此,我们做了多次实验,最终在内部实现了基于BFE搭建的平台型的服务,实现了从负载均衡系统升级到流量转发服务,同时支持多用户模型,实现资源共享,降低维护成本。

加强七层处理能力

百度非常重视七层处理,很多企业没有统一的七层转发,只有四层,这对流量的控制能力是非常弱的。当前很多流量是加密的,而四层处理无法看到这些流量特征。

通过建立统一的七层负载均衡,能够在企业层面增强流量控制能力、增强数据分析和洞察能力,进而提升整体服务质量。

加强流量调度能力

当前云原生的发展如火如荼,微服务化后,服务的数量会呈爆炸性增长,这就对应用路由的能力提出了更高的要求。此外,当前企业的场景变得越来越复杂,具有多个数据中心、多个容器云集群,那么容器云之间如何进行流量调度是一个非常关键的问题。

BFE:为企业级场景而设计

BFE是针对与百度类似的复杂企业级场景而设计的,它具有以下四个特点。

稳定是负载均衡的第一需求,但当前很多工程师认为性能是最关键的,我想说这个观点是错误的。与K8s相比,Go语言在安全性、稳定性及研发效率方面具有极大的优势,可以大大降低内存管理的风险、捕捉异常。

BFE具有良好的插件设计,同时Go语言代码具有易于编写和维护的特点,这都利于功能在后期进行快速开发。

BFE内置多租户设计,具有强大的路由转发模型,支持多数据中心调度支持。

写出负载均衡的软件并不难,如何保证7x24小时的高效运维才是难点所在。对此,BFE提供一些系统支持,如内置大量状态探针、支持配置无损动态加载等。

  • 高安全性和稳定性

  • 功能快速开发

  • 复杂场景支持

  • 运维友好支持

BFE的路由转发模型

如上图所示,该场景有三个数据中心,每个数据中心内都有BFE服务(S1)存在,请求的转发共有以下四个步骤。

demo.baidu.com => demo

/static => S1

=> S1-3

=> S1-3_1

  • Step 1:确定租户(tenant)

  • Step 2:确定集群(cluster)

  • Step 3:选择子集群

  • Step 4:选择实例(instance)

在确定服务或者集群时,BFE也提供了转发机制。

  • 基础转发表针对请求中的Host和Path字段进行匹配,这是一种高效的树型查找;

  • 高级转发表使用BFE独特的条件表达式,相比传统的正则表达式,它的可读性得到了极大的提升。

七层负载均衡生态对比

近年来,七层负载均衡的生态非常繁荣,有四大主流生态。

Nginx /OpenResty生态

  • OpenResty是对Nginx的一种扩展,可以利用Lua语言对Nginx功能做扩展;

  • 代表项目:

    Nginx、OpenResty、Kong、APISIX;

  • 特点:性能高、开源生态强,但稳定性、开发效率、转发延迟较低。

Envoy生态

  • Envoy是基于C++开发的七层开源软件,已经成为Service Mesh中Sidecar网关的重要候选系统;

  • 代表项目:Envoy;

  • 特点:性能高、开源生态强,但稳定性、开发效率、转发延迟较低。

Go语言生态

  • 代表项目:FFE、Traefik、Tyk;

  • 特点:稳定性、开发效率、开源生态强,但性能、转发延迟低。

Rust语言生态

  • 专注于Service Mesh方向,包含使用Rust语言开发的七层负载均衡软件;

  • 代表项目:Linkerd;

  • 特点:性能、稳定性高,但开发效率、开源生态弱,转发效率低。

BFE和Nginx对比分析

Go生态

优势:

  • 相比于Nginx和Envoy,Go生态在安全性、稳定性、研发效率方面都有碾压性优势;

  • 相比于Rust生态,Go生态在开发效率和开源生态方面有明显优势。

劣势:

Go生态在性能和长尾延迟方面有弱点。(注:长尾延迟对于用于一般场景无影响,但阻碍部分场景如实时交易,可以通过增加CPU资源来缓解。)

BFE和Nginx的性能对比

  • HTTP转发场景 : 极端场景下

BFE : Nginx = 1 : 5

  • HTTPS转发场景 : BFE配合RSA硬件加速卡

BFE(加速卡): Nginx(纯CPU)= 1 : 1

综合成本对比分析

场景假设:HTTP转发,100w QPS容量(已是很大规模的企业)

硬件成本对比:

  • BFE需要50台服务器,Nginx需要10台服务器;

  • BFE硬件成本每年增加92万元(单台服务器年度折旧为1.3万元,上架成本为1万元,BFE方案多用40台服务器)

人力成本对比:

对于一家具有100w QPS容量的公司,使用Nginx至少需要5名综合成本60万元以上的工程师,而是用BFE只需要2名。这意味着,BFE方案每年节省人力成本180万元以上。

机会成本对比:

  • 和Nginx相比,BFE出现稳定性和安全性问题的概率更低;

  • BFE可实现功能快速交付,和Nginx相比,交付周期缩短至4%。

结论:BFE的综合成本优于Nginx。

BFE对Kubernetes的支持

在K8s集群之内,BFE可以作为Ingress,且BFE Ingress已于2021年10月开源发布。

在K8s集群之外,BFE可以作为全局负载均衡器。

BFE控制面已经于2021年10月开源,为用户提供更完整可用的BFE开源产品,具有以下三个组件。

  • API Server:提供API接口,负责BFE配置的变更、存储和下发;

  • Dashboard:管理控制台,用于BFE集群的可视化管理;

  • Conf Agent:配置加载组件,从API Server获取最新配置,触发 BFE 进行配置热加载。

Q&A

Q:BFE在将来会不会考虑提供WebAssembly插件?

章淼:这是一个很好的问题,明确地说BFE不会支持。Nginx之所以要增加这种支持,原因在于它的底层开发成本太高了。但BFE使用Go语言,开发成本已经足够低,我们并不需要去引入Wasm来降低成本。同时,引入Wasm会带来稳定性降低的风险,这和我们要将稳定性、安全性放在第一位的原则是相悖的。

百度-章淼-百度万亿流量转发平台背后的故事.pdf 百度万亿流量转发平台背后的故事 项目背景简介 – BFE平台 • BFE团队理念 • 项目研发的指导思想 • 研发过程的管控 • 文档,代码,项目管理 • 研发和运维的一体化 • 提升工程能力的意义 立即下载

相关推荐

Tecplot进阶:巧用公式与多Frame对比,实现CFD多工况数据差异的可视化分析

本文详细介绍了如何利用Tecplot进行CFD多工况数据差异的可视化分析,通过公式计算和多Frame对比,实现变量差值自动计算、多视图同步展示和差异量化统计。文章还提供了数据准备、基础操作、实战技巧和常见问题解决方案,帮助工程师高效完成CFD后处理工作。

weixin_29227425的博客 526

流量入口的下一代架构:从 Nginx 到 BFE

Nginx和BFE代表的是两种不同的架构理念。Nginx 解决的问题是:一个应用如何高性能地对外提供服务。而 BFE 解决的问题是:一个公司如何稳定地管理所有业务的流量入口。 随着互联网架构不断演进,流量入口正逐渐从单一组件演变为平台级基础设施。当系统规模从“单个业务”演进到“平台级服务”时,流量入口的设计也必须随之升级。

weixin_52406291的博客 482

PR控制以及使用PR控制用于单相离/并网逆变器

最近想学习一下并网逆变器,需要用到PR控制,全网找遍了许多学习资料,终于掌握的差不多了,在此做个记录,以及个人对PR(Proportional Resonant)控制的理解。在去年7月准备电赛的时候偶然看到有几篇讲解数字滤波器,第一次接触传递函数离散化,深刻被数字时代的数字方式折服,改改代码,就可以实现不同的截至频率,甚至不同阶数,而模拟方式还要改元器件。当时就感觉这玩意太他妈牛逼了,很想学懂它,奈何学不会呀。后面全身心做电赛,就忘了这事儿。直至最近学习PR控制,当初的感觉又回来了,一股劲儿吃下来了。

xht2403267701的博客 3万+

技术选型实战|BFE vs Nginx

BFE是基于Go语言编写的七层负载均衡开源软件,诞生于2014年。2020年6月,BFE被CNCF(Cloud Native Computing Foundation,云原生计算基金会)接受为“沙盒项目”(Sandbox Project),成为中国第一个网络方向的CNCF开源项目。BFE已经在百度大规模使用多年,每天转发超过万亿的请求;BFE也被度小满、央视网、招商银行、...

极客重生 1697

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3682

推荐:BFE —— 超越前端的现代七层负载均衡器

推荐:BFE —— 超越前端的现代七层负载均衡器 BFE,源自百度的一款现代化的七层负载均衡解决方案,现已成为云原生计算基金会(CNCF)的沙箱项目。它不仅提供数据平面的服务转发功能,还具备全面的控制平面管理工具,为企业级的流量管理和微服务架构带来强大的支撑。 项目介绍 BFE系统由数据平面和控制平面两部分组成: 数据平面 包括BFE Server,负责基于内容的路由决策,执行负载均衡,并将用户...

gitblog_00051的博客 700

YOLO26改进策略【多YAML融合】| UNetV2 + BiFormer + WIoU

Wise-IoU是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。

Limiiiing的博客 218

探索BFE:百度开源的企业级边缘接入网关

是百度开源的一款企业级边缘接入网关,其设计目标是为云计算、物联网(IoT)和互联网应用提供高效、安全的流量管理和控制。本文将深入探讨BFE的技术特性和应用场景,帮助您理解如何利用它来提升您的服务质量和安全性。 ## 项目简介 BFE是一个高性能、高可用性的网络代理服务器,它可以在网络边缘处理大量的HTTP/HTTPS请求,实现负载均衡、路由转发、访问控制等功能。通过自定义插件机制,BFE可以灵...

gitblog_00088的博客 828

[xboard-real6410]39 real6410中的BL1和BL2实验及流程分析

文章目录uboot控制uboot 流程uboot加载kernel uboot控制 uboot 流程 uboot加载kernel

鹰之翔 297

基于SAHI算法优化YOLOv8的小目标检测性能研究

SAHI(SliceAwareHyperInference)是一种推理优化算法,通过将大图切片为小块并分别推理的方式,实现更精细的小目标检测。提升小目标检测精度:切片后的小目标在每个小块中占比更大,模型能够更好地聚焦。兼容性强:可直接集成到现有目标检测框架中(如YOLO系列、Detectron2等)。支持大分辨率图片和视频推理:减少硬件对大图推理的限制。本文详细探讨了如何通过SAHI(切片辅助超推理算法)结合YOLOv8模型,有效提升小目标检测性能,尤其是在高分辨率图片和视频场景中表现优异。

博客 2368

2021 WAIC大会「AI 时代的云原生」系列活动

转发一则活动消息,欢迎新老朋友一起来交流。2021年世界人工智能大会一触即发,各项筹备工作已经陆续接近尾声。2021 WAIC大会“AI 时代的云原生”系列活动议程正式官宣,“AI 时代...

亨利笔记 722

【固态变压器(SST)全维度解析】发展历史、技术、玩家、挑战与数据中心趋势

SST正处于技术突破向规模化商用的关键过渡期,随着SiC/GaN器件降价、标准完善、可靠性数据积累,其在数据中心的渗透率将快速提升。短期(2025 - 2027年)以示范项目为主,中长期(2030年后)有望成为超大规模智算中心的主流供电方案。

昔时扬尘处 2127

2022 GopherChina 出品人及演讲内容揭晓(三)

出品人简介章淼百度资深研发工程师,1994年进入清华大学计算机系学习,2004年博士毕业,之后留校任教至2006年。1997年至2006年在清华大学从事互联网协议和网络体系结构的研究。2006年至2012年在搜狗、腾讯等多家公司从事用户产品的研发工作。2012年加入百度,一直从事网络基础架构的研发工作,是BFE开源项目的发起人。个人著作包括《万亿级流量转发:BFE核心技...

Go中国 522

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

为什么BFE可以取代Nginx

BFE是基于Go语言的七层负载均衡开源软件。本文将说明,BFE在安全性、稳定性、研发效率和综合成本等方面都明显优于Nginx,可以完美的取代Nginx。

weixin_52406291的博客 7860

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

BFE:构建下一代互联网接入平台的创新之路

BFE:构建下一代互联网接入平台的创新之路 项目介绍 BFE(Beyond Front End),由百度倾力打造并开源的企业级七层负载均衡系统,正引领着云时代网络架构的革新。作为CNCF沙盒级别的项目,BFE不仅体现了百度在技术领域的深厚积累,更彰显了其致力于推动行业进步的决心。无论是大型企业还是初创公司,BFE都将成为构筑高效、可靠网络服务的理想选择。 项目技术分析 技术亮点:全面支持前沿通信协...

gitblog_00494的博客 540

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BFE:百度开源的现代化七层负载均衡器完全指南

BFE(Beyond Front End)是百度开源的现代化七层负载均衡系统,作为CNCF(云原生计算基金会)沙箱项目,它提供了完整的流量接入和负载均衡解决方案。🚀 ## 什么是BFE? BFE是一个基于Go语言构建的企业级七层负载均衡器,支持HTTP、HTTPS、SPDY、HTTP/2、WebSocket、TLS、gRPC、FastCGI等多种协议,能够满足现代微服务架构下的复杂流量管理需

gitblog_00863的博客 1189

我们重写了七层流量代理BFE的路由转发机制

BFE路由转发模型如下图所示。以http请求为例,当请求到达BFE时,BFE首先根据请求域名确定租户(哪个业务线),再根据请求的路径确定集群(服务/微服务),然后确定子集群(机房),最后负...

吴就业 622

React Native Elements房产应用:房源展示界面设计终极指南

React Native Elements是一个强大的跨平台React Native UI工具包,它为开发房产应用提供了丰富的组件库。本文将为你展示如何利用React Native Elements快速搭建专业的房源展示界面,让你的房产应用在用户体验上脱颖而出!🏠 ## 为什么选择React Native Elements开发房产应用? React Native Elements提供了完整的

gitblog_00646的博客 792

深入解析BFE:百度开源的现代化七层负载均衡器

深入解析BFE:百度开源的现代化七层负载均衡器 BFE(Beyond Front End)是百度开源的高性能七层负载均衡系统,于2019年加入CNCF沙箱项目。作为百度内部核心基础设施,BFE承载着搜索、地图、网盘等关键业务,日均处理万亿级别请求。本文深入解析BFE的项目背景、技术架构、核心特性及在云原生环境中的应用场景。 BFE项目背景与CNCF沙箱项目介绍 BFE(Beyond Front E...

gitblog_00820的博客 677

如何用doccano构建高质量AI数据集:从数据标注到模型训练的全流程指南

还在为机器学习项目的数据标注而烦恼吗?🤔 面对海量文本、图像、语音数据,如何高效构建高质量的训练数据集,是每个AI工程师和研究者都会面临的挑战。今天,我将带你深入了解doccano这个开源标注工具,探索如何用它构建专业级AI数据集,将数据准备时间缩短70%以上。 ## 为什么你的AI模型表现不佳?数据标注质量是关键瓶颈 在AI项目开发中,数据标注往往是最耗时、最易出错的环节。传统标注方式存在

gitblog_00437的博客 575

BEF情况简单介绍

1.BEF情况简单介绍: BFE是基于百度统一接入前端(Baidu FrontEnd)开源的七层流量接入系统。BFE基于Golang构建,基于请求内容路由,高级负载均衡,支持丰富的接入协议。 2.相关术语: (1)产品线(Product):即为BFE中的"租户"。BFE中的配置,比如转发策略、权限等,是以产品线为单位来进行设置的。 (2)集群(Cluster):具有同类功能的后端的集合定义为一个集群。一个产品线中可定义多个集群,一个集群的范围可能跨越多个IDC。 (3)子集群(Subcluster):集群又

qq_41723667的博客 2747

CDN基于谷歌开源Katran四层负载均衡方案的应用 - 原理篇

CDN作为一种分布式缓存加速服务,对于访问量级大的区域,单个节点带宽建设一般可达百Gb量级,对外配置虚拟IP提供服务,节点内部需要通过多层负载均衡(LB)将请求分发到内部的若干台服务器进行处理。一般情况下,我们使用LVS作为四层负载均衡(L4LB),使用Nginx作为七层负载均衡(L7LB),节点配置如图。 传统的L4LB需要对每个入站数据包进行处理,其性能决定了访问延迟和后端服务器扩展性,主要包括下面组件: VIP通告:该组件与L4LB前面的网络元件(通常是交换机)对等互联,向外界通告L4LB负责

wjnforever的博客 3126

BFE 初探

概述什么是 BFE?一起来看下官方介绍。BFE(Baidu Front End)是百度的一款开源的应用负载均衡产品,目前已接入百度大部分流量,每日转发请求接近1万亿,峰值QPS超过10...

新亮笔记 6423

BFE:百度开源的现代七层负载均衡器,已加入 CNCF 沙箱

BFE是百度开源的现代化七层负载均衡器,已加入CNCF沙箱项目。其核心由数据面和控制面组成,支持多种协议和负载均衡策略。BFE的特色包括基于DSL的灵活路由、插件化架构和丰富的监控指标。项目提供Docker和Kubernetes快速部署方式,并出版了《深入理解BFE》技术书籍。采用Apache 2.0协议,开发者可通过CNCF Slack或微信社群参与。

helantech463的博客 342
上一篇: 华东师范大学副校长周傲英:数据赋能,从数据库到数据中台
下一篇: CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
开源头条
博客等级 码龄13年 1475粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值