百度开源网关BFE源代码阅读4之模块
据我所知,所有开源负载均衡都会提供至少一种扩展机制,BFE
也不例外,BFE
通过模块的选择可以更精细的控制BFE
在处理请求中的各个阶段。如果内置模块不能满足自己需求,那么可以自己开发模块,而BFE
是用Golang
写的,所以开发效率很高。
据我所知,所有开源负载均衡都会提供至少一种扩展机制,BFE
也不例外,BFE
通过模块的选择可以更精细的控制BFE
在处理请求中的各个阶段。如果内置模块不能满足自己需求,那么可以自己开发模块,而BFE
是用Golang
写的,所以开发效率很高。
如果你还是不懂怎么配置BFE
的路由,个人觉得,这是正常的,但是如果之前的文章让你有了Host
, HostTag
, Product
, Cluster
的概念就够了。本文尝试配置一些示例配置文件的来继续讲解BFE
的路由机制。
前文了解了BFE
的启动流程,本文深入一下BFE
的路由部分,当我们了解了BFE
路由机制,就可以理解BFE
的配置文件,也就可以使用BFE
了。但是说实话,BFE
的路由规则相对于其他产品有点反直觉,因为我使用的还不多,姑且这么说吧。
BFE是一个功能强大的网关。 因为BFE是用Golang写的,所以值得一看,但是它的用户体验实在是一言难尽。
本文实现的apix网关代码结构基本上是借鉴了APISIX的源代码, 可以看做APISIX的一个极度缩减版本。本文的实现只依赖openresty镜像已有的库,不依赖额外的库,所以路由的实现非常简陋,也没有实现路由的持久化,但是大致实现了动态路由更新和转发, 插件机制。
apisix主要是lua脚本跟openresty(或者说nginx)的组合, 流量具体转发由nginx承载, 但是按照什么规则转发用lua脚本定义. apisix在nginx之上封装了非常多功能强大有用的特性, 提供丰富的流量管理功能,比如态调整upstream, 灰度发布, 流量熔断, 认证, 观测性等。