| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 我们重写了七层流量代理BFE的路由转发机制 -> 正文阅读 |
|
[移动开发]我们重写了七层流量代理BFE的路由转发机制 |
BFE路由转发模型如下图所示。 以http请求为例,当请求到达BFE时,BFE首先根据请求域名确定租户(哪个业务线),再根据请求的路径确定集群(服务/微服务),然后确定子集群(机房),最后负载均衡选择实例(服务进程)。 那么我们为什么要重写这套路由转发机制? BFE在路由到集群以及负载均衡选择实例上,与我们接触的网关很类似,在做网关时,我们最头疼的就是配置一堆路由规则。在七层流量代理上,由于多租户的存在,我们也需要配置一堆规则。 为了解决繁琐的配置问题,以及兼容历史遗留问题,我们重写了BFE的路由转发机制,让服务主动的,按“/租户/服务/机房/实例/接口”的格式注册到注册中心,BFE从注册中心读取和监听服务注册。要实现这一点,需要业务方使用我们提供的框架开发。 当然,这很大程度是由于历史遗留问题决定的。在使用BFE之前,我们公司使用的是自研的七层流量代理,使用自定义的客户端与服务端的通信协议。因此,客户端和服务端都需要依赖七层流量代理提供的SDK开发。 使用BFE后,除兼容旧的逻辑,为实现客户端与后端的rpc调用,提升开发效率,支持多语言(客户端ios与Android、h5使用的开发语言不同)生态,我们提供基于idl通用语言的rpc实现方案。 实现基于注册机制的转发逻辑,有利于实现跨区域流量调度。我们不需要知道哪个业务在哪个大区部署有服务,通过跨区域数据同步即可自动发现就近区域部署的服务,将请求通过专线转发到其它区域的BFE。也称南北路由。 在调整路由转发机制后,由于去掉了转发规则的配置,原有限流模块已经不适用,或者说太重,配置起来太繁琐,因此,我们也重写了限流模块,只保留按租户限流和按接口限流,并增加按连接数限流和按握手次数限流。 重写BFE的路由转发机制并非原有实现不好,而是为了兼容原有技术栈,解决繁琐配置问题,实现跨区域流量转发。很多时候,历史包袱并不是说丢弃就丢弃,每个迭代都要考虑兼容问题。 基于百度开源的BFE二次开发,目前为止,我们几乎重写了BFE,只保留BFE的骨干框架。由于要兼容一堆逻辑,BFE也变得越来越重,而这些兼容逻辑,也会是一个长期存在的逻辑。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:12:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |