2.2.2 深入理解BFE深入理解BFE 章淼 百度智能云 架构师 什么是BFE? • 百度统一的七层流量转发平台 • HTTP, HTTPS, HTTP/2, QUIC • 2012年开始建设 • 每日转发请求约1万亿,日峰值超过1KW QPS • 2019年,核心转发引擎对外开源 • BFE => Beyond Front End • https://github.com/bfenetworks/bfe 2021年Q3将由电子工业出版社正式出版 BFE开源项目公众号 目 录 BFE涉及的相关技术原理 01 BFE的设计思想 02 BFE的实现机制 03 为什么需要BFE? • 没有统一七层接入的问题 • 功能重复开发 • 运维成本高 • 流量统一控制能力低 • 引入BFE后 • 功能统一开发 • 运维统一管理 • 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 总体流量规模较大; 应用场景对流量控 制要求低;无法使 用负载均衡器的场 景。 负载均衡器 • 负载均衡的趋势 • 硬件 => 软件 • 四层和七层负载均衡器分离 • 四层负载均衡 • LVS,DPVS,… • 七层负载均衡 • HAProxy,Nginx,Envoy,Traefik, BFE,… BFE为什么基于Go语言 • 研发效率 • 远高于C语言 • 稳定性0 码力 | 26 页 | 1.78 MB | 1 年前3
02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力6 • 升级成本高 • 业务解耦 • 平滑升级 • 异构语言治理 • 异构语言治理能力弱 • SDK 版本不统一 应用 SDK 服务路由 负载均衡 通信序列化协议 sidecar 应用 SDK 通信序列化协议 业务逻辑 服务路由 熔断限流 进程通信 熔断限流 负载均衡 Service Mesh 落地实践 7 基础设施 MOSN RPC MQ Actuator 业务逻辑 RPC SDK 通信序列化协议 RPC SOFA-RPC 基础设施 新的挑战 2:异构语言接入成本高 12 MOSN NodeJS 业务逻辑 RPC SDK 通信序列化协议 RPC Cache MQ Config SOFA-RPC Redis SOFA-MQ SOFA- config 基础设施 X SDK 通信序列化协议 新的挑战 2:异构语言接入成本高 13 MOSN NodeJS 业务逻辑 X SDK 通信序列化协议 RPC Cache MQ Config python 业务逻辑 X SDK 通信序列化协议 go 业务逻辑 X SDK 通信序列化协议 C++ 业务逻辑 X SDK 通信序列化协议 SOFA- RPC Redis SOFA-MQ SOFA-config 基础设施 14 Multi-Runtime0 码力 | 63 页 | 880.85 KB | 1 年前3
2-6-Golang 在 Baidu-FrontEnd 的应用-陶春华应用层防火墙WAF • 百度GOLANG委员会成员 内容提要 • 后台程序开发的需求和难点 –C, Python and Go对比 • 采用Go语言重构BFE –背景和技术路线 –GC问题 –协议一致性 –分布式架构 后台程序开发的需求(1) • 性能 –C/C++, Java –Python, Ruby • 并发性 –Process, Thread, Event(编程难度) • –严格的编译阶段检查:强类型,文件包含,… –Panic,便于定位问题 Golang(3) • 上线和运维 –可编译为独立可执行程序 BFE(Baidu Front End) • 百度统一前端 –七层流量接入平台 BFE(Baidu Front End) • 主要服务 • 接入转发 • 防攻击、流量调度、数据分析 • 业务现状 • 覆盖大部分重要产品 • 日请求量千亿级别 接入与转发 –并发编程模型:同步(Go) vs 异步(Nginx) –内存管理 –语言描述能力 • 性能 – 在BFE的场景下,性能在可接受范围内 – 通过算法设计和架构设计来弥补 几个问题 • GC优化 • http协议栈 • 分布式架构 GC带来的问题 –GC是个好东西,但也有问题 –难以避免的延迟(几十到几百ms) • 经验公式:10万对象1ms 扫描时间 –1个tcp连接,约10个对象=> 1万连接,1ms0 码力 | 35 页 | 730.17 KB | 1 年前3
基于gRPC go实现消息发布订阅06 gRPC go介绍 gRPC是什么? 01. 副标题 开篇思考几个问题 01. 副标题 gRPC介绍 01. 副标题 gRPC介绍 01. 副标题 gRPC是框架,七层协议 gRPC go是实现,每个语言都有自己的实现 protobuf介绍 01. 副标题 protobuf示例 01. 副标题 gRPC四种通信模式 gRPC四种通信模式 01. 副标题0 码力 | 31 页 | 2.42 MB | 1 年前3
Go Web编程雨痕(review第二章) 授权许可 授权许可 1 除特别声明外,本书中的内容使用CC BY-SA 3.0 License(创作共用 署名-相同方式共享3.0许可协议)授权,代码 遵循BSD 3-Clause License(3项条款的BSD许可协议)。 开始阅读 开始阅读 开始阅读 2 Copyright (c) 2012, AstaXie and The Contributors 一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器(其实手机端 客户端内部也是浏览器实现的)。 Web服务器的工作原理可以简单地归纳为: 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言 描述一个网络上的资源, 基本格式如下 schema://host[:port#]/path/.../[?query-string][#anchor] scheme 指定低层使用的协议(例如:http, https, ftp) host HTTP服务器的IP地址或者域名 port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如0 码力 | 295 页 | 5.91 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬⾝份隐私保护 数据隐私保护 共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ ⾝份隐私保护 数据隐私保护 共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 设备,主要进⾏数据的可信采集 「多��异构并⾏区��架构模型」 17 趣链科技0 码力 | 39 页 | 56.58 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬⽐比较排序 混淆电路路 可信执⾏行行环境 专 ⽤用 算 法 通 ⽤用 框 架 加解密 伪随机函数 ⽀支 撑 技 术 哈希 秘密分享 秘钥交换 不不经意传输 差分隐私 OPRF协议 ⿊黑名单匹配 ⾦金金融反欺诈 联合征信 应 ⽤用 同态加密 算法体系 隐私计算算法体系 03 构建隐私计算算 法框架的实践 趣链科技版权所有©2016 – 2021 13 隐私集合求交算法示例例 声明算法实例例的配置 通⽤用流程的回调函数 按照隐私计算中的⻆角⾊色 配置元函数列列表 由于算法的⼀一部分逻辑是以独⽴立的函数存在 可以在框架中进⾏行行⽅方便便的复⽤用,并可以抽出 ⼀一些常⽤用的基础协议,像乘法三元组碎⽚片⽣生 成,乘法三元组碎⽚片协助计算碎⽚片乘法等 趣链科技版权所有©2016 – 2021 21 隐私计算算法框架-manager 实现算法暴暴露露的调⽤用接⼝口 通过go的init函数 趣链科技版权所有©2016 – 2021 32 隐私计算算法框架-⼦子协议嵌套调⽤用 ⼦子协议的参与⽅方列列表 发起⽅方设置输⼊入的回调函数 指定参与⽅方的⼦子协议加⼊入的元函数 参与⽅方设置输⼊入的回调函数 框架⾃自动注⼊入⼦子协议发起⽅方的接⼝口 框架在初始化扫描到时,会将该元函数进⾏行行标记 框架⾃自动注⼊入⼦子协议参与⽅方的接⼝口 框架在初始化扫描到时,会将该元函数进⾏行行标记0 码力 | 37 页 | 6.20 MB | 1 年前3
1.1 Go语言游戏项目应用情况汇报运维效率要求⾼高(最好是别运维。。。) 我们做了哪些事情 • 通讯层:协议描述语⾔言以及代码⾃自动⽣生成 • 业务层:顺序结构以及接⼝口注册 • 数据层:映射MySQL的内存数据库以及代码⾃自动⽣生成 通讯层 • 通讯协议描述⽂文档的格式选择 • XML、JSON • Protobuf • ⾃自定义语法 • 可视化编辑 通讯协议描述⽂文档⽚片段 通讯协议解包封包代码⽚片段 业务层 • 从结构上屏蔽所有可能发⽣生的阻塞0 码力 | 21 页 | 1.63 MB | 1 年前3
2.5 Go在猎豹移动的应用gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 避免劫持、失效,dns提供商故障; 协议压缩:pb+gzip; 节约流量; 协议设计:职责单一不适用; 合并请求; TCP Handshake影响RTT; keepalived&长连接; API动态加速; api质量监控,使用日志来追踪,通过本 地日志+flume+hdfs+hive; 实时监控可以考虑flume sink到kafka,再 依赖Spark计算; RPC 协议&远程调用的选型; net/rpc,thrift,grpc等; 链路追踪,参考Google Dapper论文,核 心思路是关键库植入代码,因为缺乏 AOP编程支持,我们使用golang0 码力 | 24 页 | 4.26 MB | 1 年前3
云原生go-zero微服务框架设计思考对业务开发友好,封装复杂度 go-zero是如何设计的 客户端 API端 Service端 缓存层 iOS PC web 安卓 HTTP协议 日志记录 加解密 鉴权&防重放 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 mysql/mongo clusters redis2 redis3 类似DB的缓存索引方式 ● 不允许不过期的缓存 ● 分布式缓存,易伸缩 ● 自动生成,自带统计 缓存的最佳实践 ● 协议选择 - gRPC ● 服务发现方式 - etcd ● 负载均衡 - p2c ewma ● 支持自定义中间件 service2 etcd service1 注册上报 watch发现 rpc0 码力 | 29 页 | 5.70 MB | 9 月前3
共 30 条
- 1
- 2
- 3













