为什么选择OpenNJet?OpenNJet下一代云原生应用引擎!OpenNJet开发实战!

embedded/2024/12/22 21:35:14/

前言导读

在当今这个数字化转型加速的时代,云原生技术已成为企业和开发者构建现代应用的首选路径。OpenNJet作为新一代云原生应用引擎,在国内外技术社区受到了广泛关注。

本文将深入探讨OpenNJet的特点、优势以及在开发实践中的应用,带您全面了解为何它是下一代云原生应用开发的理想选择。

了解更多详情,请访问OpenNJet官网icon-default.png?t=N7T8https://njet.org.cn/

一、OpenNJet下一代云原生应用引擎

OpenNJet应用引擎是基于NGINX打造的,针对互联网和云原生应用场景设计的运行时组态服务程序。它通过动态加载机制,能够灵活地扮演API网关、消息代理、入口/出口控制器等多种角色。OpenNJet以其环境感知、安全控制和加速优化的能力,满足了国内企业对于数据处理的技术规范和标准需求,同时与Kubernetes和Istio等主流云原生技术无缝集成,共同支撑我国云原生产业生态的发展。

1、技术创新与生态建设

在持续的技术迭代和创新发展背后,是OpenNJet强大的开源创新能力。作为开放原子开源基金会TOC评审通过的项目,并发布了1.0版本,OpenNJet在AtomGit上拥有了自己的代码仓库。未来,它将从推广应用、技术研发、确保安全、产业发展和开源共建五个方面继续深化工作。

2、功能丰富与架构先进

OpenNJet不仅具备传统NGINX的功能,还增加了诸如透明流量捕获、熔断、遥测与故障注入等云原生特性。作为数据平面,OpenNJet在提升南北向通信网关能力的同时,还加强了服务网格中东西向通信的功能,全面提升了云原生架构下的通信效率和安全性。

二、为什么选择OpenNJet

性能无损动态配置

革新性的动态配置能力让OpenNJet解决了NGINX长期存在的痛点:即使在流量高峰期间也能实现实时配置更改,无需重启服务。这样的设计极大提高了服务的可用性和响应速度。

灵活的CoPilot框架

CoPilot框架的引入,使得OpenNJet的数据处理既高效又可靠,同时易于管理和监控。借助此框架,可以轻松实现指标输出、健康检查等管理操作,确保系统的稳定运行。

支持HTTP/3与国密算法

OpenNJet支持最新的HTTP/3协议,借助QUIC传输协议,实现更快、更可靠的Web体验。同时,对国密SM2、SM3、SM4算法的支持为用户提供了更强的数据保护,确保合规性。

高效安全的企业级应用

OpenNJet的设计考虑了企业对高可用、数据安全和自动化运维的需求。通过集群状态同步、集群配额控制以及运维文档的一体化设计,它简化了DevOps实践,并提升了数据安全和服务可用性。

控制面与数据面隔离

CoPilot框架将控制面与数据面进行了有效隔离。这使得OpenNJet在提供稳定、高性能的数据传输的同时,还能轻松扩展各种管理接口。

显著节能效果

选择OpenNJet还意味着您将参与到绿色技术的实践中来。据估计,到2025年,使用OpenNJet将节省的能耗高达1314亿元人民币,为企业及社会的可持续发展做出积极贡献。

三、OpenNJet开发实战!

1、OpenNJet技术架构分析

这张图是一个基于OpenNJet技术的架构图,总的来说,这个架构图描绘了一个高度模块化和分布式的系统,它通过进程隔离确保了控制层和数据层的安全性和独立性。

共享内存使得数据在这两层之间高效交换,而MQTT协议支持的Event Bus则确保了系统内部的通信效率。

该架构支持插件机制,使得第三方模块可以轻松接入和配置。OpenNJet作为基于NGINX的应用引擎,增强了云原生功能、安全性和灵活性,为各类互联网和云原生应用提供了强大的运行时支持。

控制管理层(Copilots)

copilot:xxx:代表特定的控制管理功能,它可以是一个特定的服务或功能模块。

copilot:broker:充当消息代理的角色,可能涉及消息队列的管理,例如MQTT协议。

x.so:动态链接的共享库(Dynamic Shared Object),用于copilot服务的扩展或功能实现。

共享内存(Shared Memory):控制管理层和数据处理层之间的数据交换通过共享内存实现,其中分为两部分,一部分是可读写的(供copilots和workers共同访问),另一部分是只读的(仅供copilots访问)。

