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

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

    • 前言
    • 一、技术架构
    • 二、新增特性
      • 1. 透明流量劫持
      • 2. 熔断机制
      • 3. 遥测与故障注入
    • 三、Ubuntu 发行版安装 OpentNJet
      • 1. 添加gpg 文件
      • 2. 添加APT 源
      • 3. 安装及启动
      • 4. 验证
    • 总结

前言

OpenNJet,是一款基于强大的 NGINX 技术栈构建的创新型云原生运行时组态服务程序,旨在为互联网与云原生应用场景提供高效、灵活且安全的服务支持。通过对 NGINX 的云原生功能深度强化、安全加固以及代码重构,实现了对基础架构的全面升级,从而能够通过动态加载机制轻松适配多种业务场景,以满足不同产品的形态需求。

一、技术架构

好的产品都是从好的设计开始的,优秀的技术架构才能承载多样化的业务场景、拥有极高的性能、更易扩展和管理等独特优势。
技术架构
从而,OpenNJet 能够有效管理和调控微服务之间的内部通信,确保服务间调用的高效、可靠与透明。

二、新增特性

1. 透明流量劫持

OpenNJet 具备对服务间流量的透明拦截与操控能力,能够在不改变服务本身的情况下,对数据包进行检测、修改或者重定向,便于实施统一的安全策略、监控措施或进行A/B测试等高级操作。

2. 熔断机制

为了保护系统免受局部故障的连锁反应影响,OpenNJet 集成了服务熔断功能。当某个服务的错误率超过预设阈值时,引擎能够自动切断对该服务的请求,防止故障扩散,并提供降级处理或备用服务切换,确保整体系统的稳定性和用户体验。

3. 遥测与故障注入

OpenNJet 实现了全面的遥测能力,能够实时收集并上报服务间的调用指标、性能数据以及异常事件,为运维人员提供详尽的可观测性视图。此外,它还支持故障注入测试,允许在生产环境中模拟特定故障场景,以验证系统的容错能力和恢复策略,助力持续改进服务的韧性和可靠性。

三、Ubuntu 发行版安装 OpentNJet

1. 添加gpg 文件

 sudo apt-get updatesudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://njet.org.cn/download/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/njet.gpgsudo chmod a+r /etc/apt/keyrings/njet.gpg

添加gpg文件

2. 添加APT 源

echo \
"deb [arch=$(dpkg --print-architecture) signed-
by=/etc/apt/keyrings/njet.gpg] https://njet.org.cn/download/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/njet.list > /dev/nullsudo apt-get update

添加apt源

注意
E:Malformed entry 1 in list file /etc/apt/sources.list.d/njet.list ([option] not assignment)
报错解释:这个错误表明在/etc/apt/sources.list.d/njet.list文件中,列表中的第一个条目格式不正确。

解决方法
1)打开文件进行编辑 sudo vim /etc/apt/sources.list.d/njet.list
2)检查并修正第一个条目的格式。正确的条目通常以deb或deb-src开头,后面跟着相应的仓库地址、发行版名称、版本号和构架。
修改为:deb [arch=amd64 signed-by=/etc/apt/keyrings/njet.gpg]
https://njet.org.cn/download/linux/ubuntu focal stable
3)保存文件并退出编辑器。
4)运行sudo apt-get update来更新软件包列表。

3. 安装及启动

-- 安装
sudo apt-get install njet-- 启动
sudo systemctl start njet

安装以及启动

启动的时候报错System has not been booted with systemd as init system (PID 1). Can't operate.
报错原因我这个系统里没有使用systemctl、service来管理njet服务,很好理解。
启动报错
解决方法:手工启停
可执行文件及相关的配置文件安装到目录 /usr/local/njet 下

 -- 启动cd /usr/local/njetsbin/njet-- 停止pkill njet

4. 验证

可以通过浏览器或curl/wget访问部署机器的8080地址进行验证
浏览器验证

curl http localhost:8080/

curl访问验证

总结

OpenNJet 应用引擎凭借其对 NGINX 的深度定制化改造与云原生功能扩展,成功构建了一个强大而全面的云原生服务运行环境。它不仅涵盖了传统Web服务与现代微服务架构的多样化需求,更通过引入先进的服务网格特性和运维工具,显著提升了云原生应用的稳定、安全与可管理性,为用户在快速变化的互联网和云环境中提供了坚实的技术支撑。

最后,OpenNJet这么强大,你是不是也想了解和上手实操了!别急,这就上链接:

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

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

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

相关文章

typescript类型基础

typescript类型基础 枚举类型 enum Season {Spring,Summer,Fall,Winter }数值型枚举 enum Direction {Up,Down,Left,Right } const direction:Direction Direction.up每个数值型枚举成员都表示一个具体的数字,如果在定义一个枚举的时候没有设置枚举成员的值&…

Excel利用数据透视表将二维数据转换为一维数据(便于后面的可视化分析)

一维数据:属性值都不可合并,属性值一般在第一列或第一行。 二维数据:行属性或列属性是可以继续合并的,如下数据中行属性可以合并为【月份】 下面利用数据透视表将二维数据转换为一维数据: 1、在原来的数据上插入数据透…

