前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >号称下一代云原生应用引擎OpenNJet

号称下一代云原生应用引擎OpenNJet

原创
作者头像
王二蛋
发布2024-06-21 10:57:05
1000
发布2024-06-21 10:57:05

前言

作为一名技术人员,我们应时刻保持对行业动态的关注,今天我们就来体验一下号称下一代云原生应用引擎OpenNJet

OpenNJet 介绍

OpenNJet是以NGINX为基础,进行派生并独立演进的云原生应用引擎

它具备环境感知、安全控制、加速优化等能力,并可以利用动态加载机制实现不同的产品形态,如API网关、消息代理、入口/出口控制器、边车、负载均衡和WAF等。

此外,OpenNJet还拥有NGINX不具备的东西向通信、透明流量劫持、熔断、遥测以及故障注入、链路追踪、蓝绿发布等新功能特性。

OpenNJet VS NGINX

NGINX主要的优点是高性能,但其缺乏动态配置能力。为了解决这一问题,OpenNJet在NGINX的架构上进行了扩充,解决了配置变更动态生效的关键问题。

不仅如此,对于应用引擎可观测性的需求,比如性能指标、日志数据以及注入跟踪信息的采集,OpenNJet利用Copilot framwork隔离了业务处理及配置变更和指标采集,避免了遥测对性能的影响。

通过 NGINX 架构和 OpenNJet 架构可以直观的看出两者的关系。

OpenNJet 安装

本文基于centos发行版进行安装,安装命令如下:

还有更多的安装方式,大家可以自行选择。比如:

二进制安装

安装发行版

源码安装

命令执行成功后,通过{ip}:8080进行访问,看到如下图的界面,表示安装成功。

OpenNJet 动态配置体验

OpenNJet 支持通过 swagger 页面实现对各功能opentapi的访问,比如健康检查、动态黑名单配置、动态access log 配置、动态 location 配置、动态 upstream api 配置等一切可以配置的操作。

swagger 页面在OpenNJet启动后,通过 {ip}:8081/doc/swagger/ 进行访问。如下界面

动态location

在OpenNJet中,动态location允许用户实时地调整或添加网络路径和相关的配置,从而定义哪些请求应该被路由到哪些后端服务,或者如何对特定的请求进行特殊处理。

可以通过 OpenNJe t的 swagger 页面动态添加、删除 location 模块。

执行以上的接口后,就可以通过浏览器访问/clb了。

动态黑名单

OpenNJet的动态黑名单功能允许用户实时地添加、更新或删除黑名单条目,从而有效地阻止或限制特定的IP地址对资源的访问。

依然可以通过swagger进行这一操作。

通过 swagger 可以看到,此时 OpenNJet 中没有添加任何的黑白名单。

此时通过swagger的动态黑名单配置,将我的ip设置拒绝访问

再次访问{ip}:8080,就会发现被禁止访问。

动态灰度发布

在应用的新版本测试发布过程中,经常需要先使用部分选定的账号进行验证,待验证完成后,再逐步将业务流量切换到新版本。

可以通过动态 split clients 配置和动态 location 配置实现动态灰度发布。

动态添加 split clients

设置两组 upstream: backendA , backendB , 并通过 split_clients 指令使用 header 中的 uid 值做为流量配比,并设置 80% 的流量将指向后端 backendA, 20% 的流量将指向后端 backendB。

动态添加 location

通过动态配置添加一个 location , location 中设置所有的 1xxxx uid 将访问到 backendB。

当测试完成后,可以动 删除 location,并逐步调整将分流比例直至 100%,从而实现灰度发布。

体验感受

OpenNJet的动态加载机制确实带来了很大的便利。不重启进程的情况下进行配置的实时更新,使得应用的部署和升级变得更加灵活和高效。这一特性对于需要频繁变更配置的场景来说,无疑是一个巨大的优势。

当然,OpenNJet的功能远不止于此,还支持更多的应用场景,我将会在后续的使用中逐步发掘体验。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • OpenNJet 介绍
  • OpenNJet VS NGINX
  • OpenNJet 安装
  • OpenNJet 动态配置体验
    • 动态location
      • 动态黑名单
        • 动态灰度发布
        • 体验感受
        相关产品与服务
        云托管 CloudBase Run
        云托管 CloudBase Run(Tencent CloudBase Run,TCBR)是由云开发提供的新一代云原生应用引擎(App Engine 2.0),支持托管任意语言和框架编写的容器化应用。和云开发其他产品(云函数、云数据库、云存储、扩展应用、HTTP 访问服务、静态网站托管等)一起为用户提供云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档