发布/订阅(Publish/Subscribe):此机制表明系统内部可能使用了基于MQTT协议的Event Bus,实现消息的异步交换。

数据处理层(Workers)

worker1, worker2, ... worker n:这些都是负责处理数据的组件。它们可以并行工作,处理不同的任务。

module x:表示worker内部的模块,它们可能负责特定的功能,例如数据处理、安全加固等。

调用接口(invoke)/桩(stub):这可能表示workers之间或workers与其他系统组件之间的通信接口,stub可能是提供给外部模块调用的接口。

NJet master:这可能是系统的主控制单元,负责协调和管理整个架构的copilots和workers,可能包含监控、动态配置、负载均衡等多种功能。

Fork:在NJet master附近标注的fork可能表示该控制单元可以创建新的进程来生成更多的workers或copilots,这表明系统具有动态伸缩的能力。

2、安装OpenNJet

NJet官方提供centos,ubuntu,cloudOS等多个版本的2进制安装包,及软件源。

二进制安装包可以从gitee的主仓库选择对应的版本进行下载,或通过软件源的方式自动获得后续的 更新,目前支持centos及ubuntu的软件源配置。

除NJet主应用外,NJet的某些功能模块会通过独立的 二进制发行包进行可选安装,当前提供的有njet-otel模块,用于支持调用链跟踪,其安装参考«njet- otel安装说明»(todo)。

3、启动OpenNJet

3.1、手动启动

通过源码编译安装的,可执行文件及相关的配置文件将安装到目录/usr/local/njet

 cd /usr/local/njetsbin/njet

3.2、通过systemctl启动

使用 rpm 或 deb 二进制安装后,会在 /usr/lib/systemd/system/ 目录下添加 service文件。​使用 sudo systemctl start njet 启动服务。​使用 sudo systemctl stop njet 停止服务​

总结

OpenNJet作为下一代云原生应用引擎,不仅在技术层面为云原生应用的开发和运维提供了强大支持,而且在生态建设、安全合规以及节能减排方面都表现出色。

立即访问OpenNJet官网,开始您的云原生之旅吧!


http://www.ppmy.cn/embedded/24099.html

相关文章

嵌入式开发_DMA详解

在嵌入式开发的广阔天地中,MCU是众多开发者手中的利器。而DMA(Direct Memory Access,直接内存访问)技术,则如同一位高效的快递小哥,穿梭于处理器与外设之间,无需CPU亲自出马,高效地搬…

格雷希尔E10系列大电流测试连接器,在新能源汽车大电流接插件的电气测试方案

在新能源汽车的电驱动、电池包等设备的电测试处理中,格雷希尔E10系列电测试连接器具有显著的优势。E10系列的核心设计——插孔/插针,可以达到实验室10万次的插拔寿命,相比传统公母电接头500次左右的连接寿命,E10系列无疑大大减少测…

c++ 原子操作

虽然原子操作通常被称为“无锁”,但实际上它们在内部可能使用了锁来保证操作的原子性。然而,与传统的锁相比,原子操作通常具有更轻量级的实现,因为它们只涉及一个共享变量,而不需要对整个临界区进行加锁。 原子操作通…

R可视化:Venn图进阶版本

前言 最近看到一张不一样的韦恩图,添加了上下调基因数目的韦恩图,将其实现一下,用于自己的研究展示。 导入R包和数据 library(dplyr) library(tibble) library(ggplot2) library(ggVennDiagram) library(ggpubr) library(data.table)subgrp <- c("HC", &quo…

2024.4.23 LoadRunner 测试工具详解 —— VUG

目录 引言 LoadRunner 三大组件之间的关系 LoadRunner 脚本录制 启动并访问 WebTours 脚本录制 编译 运行&#xff08;回放&#xff09; LoadRunner 脚本加强 事务插入 插入集合点 插入检查点 参数化 ​编辑 打印日志 引言 问题&#xff1a; 此处为啥选择使用 Lo…

Linux第十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现 一、简单介绍 二、简单…

junit组件的使用

JUnit 是一个广泛使用的 Java 单元测试框架&#xff0c;它帮助开发者编写可重复运行的测试用例来验证代码的正确性。下面是使用 JUnit 进行单元测试的基本步骤和一些关键概念&#xff1a; 安装与配置 依赖管理&#xff1a;如果你使用的是 Maven 或 Gradle 等构建工具&#xff…