MCPcopy
hub / github.com/bfenetworks/bfe

github.com/bfenetworks/bfe @v1.8.2 sqlite

repository ↗ · DeepWiki ↗ · release v1.8.2 ↗
5,879 symbols 18,698 edges 578 files 1,627 documented · 28%
README

BFE

GitHub Travis Go Report Card GoDoc Snap Status CII Best Practices FOSSA Status Slack Widget

English | 中文

BFE (Beyond Front End) 是百度开源的现代化、企业级的七层负载均衡系统

bfe logo

BFE 是 云原生计算基金会 (Cloud Native Computing Foundation, CNCF) 的一个沙箱项目

cncf-logo

简介

BFE开源项目包含多个组件,可以搭建完整的七层负载均衡和流量接入解决方案

BFE系统包括数据平面和控制平面:

  • 数据平面:负责用户流量的转发,包含下列组件
  • BFE Server:BFE 核心转发引擎,即为本项目(bfenetworks/bfe)。BFE Server 将用户流量经过内容路由、负载均衡,最终转发给合适的后端业务集群
  • 控制平面:负责BFE系统的配置和管理等,包含下列组件
  • API-Server:对外提供 API 接口,完成 BFE 配置的变更、存储和生成
  • Conf-Agent:配置加载组件,从API-Server获取最新配置,并触发 BFE Server 进行配置热加载
  • Dashboard:为用户提供了图形化操作界面,以对 BFE 的主要配置进行管理和查看

BFE的架构说明见概览文档

此外,我们也基于 BFE 实现了 BFE Ingress Controller,用于支持在 Kubernetes 中使用 Ingress

🚀 快速开始

快速开始面向想尽快跑起来的用户:先构建 Docker 镜像,再用 Kubernetes 示例快速部署。

1)构建 Docker 镜像

在仓库根目录执行:

make docker

说明: - make docker 会构建 prod + debug 两个镜像,镜像 tag 来自 VERSION 文件。 - 如需自定义镜像名,可通过 BFE_IMAGE_NAME 覆盖,例如:

make docker BFE_IMAGE_NAME=your-registry/bfe

如果你希望 Kubernetes 部署使用你本地构建的镜像:需要将镜像推送到集群节点可访问的镜像仓库(或在本地集群中加载镜像),并在 examples/kubernetes/kustomization.yamlimages: 中将 bfe 镜像替换为你的镜像地址与 tag。

Docker 镜像的构建与推送(包含 make docker-push)详见: - docs/zh_cn/installation/install_using_docker.md

2)使用 Kubernetes 示例快速部署(kustomize)

cd examples/kubernetes
kubectl apply -k .
kubectl apply -f whoami-deploy.yaml

更多部署细节(包含镜像统一替换/mirror、初始化说明、清理与 finalizers 排障等)请参考: - examples/kubernetes/README-CN.md

特性及优点

  • 丰富协议支持:支持HTTP、HTTPS、SPDY、HTTP/2、WebSocket、TLS、gRPC、FastCGI等
  • 基于请求内容的路由:支持高级条件表达式定制转发规则,转发规则易于理解及维护
  • 高级负载均衡:支持全局/分布式负载均衡,实现就近访问、跨可用区容灾及过载保护等
  • 灵活的模块框架:支持高效率定制开发第三方扩展模块
  • 高效易用的管理:支持转发集群配置集中管理,提供Dashboard和RESTful API
  • 一流的可见性:提供丰富详尽的监控指标,提供各类日志供问题诊断、数据分析及可视化 了解更多详情

开始使用

运行测试

文档

书籍

  • 《深入理解BFE》 :介绍网络接入的相关技术原理,说明BFE的设计思想,以及如何基于BFE搭建现代化的网络接入平台。现已开放全文阅读。

参与贡献

  • 请首先在issue列表中创建一个issue
  • 如有必要,请联系项目维护者/负责人进行进一步讨论
  • 请遵循golang编程规范
  • 详情请参阅参与贡献指南

作者

社区交流

  • 开源BFE用户论坛

  • 开源BFE微信公众号:扫码关注公众号“BFE开源项目”,及时获取项目最新信息和技术分享

  • 开源BFE用户微信群:扫码加入,探讨和分享对BFE的建议、使用心得、疑问等
  • 开源BFE开发者微信群: 发送邮件说明您的微信号及贡献(例如PR/Issue),我们将及时邀请您加入

许可

BFE基于Apache 2.0许可证,详见LICENSE文件说明

Extension points exported contracts — how you extend this code

Flusher (Interface)
The Flusher interface is implemented by ResponseWriters that allow an HTTP handler to flush buffered data to the client. [11 …
bfe_http/common.go
Fetcher (Interface)
(no doc) [29 implementers]
bfe_basic/condition/primitive.go
BfeModule (Interface)
(no doc) [31 implementers]
bfe_module/bfe_module.go
DnsFetcher (Interface)
(no doc) [29 implementers]
bfe_modules/mod_doh/dns_fetcher.go
ExpressionNode (Interface)
(no doc) [8 implementers]
bfe_modules/mod_secure_link/checker.go
ResponseWriter (Interface)
A ResponseWriter interface is used by an HTTP handler to construct an HTTP response. [4 implementers]
bfe_http/response_writer.go
MultiCertificate (Interface)
(no doc) [16 implementers]
bfe_tls/common.go
CloseNotifier (Interface)
The CloseNotifier interface is implemented by ResponseWriters which allow detecting when the underlying connection has g [3 …
bfe_server/response.go

Core symbols most depended-on inside this repo

Error
called by 852
bfe_basic/condition/parser/y.go
Close
called by 286
bfe_util/epp/epp_client.go
Write
called by 218
bfe_http/response_writer.go
Get
called by 216
bfe_tls/common.go
pair
called by 199
bfe_http2/hpack/tables.go
WriteString
called by 187
bfe_http2/http2.go
Set
called by 182
bfe_util/byte_pool/ibyte_pool.go
next
called by 126
bfe_basic/condition/parser/scanner.go

Shape

Function 2,600
Method 2,193
Struct 797
TypeAlias 193
Interface 75
FuncType 21

Languages

Go95%
TypeScript5%

Modules by API surface

bfe_http2/server_test.go149 symbols
bfe_basic/condition/primitive.go126 symbols
bfe_http2/server.go109 symbols
bfe_http2/frame.go108 symbols
bfe_bufio/bufio_test.go78 symbols
bfe_spdy/server_test.go75 symbols
bfe_tls/common.go59 symbols
bfe_tls/handshake_messages.go56 symbols
docs/material/assets/javascripts/lunr/min/lunr.tr.min.js55 symbols
bfe_modules/mod_body_process/body_process.go54 symbols
bfe_tls/cipher_suites.go52 symbols
bfe_tls/conn.go50 symbols

Dependencies from manifests, versioned

github.com/HdrHistogram/hdrhistogram-gov1.0.1 · 1×
github.com/abbot/go-http-authv0.4.1-0.20181019201 · 1×
github.com/andybalholm/brotliv1.0.2 · 1×
github.com/armon/go-radixv1.0.0 · 1×
github.com/asergeyev/nradixv0.0.0-2017050515104 · 1×
github.com/aymerick/douceurv0.2.0 · 1×
github.com/baidu/go-libv0.0.0-2020081907211 · 1×
github.com/bfenetworks/bfe-mock-wafv0.1.0 · 1×
github.com/bfenetworks/bwiv0.1.2 · 1×
github.com/bfenetworks/proxy-wasm-go-hostv0.0.0-2024120214411 · 1×
github.com/cncf/xds/gov0.0.0-2024072314284 · 1×

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add bfe \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact