下一代云原生应用引擎OpenNJet体验

文章目录

  • 前言
  • OpenNJet 介绍
  • OpenNJet VS NGINX
  • OpenNJet 安装
  • OpenNJet 动态配置体验
    • 动态location
    • 动态黑名单
    • 动态灰度发布
  • 体验感受

前言

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

OpenNJet 介绍

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

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

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

OpenNJet VS NGINX

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

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

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

OpenNJet 安装

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

下载njet2.1.0版本
wget https://gitee.com/njet-rd/njet/releases/download/v2.1.0/njet-2.1.0-1.el7.x86\_64.rpm
#通过yum进行本地安装
yum localinstall ./njet-2.1.0-1.el7.x86\_64.rpm
#启动njet
systemctl start njet |

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

二进制安装

安装发行版

源码安装

命令执行成功后,通过{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的功能远不止于此,还支持更多的应用场景,我将会在后续的使用中逐步发掘体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊的Listing是否会导致店铺关联?

亚马逊账号关联是否有可能因为listing产品引起的呢?也会存在关联,但如果其中一个站点出了问题,另一账号跟着出事的情况不多见(因为亚马逊本来就支持卖家到各个站点开店把产品销售的各个区域)。很多客户有过相关的经验都…

Agent AI智能体的未来【模板】

Agent AI智能体的未来 随着Agent AI智能体的智能化水平不断提高,它们在未来社会中的角色、发展路径以及可能带来的挑战也引起了广泛关注。快来分享一下你的看法吧~ 提醒:在发布作品前,请把不需要的内容删掉。 方向一:技术进步与…

一曲《少年中国说》令人情怀激荡

今天,作为四川籍人的本“人民体验官”,将充满自豪感地推广人民日报官方微博文化产品《看我中国少年!川传学子热血合唱少年中国说》。 图片:来源“人民体验官”推广平台 人民微博说:“百年前,梁启超先生一篇…

VTK —— 二、教程六 - 为模型加入3D微件(按下i键隐藏或显示)(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码) 教程描述 本…

HFSS19 官方案例教程W03 - SMA接头与微带分支

SMA接头与微带分支 1►射频接头简介 连接器是电子测量中必不可少的重要部件,无论测试仪表还是DUT,无论线缆还是附件,处处都有形形色色的不同连接器的身影。对于射频工程师而言,经常用到的连接器有N型、BNC型、SMA型、3.5 mm、2.92 mm、2.4 mm、1.85 mm、1 mm这几种 (上…

OI Wiki—枚举

//新生训练,搬运整理 简介 枚举(英语:Enumerate)是基于已有知识来猜测答案的问题求解策略。 枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立。 要点 给出解空间 建立简洁…

NCC导入导出开发

📣NCC导入导出开发 ✨1. 导入流程图 ✨2. 实现步骤 🐴1. 前端代码实现。 🐴2. 配置文件创建与设置。 🐴3. 后端代码实现。 🐴4. 注册后端代码类。

react-mosaic-component-一个React库--窗格布局

import { Mosaic, MosaicWindow, MosaicZeroState } from "react-mosaic-component";从名为react-mosaic-component的npm包中引入三个组件:Mosaic,MosaicWindow和MosaicZeroState。 react-mosaic-component是一个React库,用于创建…

一文掌握Vue依赖注入:原理、应用场景以及最佳模块化与单元测试实践,提升代码的可维护性与模块化程度

Vue 中的依赖注入(Dependency Injection, DI)机制通过 provide 与 inject API,实现了跨组件层级间的数据与服务透明传递,使父组件能够向其任意深度的子孙组件“注入”依赖,而不需要通过层层传递 props 或使用全局状态管…

接口测试 - postman

文章目录 一、接口1.接口的类型2. 接口测试3. 接口测试流程4. 接口测试用例1. 测试用例单接口测试用例-登录案例 二、HTTP协议1. HTTP请求2. HTTP响应 三、postman1. 界面导航说明导入 导出用例集 Get请求和Post请求的区别:2.postman环境变量和全局变量3. postman 请求前置脚本…

使用ganache实现Web3js和区块链交互的步骤 及问题解决:Command ‘express’ not found等

Web3js和区块链交互 做一个简单的dapp 1.express安装 sudo npm install express -g 出现问题:Command ‘express’ not found, 解决:在安装express时增加generator参数: npm install -g express-generator 成功后使用 express -e MyDa…

《Fundamentals of Power Electronics》——Boost电路及仿真

Boost电路的拓扑结构如下所示: 下面是在simulink中搭建的一个Boost电路的仿真实验平台,其中直流输入电压为100V,电感值为1mH(模拟电阻为1毫欧),电容值为470uF,负载为50欧姆,占空比选择为0.5,开关…

探索的时光 (整数三分)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 5 3 2 1 2 3 输出 28 思路: 根据题意,已经给出了运算函数 当我们看到这些函数的时候,联想一下,它们的单调性,以…

【建议收藏】用AI快速生成一个网页(名侦探柯南~灰原哀主题网页),适合大学生web期末大作业

下面是提供给AI的提示词和AI给出的代码以及成果展示 1、生成一个网页导航栏,宽度为1300px,高度为60px。导航区域在导航栏最右侧不超出导航栏,高60px,宽度500px,里面是5个导航菜单项横向排列,每个宽度100px&…

MySQL-查询数据-练习

练习 1.创建一个查询,显示收入超过 12,000 的雇员的名字和薪水。 select LAST_NAME,SALARY from employees where SALARY > 12000;2.创建一个查询,显示雇员号为 176 的雇员的名字和部门号。 select LAST_NAME,DEPARTMENT_ID from employees where …

Electron+Vue3+Vite+ElectronForge整合 - 一键启动两个服务 一键打包两个服务

说明 本文介绍一下 Electron Vue3 Vite Electron Forge 的高级整合操作。vue3 : 使用 TS 的语法开发; Electron : 使用 JS 的语法开发。本文将从项目初始化开始,一步一步的完成项目的启动、打包全流程的介绍。实现的效果是 : 1、一个正常…

安装docker后部署一个redis服务

安装 Docker 后,您可以使用 Docker Hub 上提供的 Redis 镜像轻松部署 Redis 服务。以下是在 Docker 中部署 Redis 服务的步骤: 1. 拉取 Redis 镜像: 使用以下命令从 Docker Hub 拉取 Redis 镜像: docker pull redis2. 运行 Red…

Tomcat基本使用与控制台乱码解决方式

目录 Tomcat简单介绍 Tomcat基本使用 Tomcat控制台乱码解决方式 Tomcat简单介绍 tomcat是apache开源绿色版本的服务器。 Tomcat基本使用 安装:下载zip包解压即可。 卸载:删除解压的tomcat文件夹即可。 启动:双击bin/startup.bat 停止…

PCL 点云下采样VoxelGrid滤波器

目录 一. VoxelGrid介绍二.代码示例2.1.代码示例(pcl::PCLPointCloud2)2.2.代码示例(pcl::PointCloud)三.结果示例一. VoxelGrid介绍 VoxelGrid滤波器:可以对点云数据进行体素化,来实现点云数据的下采样(即减少点的数量,减少点云数据)。常见的点云体素滤波器还有统计滤…

开源博客项目Blog .NET Core源码学习(19:App.Hosting项目结构分析-7)

本文学习并分析App.Hosting项目中后台管理页面的主页面。如下图所示,开源博客项目的后台主页面采用layui预设类layui-icon-shrink-right设置样式,点击主页面中的菜单,其它页面采用弹框或者子页面形式显示在主页面的内容区域。   后台主页面…