下一代云原生应用引擎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.hqwc.cn/news/660116.html

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

相关文章

Python urllib 爬虫入门(2)

本文为Python urllib类库爬虫更入门的一些操作和爬虫实例及源码。 目录 模拟浏览器请求 简单模拟 设置随机user-agent 请求超时 HTTP请求类型 Get请求 Post请求 抓取网页动态请求 封装ajax请求 调用 循环调用 抓取小说 封装请求函数 把html写入本地分析 调用 正…

JWT是什么?如何使用?

JWT是什么?如何使用? 前言什么是JWT?概念工作方式JWT的组成HeaderPayloadSignatrue 实战引入依赖自定义注解定义实体类定义一个JWT工具类业务校验并生成token定义拦截器配置拦截器定义接口方法并添加注解开始验证 使用场景注意事项 JWT与传统…

2024最新的,免费的 ChatGPT 网站AI(八个)

ChatGPT是美国人工智能研究实验室OpenAI在2022年11月推出的一款人工智能技术驱动的语言模型应用。它基于GPT-3.5架构(后续还有GPT-4架构的升级版)构建,拥有强大的自然语言处理能力和上下文理解能力,能够参与多轮对话,为…

【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker ⭐⭐⭐⭐ 文章目录 Haystack 是什么1. DiversityRanker2. LostInTheMiddleRanker使用示例 这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框…

上位机图像处理和嵌入式模块部署(树莓派4b开机界面程序自启动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了如何在树莓派4b上面开发qt,也学习了如何用/etc/rc.local启动控制台程序,那今天我们继续学习一下如何利用树莓…

PotatoPie 4.0 实验教程(35) —— FPGA实现摄像头图像二值化膨胀效果

手机扫码 链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 什么是图像二值化膨胀,有什么作用? 图像二值化膨胀是图像处理中的一种基本操作,它用于扩展和增强二值图像中的白色区域。具体而言,二值化膨胀操作…

【VSCode调试技巧】Pytorch分布式训练调试

最近遇到个头疼的问题,对于单机多卡的训练脚本,不知道如何使用VSCode进行Debug。 解决方案: 1、找到控制分布式训练的启动脚本,在自己的虚拟环境的/lib/python3.9/site-packages/torch/distributed/launch.py中 2、配置launch.…

微视网媒:引领新媒体时代的视觉先锋

在信息爆炸的时代,内容消费的方式日新月异,而“微视网媒”正是这场媒体变革中的佼佼者。凭借其独特的视角、精湛的制作和广泛的传播渠道,微视网媒不仅改变了人们获取信息的方式,更在不断地塑造着未来的媒体生态。 一、创新内容&am…

Hotcoin Research | 市场洞察:2024年4月22日-28日

加密货币市场表现 本周内加密大盘整体呈现出复苏状态,在BTC减半后进入到震荡上行周期。BTC在$62000-66000徘徊,ETH在$3100-3300徘徊,随着港交所将于 4 月 30 日开始交易嘉实基金的比特币和以太坊现货 ETF,周末行情有一波小的拉升…

【Qt】QtCreator忽然变得很卡

1. 问题 Qt Creator忽然变得很卡。电脑里两个版本的Qt Creator,老版本的开启就卡死,新版本好一点,但是相比于之前也非常卡,最明显的是在 ctrl鼠标滚轮 放大缩小的时候,要卡好几秒才反应。 2. 解决方案 2.1 方法1 关…

2000.1-2023.8中国经济政策不确定性指数数据(月度)

2000.1-2023.8中国经济政策不确定性指数数据(月度) 1、时间:2000.1-2023.8 2、指标:CNEPU(经济政策不确定性指数) 3、来源:China Economic Policy Uncertainty Index 4、用途:可…

虚析构与纯虚析构

这里的new Cat("Tom"&#xff09;是由于基类函数中的构造函数里面带有string变量 1. 法一:利用虚函数&#xff0c;虚化基类中的析构函数 virtual ~Animal() { cout << "动物的析构函数调用" << endl; } 2. 法二:利用纯…