加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

网络通信与治理,谁更在行?Envoy和Nginx架构层面的对比

发布时间:2019-11-13 04:19:48 所属栏目:教程 来源:佚名
导读:副标题#e# 【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》 Nginx是Envoy出现之前网络通信中间件领域非常有代表性的开源系统,功能强大,性能出色,扩展性很强,已经形成了强大的生态,成为HTTP流量管理领域事实上的标杆。En

对于最成熟的HTTP协议来说,Nginx把整个请求处理过程划分为多个阶段,当前一共有包含读取请求内容、请求地址改写等一共11个处理阶段,业务需要在某个阶段进行扩展和定制处理时,只需要挂载该阶段对应的回调函数,Nginx核心处理HTTP请求到这个阶段时,会回调之前注册的回调函数进行处理。

Nginx对模块的支持总体来说不算灵活,Nginx模块必须和Nginx自身源码一块编译,并且只能在编译期间选择当前支持的模块,不支持运行时进行模块动态选取和加载,大家一直以来吐槽比较多。为了解决这个问题,Nginx在1.9.11版本引入了模块动态加载支持,从此不再需要替换Nginx文件即可增加第三方模块扩展。Nginx也支持Lua扩展,利用Lua语言的简单易用和强大的协程机制,可以非常方便地实现很多扩展机制,并且性能也能够基本满足需求。

Envoy也提供了强大的插件扩展机制,当前使用最多的地方是监听过滤插件和网络处理过滤插件。和Nginx相比,Envoy网络插件定位在协议层面,以HTTP协议为例,Envoy并没有那么细粒度的插件扩展机制,如果想对Envoy的HTTP协议处理进行扩展,当前并没有提供特别多的扩展点。

Envoy的插件当前采用的是静态注册的方式,插件代码和Envoy代码一块进行编译,和Nginx不同,Envoy从最开始就支持插件的动态加载,Envoy通过独特的XDS API设计,可以随时对Envoy的XDS插件进行定制修改,Istio将修改后的XDS配置通过Grpc的方式推送给Envoy动态加载和生效。

此外,当前Envoy社区和Cilium社区一块探索利用,利用eBPF提供的用户态网络定制能力,对Envoy的流量进行精细化的管理和扩展定制。Cilium从1.3版本开始,引入了Envoy的Go扩展,通过Go扩展实现Filter插件向Envoy注册,主要实现的还是OnData()函数,当Envoy接收到流量时,就会调用插件的OnData函数进行处理。

Envoy在Lua扩展支持方面也进行了一些探索性的工作,当前已经试验性地支持使用Lua脚本对HTTP请求进行过滤和调整。Lua脚本HTTP过滤器当前仍处于实验阶段,不建议直接在生产环境中使用,后续待验证成熟后才能在生产环境使用。成熟后可以在更多的场景下通过Lua脚本机制增强Envoy的扩展性。

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读