OpenNJet 应用引擎:在 NGINX 基础上的云原生增强

目录

    • 一、初识OpenNJet
    • 二、系统架构
    • 三、动手实践
      • 1.CentOS 编译环境配置
        • 1.1配置yum源:
        • 1.2.yum安装软件包
        • 1.3.创建符号连接
      • 2.编译代码
        • 编译 OpenNJet
        • 执行 make
    • 四、基本使用说明
      • 1.目录结构概述:
      • 2.常用命令:
    • 五、部署 Web 应用程序
      • 配置文件修改
      • 启动 NJet
    • 六、总结

一、初识OpenNJet

OpenNJet 应用引擎是一个基于 NGINX 的运行时组态服务程序,专为互联网和云原生应用提供支持。通过对 NGINX 架构的改进和扩展,OpenNJet 实现了云原生功能增强、安全加固和代码重构,具备动态加载机制,能够实现多种产品形态,如 Web 服务器、流媒体服务器、负载均衡、代理、应用中间件、API 网关、消息队列等。

想要了解更多可以查看OpenNJet官网:https://njet.org.cn/

在这里插入图片描述

二、系统架构

NGINX以其高性能在API网关领域中脱颖而出,但其缺乏动态配置能力一直为业界所批评。为了解决这一问题,OpenNJet在NGINX的基础架构上进行了扩展和改进,增加了C语言编写的可持久化动态存储功能,使得配置更改可以动态生效,从而显著提升了OpenNJet的灵活性和适用性。

在这里插入图片描述
此外,随着对应用引擎可观测性需求的增加,OpenNJet采用了Copilot框架,通过将业务处理、配置变更与性能指标采集、日志记录和跟踪信息注入分离,有效减少了遥测数据处理对主要性能的影响。作为一个云原生的应用引擎,OpenNJet支持行业广泛使用的Ingress和Sidecar API规范。基于动态配置和Copilot框架,OpenNJet能够通过更新独立的Copilot模块来快速适应不断变化的行业标准,确保其在现代应用部署中的竞争力。

三、动手实践

OpenNJet 的编译与安装相对简单,需要准备相应的编译环境,并执行简单的编译命令和安装步骤。具体流程清晰明了,开发者能够快速上手。

本文以 CentOS 系统环境为例带大家动手实践一下

1.CentOS 编译环境配置

1.1配置yum源:

首先执行以下指令:

sudo yum --enablerepo=extras install -q -y epel-release centos-release-scl-rh https://repo.ius.io/ius-release-el7.rpm
sudo curl -o /etc/yum.repos.d/mercurial.repo https://www.mercurial-scm.org/release/centos7/mercurial.repo

在这里插入图片描述

上面步骤完成后,文件系统的目录/etc/yum.repos.d 将生成对应的repo文件

ls -al /etc/yum.repos.d/mercurial.repo

在这里插入图片描述

1.2.yum安装软件包
sudo yum install -y devtoolset-8-make devtoolset-8-toolchain ca-certificates mercurial zlib-devel cmake3 ninja-build libunwind-devel pcre-devel openssl-devel libtool libtool-ltdl

在这里插入图片描述
在这里插入图片描述

1.3.创建符号连接
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/gcc /usr/local/bin/gcc
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/c++ /usr/local/bin/c++
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/cc /usr/local/bin/cc
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/make /usr/local/bin/make

在这里插入图片描述

2.编译代码

https://github.com/OpenNJet/OpenNJet

可以去 GitHub 下载 zip 文件并上传至 /home 目录下,并解压

在这里插入图片描述

编译 OpenNJet

执行以下代码

sudo sh build_cc.sh conf

在这里插入图片描述

执行 make
sudo make

在这里插入图片描述
正确编译完成如上图所示

最后执行:make install

四、基本使用说明

OpenNJet 提供了丰富的命令和参数,方便进行配置和管理。通过指定配置文件和启动参数,开发者可以快速启动、测试、停止和重新加载服务,同时提供了详细的目录结构和功能说明,方便进行定制和扩展。

1.目录结构概述:

  • build: 包含用于编译rpm/deb的脚本。
  • auto: 自动检测系统环境和编译配置脚本,包括编译器选项(cc)、库(lib)、系统参数(os)和数据类型(types)。
  • conf: 默认配置文件,安装时复制到安装目录。
  • contrib: 包括实用工具如geo配置生成器(geo2njet.pl)。
  • html: 默认网页文件,安装时复制到安装目录。
  • repos: 包含yum数据源。
  • doc: 存放API文档,包括Swagger API、GUI页面和手册。
  • src: njet源代码,包含核心、事件处理、HTTP服务器代码、邮件和网络代理服务器代码等。

2.常用命令:

  • njet -h: 显示帮助信息。
  • njet -p /tmp/njet/ -c conf/njet.conf: 启动,可以指定配置文件路径和配置文件。
  • njet -t: 测试配置信息是否正确。
  • njet -v: 显示版本信息。
  • njet -V: 显示编译参数。
  • njet -s stop: 快速停止服务。
  • njet -s quit: 优雅停止服务。
  • njet -s reload: 重新加载配置。

五、部署 Web 应用程序

配置文件修改

首先我们可以通过修改 njet.conf 文件来配置 OpenNJet。

/usr/local/njet/conf/njet.conf

在这里插入图片描述

worker_processes auto;

cluster_name njet;
node_name node1;

error_log logs/error.log error;

helper ctrl modules/njt_helper_ctrl_module.so conf/njet_ctrl.conf;
helper broker modules/njt_helper_broker_module.so;
#helper ha modules/njt_helper_ha_module.so conf/vrrp.conf;

load_module modules/njt_http_split_clients_2_module.so;  
load_module modules/njt_agent_dynlog_module.so;  
load_module modules/njt_http_dyn_bwlist_module.so; 
load_module modules/njt_dyn_ssl_module.so;
load_module modules/njt_http_vtsc_module.so;
load_module modules/njt_http_location_module.so;
#load_module modules/njt_http_lua_module.so;
#load_module modules/njt_http_modsecurity_module.so;
#load_module modules/njt_http_dyn_modsecurity_module.so;

events {
    worker_connections  1024;
}
http {
    server {
       listen 80;
       server_name example.com;
       location / {
           root /usr/local/njet/html;
           index index.html;
       }
    }
}

/usr/local/njet/html 下我们创建了 index.html 文件

启动 NJet

sudo systemctl start njet

在这里插入图片描述

然后我们可以使用服务器的 IP 地址或域名访问这个页面

在这里插入图片描述
OpenNJet作为新一代云原生引擎有着多样的安装方式可以满足不同情况的需求,除了上面所展示的基本Web配置外,OpenNJet还具有动态配置,国密支持等等功能,期待能有越来越多的开发者加入进来,一起体验和不断完善OpenNJet的生态环境。

六、总结

本文系统地介绍了OpenNJet,一个基于NGINX的云原生应用引擎,旨在提供对互联网和云原生应用的全面支持。通过对NGINX架构的改进和扩展,OpenNJet解决了NGINX在动态配置能力和性能指标采集方面的不足,并提供了简单的编译和安装流程以及丰富的命令和参数,使用户能够快速上手并灵活配置和管理服务。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计宝典与速查手册,设计师必备资料合集

一、资料描述 本套设计资料,大小194.34M,共有13个文件。 二、资料目录 01-《商业设计宝典》.pdf 02-《色彩速查宝典》.pdf 03-《配色宝典》.pdf 04-《解读色彩情感密码》.pdf 05-《行业色彩应用宝典》.pdf 06-《构图宝典》.pdf 07-《创意宝典》…

PXE 批量安装部署

目录 一、PEX批量部署优点 二、PXE:预启动执行环境 三、搭建PXE远程服务器 要想全自动安装 接下来请看步骤: 一、PEX批量部署优点 规模化:同时装配多台服务器自动化:安装系统 配置各种服务远程实现:不需要光盘&…

勾股定理 口诀

def t_o(a):t int(a/2)b t*t-1c t*t1f (a*ab*bc*c)print(f,ou,a,b,c,a*ab*b,c*c)def t_j(a):t a*abint(t/2)c t-bf (a*ab*bc*c)print(f,j-,a,b,c,f,a*ab*b,c*c)for i in range(2,100,2):t_o(i)t_j(i1) 奇数平方写连续 偶数半方加减一

“A”分考试经验分享:云计算HCIE考试请注意这几点...

大家好,我是誉天云计算HCIE的王同学,于4月2日"A"分通过了云计算3.0 HCIE的认证考试。 首先感谢誉天教育对我的辅导,感谢苗苗老师和石老师对我的帮助,通过这次考试让我对华为云计算有了一定的了解。接下来我就与大家分享…

力扣刷题--数组--第一天

一、数组 数组特点: 连续内存空间存储得数据元素类型一致数组可以通过下标索引查找数据元素,可以删除、替换、添加元素等 1.1 二分查找 使用二分查找需满足得条件: 数组是有序的;数组中没有重复元素;查找的target…

PHP+B/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2+element+laravel8

PHPB/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2elementlaravel8 技术架构:前后端分离,仓储模式,BS架构, 开发技术:PHPvscodevue2elementlaravel8mysql5.7,专业团队研…

