探索OpenNJet—开源项目测评NGINX云原生功能增强有感

一键难忘 2024-07-06 09:07:05 阅读 87

🚀OpenNJet开源项目测评有感

本次上手体验开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目OpenNJet。

OpenNJet官网链接:https://njet.org.cn/

🚩一.什么是OpenNJet

OpenNJet是一款面向互联网和云原生应用提供的运行时组态服务程序。它具备环境感知、安全控制、加速优化等能力,并可以利用动态加载机制实现不同的产品形态,如API网关、消息代理、入口/出口控制器、边车、负载均衡和WAF等。同时,OpenNJet还拥有服务网格中东西向通信、透明流量劫持、熔断、遥测与故障注入、链路追踪、蓝绿发布等新功能特性。OpenNJet是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,其性能优势显著,例如其性能是CNCF推荐的Envoy的三倍。

✒️1.1OpenNJet的特点

OpenNJet旨在适应国内特定的技术规范及标准,如国密算法套件支持,兼容Kubernetes容器编排和Istio服务治理框架,并构建安全可控的云原生数据面,支撑我国云原生产业生态发展。其整体架构包括底层的Framework、Copilot以及提供各种业务功能的workers。

OpenNJet作为云原生服务网格的数据平面,具备动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。通过CoPliot副驾驶服务框架,它在隔离控制面和数据面的情况下实现了高可扩展性。OpenNJet应用引擎致力于帮助企业实现云原生技术的平滑升级,并大幅降低IT运营成本。

其优势如下:

高性能:NJet性能是CNCF推荐Envoy的三倍。

功能多:内置HTTP3、故障注入、遥测、配置动态加载、服务发现等功能

强安全:集成Web应用防火墙、原生支持国密/ RSA加密解密算法

可扩展:强大的插件框架能力支持第三方应用开发

可编程:支持LUA、Python可编程控制脚本

易管理:提供完善的API接口,内置多主集群和高可用性能力

✒️1.2OpenNJet的应用场景

OpenNJet的应用场景非常广泛。基于其模块动态配置信息的持久化、不同模块间运行状态信息的共享以及外部系统对运行模块的动态参数调整等能力,OpenNJet可应用于多种互联网和云原生应用。例如,它可以用于实现服务网格中的数据平面,支持东西向通信、透明流量劫持、熔断、遥测与故障注入、链路追踪、蓝绿发布等功能特性。OpenNJet还可以作为API网关、消息代理、入口/出口控制器、边车、负载均衡器和WAF等不同的产品形态,为各种应用提供运行时组态服务。

OpenNJet技术架构图如下:

OpenNJet 是一款为互联网和云原生应用提供的运行时组态服务程序。其功能包括环境感知、安全控制、加速优化等,并通过动态加载机制实现不同的产品形态,如 API 网关、消息代理、入口/出口控制器、边车、负载均衡和 Web 应用防火墙(WAF)等。

作为由开放原子开源基金会孵化及运营的开源项目,OpenNJet 具备以下特点和优势:

适应性和兼容性:支持国内技术规范和标准,如国密算法套件、兼容 Kubernetes 容器编排和 Istio 服务治理框架,构建安全可控的云原生数据面。

整体架构:包括底层的 Framework、Copilot,以及提供各种业务功能的 workers。通过 CoPliot 副驾驶服务框架,实现高可扩展性。

功能强大:具备动态配置加载、主动式健康检测、集群高可用、声明式 API 等功能。内置 HTTP3、故障注入、遥测、配置动态加载、服务发现等功能。

高性能:性能是 CNCF 推荐的 Envoy 的三倍。

强安全性:集成 Web 应用防火墙,原生支持国密/RSA 加密解密算法。

可扩展性:具备强大的插件框架能力,支持第三方应用开发。

可编程性:支持 LUA、Python 可编程控制脚本。

易管理性:提供完善的 API 接口,内置多主集群和高可用性能力。

OpenNJet 的应用场景包括服务网格中的数据平面、API 网关、消息代理、入口/出口控制器、边车、负载均衡器、Web 应用防火墙等。其模块动态配置信息持久化、不同模块间运行状态信息共享以及对运行模块的动态参数调整等能力,使其适用于多种互联网和云原生应用。

🚩二.Ubuntu上手安装

项目仓库:https://github.com/OpenNJet/OpenNJet

版本背景:VMware16、Ubuntu22.04

1.在完成上手安装前的系统版本准备工作后。下载对应版本Ubuntu20.04-x86-64-2.0.1。对应我本地环境版本。

2.将下载后的安装包放入指定目录下,如下所示。

3.在该指定目录下,右键点击在终端打开。

4.在命令框执行按照命令:

sudo dpkg -i ./njet_2.0.1-1~ubuntu.18.04~bionic_amd64.deb

输入本机的密码,开始按照。等待按照成功如下。

