前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我们重写了七层流量代理BFE的路由转发机制

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

作者头像
吴就业
发布2021-10-14 15:50:12
8530
发布2021-10-14 15:50:12
举报
文章被收录于专栏:Java艺术Java艺术

BFE路由转发模型如下图所示。

以http请求为例,当请求到达BFE时,BFE首先根据请求域名确定租户(哪个业务线),再根据请求的路径确定集群(服务/微服务),然后确定子集群(机房),最后负载均衡选择实例(服务进程)。

那么我们为什么要重写这套路由转发机制?

BFE在路由到集群以及负载均衡选择实例上,与我们接触的网关很类似,在做网关时,我们最头疼的就是配置一堆路由规则。在七层流量代理上,由于多租户的存在,我们也需要配置一堆规则。

为了解决繁琐的配置问题,以及兼容历史遗留问题,我们重写了BFE的路由转发机制,让服务主动的,按“/租户/服务/机房/实例/接口”的格式注册到注册中心,BFE从注册中心读取和监听服务注册。要实现这一点,需要业务方使用我们提供的框架开发。

当然,这很大程度是由于历史遗留问题决定的。在使用BFE之前,我们公司使用的是自研的七层流量代理,使用自定义的客户端与服务端的通信协议。因此,客户端和服务端都需要依赖七层流量代理提供的SDK开发。

使用BFE后,除兼容旧的逻辑,为实现客户端与后端的rpc调用,提升开发效率,支持多语言(客户端ios与Android、h5使用的开发语言不同)生态,我们提供基于idl通用语言的rpc实现方案。

实现基于注册机制的转发逻辑,有利于实现跨区域流量调度。我们不需要知道哪个业务在哪个大区部署有服务,通过跨区域数据同步即可自动发现就近区域部署的服务,将请求通过专线转发到其它区域的BFE。也称南北路由。

在调整路由转发机制后,由于去掉了转发规则的配置,原有限流模块已经不适用,或者说太重,配置起来太繁琐,因此,我们也重写了限流模块,只保留按租户限流和按接口限流,并增加按连接数限流和按握手次数限流。

重写BFE的路由转发机制并非原有实现不好,而是为了兼容原有技术栈,解决繁琐配置问题,实现跨区域流量转发。很多时候,历史包袱并不是说丢弃就丢弃,每个迭代都要考虑兼容问题。

基于百度开源的BFE二次开发,目前为止,我们几乎重写了BFE,只保留BFE的骨干框架。由于要兼容一堆逻辑,BFE也变得越来越重,而这些兼容逻辑,也会是一个长期存在的逻辑。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java艺术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档