对C语言符号的一些冷门知识运用的剖析和总结

符号 目录* 符号 注释 - 奇怪的注释 - C风格的注释无法嵌套 - 一些特殊的注释 - 注释的规则建议 反斜杠’’ - 反斜杠有续行的作用,但要注意续行后不能添加空格 * 回车也能起到换行的作用,那续行符的意义在哪? - 反斜杠的转义功能 单引号…

参数服务器

参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。 参数服务器,一般适用于存在数据共享…

mysql 离线安装

package download mysql https://dev.mysql.com/downloads/mysql/ libaio http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm 根据自己服务器选择下载对应的安装包及依赖 删除本机自带mysql相关 # 首先排查服务器自身是否有安装对应m…

Java | Leetcode Java题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; class Solution {public String simplifyPath(String path) {String[] names path.split("/");Deque<String> stack new ArrayDeque<String>();for (String name : names) {if ("..".equals(name)) {if …

企业节能降耗系统,助力企业节能降耗

随着社会的发展和能源消耗的增加&#xff0c;节能降耗已经成为企业可持续发展的重要课题。为了更有效地监测和管理能源消耗&#xff0c;越来越多的企业开始使用能耗在线监测系统。作为一种节能降耗的有力手段&#xff0c;能耗在线监测系统在企业中得到广泛应用。 能耗在线监测…

春秋云镜 CVE-2022-4230

靶标介绍&#xff1a; WP Statistics WordPress 插件13.2.9之前的版本不会转义参数&#xff0c;这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下&#xff0c;具有管理选项功能 (admin) 的用户可以使用受影响的功能&#xff0c;但是该插件有一个设置允许低权限用户…

去中心化金融与Web3:科技驱动的金融革命

随着区块链技术的发展和普及&#xff0c;去中心化金融&#xff08;DeFi&#xff09;作为其重要应用之一&#xff0c;正在成为金融领域的一场革命。结合Web3技术&#xff0c;去中心化金融正在以前所未有的方式重新定义着金融服务和产品的交付方式&#xff0c;推动着金融领域的创…

亚信科技精彩亮相2024中国移动算力网络大会,数智创新共筑“新质生产力”

4月28至29日&#xff0c;江苏省人民政府指导、中国移动通信集团有限公司主办的2024中国移动算力网络大会在苏州举办。大会以“算力网络点亮AI时代”为主题&#xff0c;旨在凝聚生态伙伴合力&#xff0c;共同探索算力网络、云计算等数智能力空间&#xff0c;共促我国算网产业和数…

贡献思维,CF1644E. Expand the Path

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1644E - Codeforces 二、解题报告 1、思路分析 很容易想明白被…

大数据基础工程技术团队4篇论文入选ICLR,ICDE,WWW

近日&#xff0c;由阿里云计算平台大数据基础工程技术团队主导的四篇时间序列相关论文分别被国际顶会ICLR2024、ICDE2024和WWW2024接收。 论文成果是阿里云与华东师范大学、浙江大学、南京大学等高校共同研发&#xff0c;涉及时间序列与智能运维结合的多个应用场景。包括基于P…

【web前端2024】简单几步制作web3d《萌宠星球》智体节点模板!

使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&#xff08;内嵌了three.js编辑器的定制版-支持以第一视角游览3D场馆&#xff…

音视频开发4 FFmpeg windows 环境搭建,QT 安装,动态库的搜索路径

FFmpeg 为了让所有平台的开发者都能够学习到音视频开发的通用技术&#xff0c;本教程主要讲解跨平台的音视频开发库FFmpeg。其实只要你掌握了FFmpeg&#xff0c;也可以很快上手其他音视频开发库&#xff0c;因为底层原理都是一样的&#xff0c;你最终操作的都是一样的数据&…

基于SSM的农产品销售管理系统

文章目录 项目介绍一、项目功能介绍二、部分页面展示三、部分源码四、底部获取全部源码&#xff08;9.9&#xffe5;带走&#xff09; 项目介绍 农产品销售管理系统 一、项目功能介绍 一、介绍 系统分为两个角色 用户功能&#xff1a;登陆&#xff0c;注册&#xff0c;商品分…

工业光源环形系列一高亮条形光源特点

产品特点 ◆可以根据检测需求随意调整照射角度&#xff1b; ◆可以根据检测需求选择光源颜色&#xff1b; ◆多个条形光源可以自由组合&#xff1b; ◆使用大功率贴片灯珠&#xff0c;亮度高&#xff1b; ◆灯珠上面增加透镜&#xff0c;照射距离更远