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

news2024/10/6 21:30:04

前言导读

在当今这个数字化转型加速的时代,云原生技术已成为企业和开发者构建现代应用的首选路径。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/njet
 sbin/njet

3.2、通过systemctl启动

使用 rpm 或 deb 二进制安装后,会在 /usr/lib/systemd/system/ 目录下添加 service文件。​

使用 sudo systemctl start njet 启动服务。​

使用 sudo systemctl stop njet 停止服务​

总结

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

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

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

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

相关文章

深度学习基础之《TensorFlow框架(16)—神经网络案例》

一、mnist手写数字识别 1、数据集介绍 mnist数据集是一个经典的数据集,其中包括70000个样本,包括60000个训练样本和10000个测试样本 2、下载地址:http://yann.lecun.com/exdb/mnist/ 3、文件说明 train-images-idx3-ubyte.gz: training s…

vscode 配置与插件记录

vscode插件 python PythonPython DebuggerruffisortPylanceJupyterJupyter KeymapJupyter Slide ShowJupyter Cell TagsautoDocstring - Python Docstring Generator ruff isort pylance autodocsting 在setting.json里这么配置,这样你保存时就会自动format…

【酱浦菌-爬虫项目】爬取学术堂论文信息

1. 首先,代码定义了一个名为 url 的变量,它是一个包含三个网址的集合(或者说是一个集合的字典)。这些网址分别是: - ‘http://www.xueshut.com/lwtimu/127966.html’ - ‘http://www.xueshut.com/lwtimu/12…

您可知道如何通过`HTTP2`实现TCP的内网穿透???

可能有人很疑惑应用层 转发传输层?,为什么会有这样的需求啊???哈哈技术无所不用其极,由于一些场景下,对于一个服务器存在某一个内部网站中,但是对于这个服务器它没有访问外网的权限&…

《ElementPlus 与 ElementUI 差异集合》el-dialog 显示属性有差异

ElementPlus 用属性 v-model ElementUI 用属性 visible 其实也是 Vue2/Vue3 的差异:v-model 指令在组件上的使用已经被重新设计,替换掉了 v-bind.sync

新质生产力实践,我用chatgpt开发网站

是的,我用chatgpt开发了一个网站,很轻松。 我之前一点不懂前端,也没有网站开发的代码基础,纯正的0基础。 从0开始到最后成品上线,时间总计起来大致一共花了2-3周的时间。 初始想法我是想给我公司开发一个网站&#…

C# wpf 运行时替换方法实现mvvm自动触发刷新

文章目录 前言一、如何实现?1、反射获取属性2、定义替换方法3、交换属性的setter方法 二、完整代码1、接口2、项目 三、使用示例1、倒计时(1)、继承ViewModelBase(2)、定义属性(3)、属性赋值&am…

【Redis 开发】Lua语言

Lua Lua语法 Lua语法 Lua是一种小巧的脚本语言,底层用C语言实现,为了嵌入式应用程序中 官网:https://www.lua.org/ 创建lua文件 touch hello.lua 运行lua文件 lua hello.lua 输出语句 print("Hello World!")数据类型 可以通过t…

python与上位机开发day04

模块和包、异常、PyQt5 一、模块和包 1.1 模块 Python中模块就是一个.py文件,模块中可以定义函数,变量,类。模块可以被其他模块引用 1.1.1 导入模块 """ 导入格式1: import 模块名 使用格式: …

【算法基础实验】图论-最小生成树Prim的延迟实现

最小生成树-Prim的延迟实现 理论基础 树的基本性质 用一条边连接树中的任意两个顶点都会产生一个新的环; 从树中删去一条边将会得到两棵独立的树。 切分定理的定义 定义。图的一种切分是将图的所有顶点分为两个非空且不重叠的两个集合。横切边 是一条连接两个属…

认识认识DHCP

文章目录 认识认识DHCP一、什么是DHCP?1.1、为什么要使用DHCP?1.2、DHCP是怎么工作的?1.2.1、客户端首次接入网络的工作原理1.2.2、客户端重用曾经使用过的地址的工作原理1.2.3、客户端更新租期的工作原理 二、配置DHCP Server,为…

嵌入式开发二:搭建开发环境

工欲善其事必先利其器,本节我们从嵌入式开发的搭建环境开始学习,掌握最基本的搭建环境技能,了解每一部分的作用,以及如何使用是关键所在! 目录 一、常用开发工具简介 二、如何安装KEIL5(MDK) 2.1认识MDK-ARM 2.2 …

Spring基于AspectJ实现验签切点

文章目录 引言I AspectJ 依赖II 验签切点2.1 匹配方法执行的连接点2.2 设置带有CustomAnnotation注解的方法为切点III 案例:验签2.1 用法2.2 定义注解2.3 定义切面和切点引言 需求:验签 实现:基于AspectJ实现验签切点 I AspectJ 依赖 AspectJ 是一个基于 Java 语言的 AOP …

windos蓝屏分析工具

BlueScreenView中文版 - Windows蓝屏分析工具 BlueScreenView中文版是一款非常方便的蓝屏诊断工具。它可以帮助您快速定位蓝屏问题,并提供详细的故障转储信息。该软件可以自动扫描您机器上的minidump文件夹,同时还支持根据路径查找蓝屏文件。 windos发…

Coursera: An Introduction to American Law 学习笔记 Week 06: Civil Procedure (完结)

An Introduction to American Law Course Certificate Course Introduction 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 06: Civil Pro…

Flink checkpoint 源码分析

序言 最近因为工作需要在阅读flink checkpoint处理机制,学习的过程中记录下来,并分享给大家。也算是学习并记录。 目前公司使用的flink版本为1.11。因此以下的分析都是基于1.11版本来的。 在分享前可以简单对flink checkpoint机制做一个大致的了解。 …

docker学习笔记3:VmWare CentOS7安装与静态ip配置

文章目录 一、安装CentOS71、下载centos镜像2、安装二、设置静态ip三、xshell连接centos本专栏的docker环境是在centos7里安装,因此首先需要会安装centos虚拟机。 本篇博客介绍如何在vm虚拟机里安装centos7。 一、安装CentOS7 1、下载centos镜像 推荐清华源,下载如下版本 …

【C++】学习笔记——string_1

文章目录 四、模板初阶2. 类模板 五、STL简介1. 什么是STL2. STL的六大组件3. 如何学习STL 六、string类1. string类对象的容量操作 未完待续 四、模板初阶 2. 类模板 函数模板就是:模板 函数;类模板就是:模板 类。和函数模板用法基本相同…

Kafka客户端工具:Offset Explorer 使用指南

Kafka作为一个分布式流处理平台,在大数据处理和实时数据流应用中扮演着至关重要的角色。管理Kafka的topics及其offsets对于维护系统稳定性和数据一致性至关重要。Offset Explorer是一个强大的桌面应用程序,它使得管理和监控Kafka集群变得简单直观。本文将…

数组 Leetcode 704 二分查找/Leetcode 59 螺旋矩阵/Leetcode 203移除链表元素

数组 Leetcode 704 二分查找 Leetcode 704 学习记录自代码随想录 二分法模板记忆&#xff0c;数值分析中牛顿迭代法 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size()-1;// 是否需要等于号&#xff0c;假设…