5.输入命令,systemctl start njet 启动服务

6.通过浏览器访问部署机器的8080地址 localhost:8080/

Ubuntu安装OpenNJet成功!

在安装 OpenNJet 过程中的心得体会:

版本匹配很重要:确保下载的 OpenNJet 版本与本地系统版本匹配,这有助于避免不必要的兼容性问题。

熟悉基本命令:对于 Ubuntu 系统,熟悉基本的命令是必不可少的。在安装过程中使用 dpkg -i 命令安装软件包是很常见的操作,而使用 systemctl start 命令启动服务也是常用的。

耐心等待:安装过程可能需要一些时间,特别是在执行 dpkg -i 命令后等待安装完成。耐心等待直到安装成功,避免在安装过程中中断或者强制退出。

验证安装:安装成功后,及时验证安装是否正确。可以通过执行启动服务命令以及访问对应的地址来确认安装是否成功。

善用浏览器:通过浏览器访问部署的地址是非常方便的,可以直观地查看服务是否正常运行,并且进行必要的配置和管理。

备份重要数据:在进行任何系统更改或安装新软件之前,始终确保备份重要数据,以防意外发生。

持续学习和实践:Ubuntu 上手安装 OpenNJet 只是开始,持续学习和实践 Linux 系统操作以及相关软件的安装和配置,可以帮助提升技能水平。

这些体会不仅适用于 OpenNJet 的安装过程,也适用于其他软件的安装和系统配置过程。通过不断地实践和积累经验,可以更加熟练地操作 Ubuntu 系统,并能更快地解决可能出现的问题。

🚩三.动态配置功能

1.在根据文档步骤执行,发现系统中没有安装 curl 命令,需要先安装curl。执行下面命令,安装。

sudo apt install curl

2.开始OpenNJet动态配置。执行命令如下

curl -X GET http://127.0.0.1:8081/config/1/config/http_dyn_bwlist

成功执行了 curl 命令,并且得到了返回结果。这个结果显示了动态黑白名单的配置信息。在这个示例中,配置了一个服务器监听在 0.0.0.0:8080 地址,并且对所有请求路径 / 都采用相同的配置。这表明该服务器会对所有的请求进行相同的处理。

访问效果如下

到这里就实现了通过 curl 的方式实现OpenNJet的动态配置功能。

在使用 OpenNJet 过程中,我遇到了一些配置方面的需求,并成功使用 curl 命令进行了动态配置。首先,我遇到了系统缺少 curl 命令的情况,通过 sudo apt install curl 安装了它。接着,我执行了 curl -X GET http://127.0.0.1:8081/config/1/config/http_dyn_bwlist 命令,成功获取了动态黑白名单的配置信息。这个配置信息显示了服务器监听在 0.0.0.0:8080 地址,并且对所有请求路径 / 都采用相同的配置。这意味着服务器会对所有请求进行相同的处理。

通过 curl 的方式实现了 OpenNJet 的动态配置功能让我感到非常方便。这种方式不仅简单快捷,而且允许我在需要时随时更新配置,而无需停止服务或重新启动服务器。这种灵活性对于调试和部署过程都非常有用。我会继续利用这种方式来管理和更新 OpenNJet 的配置,以确保系统能够按照我的需求进行运行。

🚩四.心得总结

这篇文章对OpenNJet开源项目进行了全面的测评和上手体验,并分享了在Ubuntu上安装OpenNJet以及使用动态配置功能的具体步骤。以下是一些总结和心得:

OpenNJet是一款面向互联网和云原生应用提供的运行时组态服务程序,具备环境感知、安全控制、加速优化等能力,适用于各种云原生场景。

通过Ubuntu上手安装OpenNJet的过程清晰明了,提供了详细的步骤和对应的截图,我们能够轻松地跟随指导完成安装过程。

本文还测评了OpenNJet的动态配置功能,并通过curl命令展示了如何实现动态配置,展示了OpenNJet的灵活性和易用性。

通过对OpenNJet的测评和上手体验,我对这个开源项目有了深入的了解。其高性能、丰富功能、强安全性和可扩展性让我印象深刻。在Ubuntu上安装OpenNJet简单明了,而动态配置功能的使用也展现了其灵活性和易用性。OpenNJet的开源特性为开发者提供了定制和扩展的可能,对于云原生应用的部署和管理提供了便利。总的来说,OpenNJet是一个有着广阔应用前景的开源项目,将在云原生领域发挥重要作用,推动行业生态的发展。

总的来说,OpenNJet是一个非常有潜力的开源项目,具有很高的应用前景和市场价值。通过深入了解和实践,可以进一步发挥其在云原生领域的作用,推动云原生产业生态的发展。

🚀附录

OpenNJet官网链接:https://njet.org.cn/

OpenNJet项目仓库:https://github.com/OpenNJet/OpenNJet



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。