MySQL字符编码中的各个字符集的区别

MySQL8.0及以后版本 默认的字符集是utf8mb4,默认的排序规则是utf8mb4_0900_ai_ci。此排序规则不区分大小写,所以在项目查询功能中要格外注意。另外此排序规则不兼容MySQL8.0之前的数据,当做关联查询时会报错。 MySQL8.0之前版本 默认的字符…

MySQL 社区经理:MySQL 8.4 InnoDB 参数默认值为什么要这么改?

MySQL 8.4 LTS 版本,我们一共修改了 20 个 InnoDB 变量的默认值。 作者:Frederic Descamps,EMEA 和亚太地区的 MySQL 社区经理。于 2016 年 5 月加入 MySQL 社区团队。担任开源和 MySQL 顾问已超过 15 年。最喜欢的主题是高可用和高性能。 本…

解决一个朋友的nbcio-boot的mysql数据库问题

1、原先安装mysql5.7数据库,导入我的项目里的带数据有报错信息 原因不明 2、只能建议用docker进行msyql5.7的安装 如下,可以修改成自己需要的信息 docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_R…

selenium简介、使用selenium爬取百度案例、selenium窗口设置、

1 selenium简介 2 使用selenium爬取百度案例 3 selenium窗口设置 1 selenium简介 【一】web自动化 随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。 现在你可以看到很多网站的数据可能都是通过接口的形式传输的&…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作,用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

c#word文档:1.创建空白Word文档及保存/2.添加页内容...

---创建空白Word文档 --- (1)创建一个名为OfficeOperator的类库项目。引用操作Word的.NET类库 (2)定义用于操作Word的类WordOperator1。添加引用Microsoft.Office.Interop.Word命名空间。 (3)为WordOper…

Unity | Shader基础知识(第十三集:编写内置着色器阶段总结和表面着色器的补充介绍)

目录 前言 一、表面着色器的补充介绍 二、案例viewDir详解 1.viewDir是什么 2.viewDir的作用 3.使用viewDir写shader 前言 注意观察的小伙伴会发现,这组教程前半部分我们在编写着色器的时候,用的是顶点着色器和片元着色器的组合。 SubShader{CGPRO…

个股期权是什么,个股期权使用方法?

今天期权懂带你了解个股期权是什么,个股期权使用方法?个股期权作为金融市场的重要工具之一,是指投资者在约定时间内有权而非义务以约定价格买卖特定数量的个股的金融衍生品。 个股期权是什么? 个股期权合约是一种由交易所统一设定的标准化合…

qemu启动zfs 映像(未解决)

根据FreeBSD的riscv wiki :riscv - FreeBSD Wiki进行 qemu的启动实践,发现例子中的文件无法下载, fetch https://download.freebsd.org/snapshots/VM-IMAGES/15.0-CURRENT/riscv64/Latest/FreeBSD-15.0-CURRENT-riscv-riscv64.raw.xz 该文件…

git-新增业务代码分支

需求 使用git作为项目管理工具管理项目,我需要有两个分支,一个分支是日常的主分支,会频繁的推送和修改代码并推送另外一个是新的业务代码分支,是一个长期开发的功能,同时这个业务分支需要频繁的拉取主分支的代码&#…

Python_GUI框架 Pyside6的常用部件介绍

PySide6是一个非常完善的商用级别的GUI框架,涉及的知识点相对比较多,今天我先在这里介绍一下我们在实际应用中最常见的几种部件及其功能: 1. QMainWindow QMainWindow 提供了一个主应用程序窗口的框架,通常包含一个菜单栏、工具…

还原IP地址(力扣93)

解题思路;和分割回文数大致一样,都是在叶子节点收集结果,不过这里要多定义一个用来判断是否合格的函数,并且收集规则是插入完三个节点后再判断收集,同时注意每次开始时要在两位之后因为插入了. 具体代码如下: class …

python列表去掉指定index的几个元素

背景:输入的参数为空时也进入参数了,这种无效数据,大模型也处理不了,只能不返回数据,处理方法,去掉content为空的messages 在Python中,如果你想从列表中移除指定索引位置的元素,可以…

go语言中time日期时间格式化Format使用详解 2006-01-02 15:04:05

go语言中有个很特别的时间格式format,在我们使用 Format格式化时间的时候, format的参数格式字符串必须是 2006-01-02 15:04:05 才能格式出正确的时间来, 这是个很特别的字符串, 通过分析拆分后可以得出的每个代表时间和日期的数…

Redis学习(七)|如何保证Redis中的数据都是热点数据

文章目录 题目分析回答扩展Spring Boot中时用LRU管理Redisapplication.propertiesapplication.yml Redis 缓存策略 题目 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据? 分析 这个问题涉及到在一个数据量差异很大的情…

pytest教程-37-钩子函数-pytest_collection_finish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_collection_start钩子函数的使用方法,本小节我们讲解一下pytest_collection_finish钩子函数的使用方法。 pytest_collection_finish(session) 是一个 pytest 钩子函数&…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库(不支持SQL标准语法)。 …

Java特性之设计模式【享元模式】

一、享元模式 概述 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式 享元模式尝试重用现有的同类对…