内容简介 · · · · · ·
《万亿级流量转发:BFE核心技术与实现》围绕BFE 开源项目,介绍网络前端接入和网络负载均衡的相关技术原理,说明BFE开源软件的设计思想和实现机制,讲解如何基于BFE开源软件搭建网络接入平台。
《万亿级流量转发:BFE核心技术与实现》共17 章,分为四个部分。第一部分为原理篇,介绍BFE 开源项目的概貌,并对网络前端接入技术和网络负载均衡技术做简要介绍;第二部分为设计篇,介绍BFE 开源项目的设计细节,包括BFE 的设计思想、BFE 的转发模型、BFE 的关键机制和HTTPS 的优化等;第三部分为操作篇,说明如何安装和部署BFE、如何在各种使用场景下配置BFE;第四部分为实现篇,从处理流程、插件机制、协议实现等方面说明BFE的实现机制。
《万亿级流量转发:BFE核心技术与实现》面向的读者包括计算机网络方向的研究者、网络相关技术的开发者、一般后台程序的...
《万亿级流量转发:BFE核心技术与实现》围绕BFE 开源项目,介绍网络前端接入和网络负载均衡的相关技术原理,说明BFE开源软件的设计思想和实现机制,讲解如何基于BFE开源软件搭建网络接入平台。
《万亿级流量转发:BFE核心技术与实现》共17 章,分为四个部分。第一部分为原理篇,介绍BFE 开源项目的概貌,并对网络前端接入技术和网络负载均衡技术做简要介绍;第二部分为设计篇,介绍BFE 开源项目的设计细节,包括BFE 的设计思想、BFE 的转发模型、BFE 的关键机制和HTTPS 的优化等;第三部分为操作篇,说明如何安装和部署BFE、如何在各种使用场景下配置BFE;第四部分为实现篇,从处理流程、插件机制、协议实现等方面说明BFE的实现机制。
《万亿级流量转发:BFE核心技术与实现》面向的读者包括计算机网络方向的研究者、网络相关技术的开发者、一般后台程序的开发者和负载均衡系统的使用者等。
作者简介 · · · · · ·
章淼,博士,百度智能云架构师,BFE开源项目发起人。1997年至2006年在清华大学从事互联网协议和网络体系结构的研究。2012年加入百度,一直从事网络基础架构的研发工作。同时积极推动百度的代码质量和工程能力的提升,目前兼任百度代码规范委员会主席。
杨思杰,百度资深研发工程师,BFE开源项目主要负责人。从零开始参与百度新一代BFE转发平台的建设及创新,拥有近10年的在网络接入和系统架构方面的深入研究和实践经验。关注于通过开源驱动基础软件可持续发展及创造更大的价值。
戴明,百度资深研发工程师,主要从事BFE相关系统和产品的研发工作。曾在朗讯、诺基亚等电信设备公司工作多年,从事电信软件研发和架构设计工作。
陶春华,博士,百度资深研发工程师。2010年毕业于天津大学计算机系,2013年加入百度,先后参与智能流量调度、BFE的Go语言重构、BFE管控平台等重...
章淼,博士,百度智能云架构师,BFE开源项目发起人。1997年至2006年在清华大学从事互联网协议和网络体系结构的研究。2012年加入百度,一直从事网络基础架构的研发工作。同时积极推动百度的代码质量和工程能力的提升,目前兼任百度代码规范委员会主席。
杨思杰,百度资深研发工程师,BFE开源项目主要负责人。从零开始参与百度新一代BFE转发平台的建设及创新,拥有近10年的在网络接入和系统架构方面的深入研究和实践经验。关注于通过开源驱动基础软件可持续发展及创造更大的价值。
戴明,百度资深研发工程师,主要从事BFE相关系统和产品的研发工作。曾在朗讯、诺基亚等电信设备公司工作多年,从事电信软件研发和架构设计工作。
陶春华,博士,百度资深研发工程师。2010年毕业于天津大学计算机系,2013年加入百度,先后参与智能流量调度、BFE的Go语言重构、BFE管控平台等重大项目。目前工作重心是负载均衡商业产品的研发。爱好较为广泛,除解决各种技术问题外,业余时间喜欢做菜。
目录 · · · · · ·
第1 章 BFE 简介···············3
1.1 什么是BFE···········3
1.2 BFE平台介绍·······4
1.2.1 为什么需要构建BFE 平台··············4
1.2.2 BFE平台的主要功能······················6
· · · · · · (更多)
第1 章 BFE 简介···············3
1.1 什么是BFE···········3
1.2 BFE平台介绍·······4
1.2.1 为什么需要构建BFE 平台··············4
1.2.2 BFE平台的主要功能······················6
1.3 BFE开源项目介绍······································7
1.3.1 BFE平台的模块组成······················7
1.3.2 BFE开源项目中的内容···················9
第2 章 网络前端接入技术简介······························10
2.1 什么是网络前端接入·································10
2.2 网络前端接入面临的挑战·························11
2.3 百度的网络前端接入方案·························13
2.4 网络前端接入技术的发展趋势·················15
第3 章 网络负载均衡技术简介······························24
3.1 负载均衡的概念····24
3.2 网络负载均衡功能的实现·························25
3.2.1 机制说明····25
3.2.2 两种方式对比·································27
3.3 四层负载均衡和七层负载均衡·················28
设 计 篇
第4 章 BFE 的设计思想·····33
4.1 BFE转发引擎重构的缘起·························33
4.2 BFE为什么要基于Go 语言······················34
4.3 BFE转发引擎的主要设计思想·················37
4.4 BFE和相关开源项目的对比·····················38
第5 章 BFE 的转发模型·····42
5.1 转发模型概述·····42
5.1.1 基本概念····42
5.1.2 转发过程····43
5.1.3 对多租户实现机制的讨论·············46
5.2 BFE的路由转发机制································47
5.3 条件表达式·········49
5.3.1 设计思想····49
5.3.2 基本概念····50
5.3.3 语法介绍····51
5.3.4 条件原语匹配的内容·····················52
5.3.5 条件原语名称的规范·····················54
5.4 内网流量调度机制·····································55
5.4.1 内网流量调度背景介绍·················55
5.4.2 内网流量调度工作机制·················60
5.4.3 内网转发的其他机制·····················65
第6 章 与转发相关的关键机制······························68
6.1 健康检查机制·····68
6.1.1 健康检查的原理·····························69
6.1.2 主动健康检查和被动健康检查·····69
6.1.3 分布式健康检查和集中式健康检查····································73
6.1.4 BFE的健康检查····························77
6.2 超时设置·············77
6.2.1 BFE和客户端间通信的超时·········78
6.2.2 BFE和后端实例间通信的超时·····81
6.3 BFE信息透传·····84
6.3.1 客户端IP地址的透传···················84
6.3.2 其他信息的透传·····························85
6.4 限流机制·············89
6.4.1 限流的概念····································89
6.4.2 限流的配置····································91
6.4.3 分布式限流····································91
6.4.4 入口限流和目的限流·····················94
6.4.5 限流和内网流量调度·····················95
第7 章 运维相关机制······97
7.1 监控机制·············97
7.1.1 日志监控及其问题·························98
7.1.2 BFE的内部状态输出····················99
7.1.3 统计状态和日志的配合使用·······101
7.2 Web Monitor基础库································101
7.2.1 Web Monitor概述························102
7.2.2 状态变量维护·······························102
7.2.3 延迟统计变量维护·······················104
7.2.4 建立专用的Web服务器··············106
7.2.5 注册回调函数·······························107
7.3 日志机制···········108
7.3.1 日志类型······································108
7.3.2 日志打印的注意事项···················109
7.3.3 BFE的访问日志··························110
7.4 配置管理··········· 111
7.4.1 BFE配置文件的分布··················· 111
7.4.2 常规配置和动态配置···················112
7.4.3 动态配置的实现机制···················113
第8 章 HTTPS 的优化··116
8.1 HTTPS优化背景及必要性······················116
8.2 HTTPS优化的挑战·································117
8.3 HTTPS中的优化机制······························118
8.4 BFE中HTTPS 相关增强机制·················120
操 作 篇
第9 章 BFE 服务的安装部署·······························129
9.1 软件安装包下载安装·······························129
9.2 源代码编译方式安装·······························132
9.3 Docker方式安装······································133
9.4 BFE命令行参数······································134
9.5 查看BFE 服务的运行状态······················135
第10 章 BFE 服务的基础配置·····························136
10.1 场景说明·········136
10.2 修改基础配置文件·································137
10.3 转发的配置·····138
10.3.1 转发配置流程·····························138
10.3.2 具体案例····································139
10.3.3 服务访问验证·····························146
10.3.4 配置的重新加载·························146
第11 章 配置负载均衡算法及会话保持··············147
11.1 子集群间的负载均衡·····························147
11.2 子集群级别的会话保持·························149
11.2.1 配置实例····································149
11.2.2 参数的具体含义·························150
11.3 实例间的负载均衡·································151
11.3.1 加权轮询配置示例·····················151
11.3.2 最小连接数的配置示例·············153
11.4 实例级别的会话保持·····························154
第12 章 配置HTTPS 和更多协议······················155
12.1 设置HTTPS 基础配置···························155
12.1.1 配置HTTPS 端口······················156
12.1.2 配置加密套件·····························156
12.1.3 配置服务端证书·························156
12.1.4 配置TLS 规则····························157
12.2 配置TLS 会话重用································158
12.2.1 配置会话缓存·····························159
12.2.2 配置会话票证·····························160
12.3 配置TLS 双向认证································161
12.4 对不同安全等级的区分·························163
12.5 支持更多协议····164
12.5.1 HTTP/2配置······························165
12.5.2 SPDY 配置·································166
12.5.3 WebSocket配置··························167
12.5.4 连接后端服务的协议·················169
第13 章 其他常用配置·····171
13.1 配置重写·········171
13.1.1 开启重写····································171
13.1.2 模块配置····································171
13.1.3 重写动作详细描述·····················173
13.2 配置重定向·····177
13.2.1 开启重定向·································177
13.2.2 模块配置····································177
13.2.3 重定向动作详细描述·················178
13.3 配置限流功能·180
13.3.1 开启限流模块·····························180
13.3.2 模块配置····································181
13.3.3 限制特定维度的流量·················182
13.3.4 设置限流门限·····························183
13.3.5 设置限流动作·····························184
实 现 篇
第14 章 BFE 的基础实现····································187
14.1 BFE的代码组织····································187
14.2 BFE的进程模型····································190
14.2.1 协程的分类································190
14.2.2 并发模型····································191
14.2.3 并发能力····································192
14.2.4 异常恢复机制·····························192
14.3 请求处理流程····193
14.3.1 连接的建立································193
14.3.2 连接的处理································194
14.3.3 请求的处理································196
14.3.4 请求的结束································198
14.3.5 连接的结束································199
14.4 请求路由实现····199
14.4.1 关键数据结构·····························200
14.4.2 目的租户路由·····························203
14.4.3 目的集群路由·····························204
14.5 负载均衡实现·206
14.5.1 全局负载均衡·····························207
14.5.2 分布式负载均衡·························210
第15 章 模块插件机制··214
15.1 BFE的回调点设置································214
15.2 BFE内置的扩展模块····························216
15.3 模块框架的实现机制·····························217
15.3.1 模块基础类型·····························217
15.3.2 连接/请求处理及回调函数的调用························223
15.4 如何开发BFE扩展模块························224
15.4.1 配置加载····································225
15.4.2 回调函数的编写和注册·············226
15.4.3 模块状态的展示·························228
第16 章 核心协议实现·····231
16.1 HTTP的实现·····231
16.1.1 HTTP 代码的组织······················231
16.1.2 从用户读取HTTP 请求·············233
16.1.3 向后端转发请求并获取响应·····236
16.1.4 向用户回复HTTP 响应·············239
16.2 HTTP2的实现······240
16.2.1 HTTP2 代码的组织····················240
16.2.2 HTTP2 连接处理模块················241
16.2.3 HTTP2 连接相关协程及关系····243
第17 章 BFE 的多进程GC 机制·························249
17.1 模型设计·········249
17.1.1 多进程轮转机制·························250
17.1.2 子进程状态定义·························252
17.2 相关参数的确定·····································253
17.2.1 切换时间参数的选择·················253
17.2.2 子进程数量的计算·····················255
17.2.3 内存消耗的计算·························256
· · · · · · (收起)
万亿级流量转发:BFE核心技术与实现的书评 · · · · · · ( 全部 0 条 )
论坛 · · · · · ·
在这本书的论坛里发言当前版本有售 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有21人想读,手里有一本闲着?
订阅关于万亿级流量转发:BFE核心技术与实现的评论:
feed: rss 2.0
1 有用 or 1=1 2022-03-15 14:49:43
也许技术实现上很强,也有自己的很有优秀之处,但是这确实不像是一本书,而更像是一本完备的技术手册
4 有用 司马元朗 2021-08-17 02:22:13
不推荐
0 有用 若水 2021-09-09 09:31:06
在GitHub上一直关注着BFE,出书第一时间就买了,内容很高端,佩服百度团队最初由C转Go的勇气!
0 有用 Tony Bai 2021-12-15 23:02:24
有些技术细节没写出来。为啥能支撑万亿,单点峰值多少?
3 有用 天空中最亮的星 2021-08-30 15:19:25
BFE原来是国内第一个用Go实现大规模转发网络接入的平台,牛逼!
0 有用 chinging 2023-12-24 16:13:59 北京
割韭菜
0 有用 smallfish 2022-09-24 14:57:47 北京
内容太少
1 有用 or 1=1 2022-03-15 14:49:43
也许技术实现上很强,也有自己的很有优秀之处,但是这确实不像是一本书,而更像是一本完备的技术手册
0 有用 wondering 2022-02-07 20:10:41
太简单了点。基本上有点偏运维的基础常识。对于BFE本身的设计讲得太少。
0 有用 Tony Bai 2021-12-15 23:02:24
有些技术细节没写出来。为啥能支撑万亿,单点峰值多少?