OpenNJet:云原生技术中的创新者与实践者

在这里插入图片描述

目录

  • 引言
  • OpenNJet介绍
    • OpenNJet优势
      • 1. 性能无损动态配置
      • 2. 灵活的CoPilot框架
      • 3. 支持HTTP/3
      • 4. 支持国密
      • 5. 企业级应用
      • 6. 高效安全
  • OpenNJet 编译与安装
    • 环境准备
    • 编译环境配置
      • 配置yum源
      • yum 安装软件包
      • 创建符号连接
      • 修改 ld.so.conf 配置
    • 编译代码
  • 部署 WEB SERVER
    • 配置OpenNJet
    • 部署 Web 应用程序
    • 启动 NJet
    • 访问 Web 应用程序
  • 个人体验分享
    • 安装过程
    • 意外发现
    • 总结
  • 附录

引言

在当今快速发展的云计算时代,云原生技术正成为企业数字化转型的核心驱动力。云原生架构以其灵活性、可扩展性和高效的资源利用,为软件的快速迭代和持续集成提供了强大的支持。在这一背景下,高性能的WEB应用与代理软件成为了构建云原生服务网格的关键组件。

OpenNJet应用引擎正是这样一款应运而生的产品,它不仅继承了NGINX的稳定性和高效性,还通过云原生功能增强、安全加固和代码重构,实现了性能的飞跃和功能的丰富。作为云原生服务网格的数据平面,OpenNJet通过动态配置加载、主动式健康检测、集群高可用等特性,为企业提供了一个既强大又灵活的解决方案,以应对不断变化的市场需求。

借此机会,我们来深入了解一下OpenNJet是什么,以及OpenNJet的强大功能和实际应用。

OpenNJet介绍

OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序,作为底层引擎,OpenNJet 实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态,如Web服务器、流媒体服务器、负载均衡、代理(Proxy)、应用中间件、API网关、消息队列等产品形态等等。
OpenNJet 在云原生架构中作为数据平面,除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信能力。在原有功能基础上增加了透明流量劫持、熔断、遥测与故障注入等新功能特性。

在这里插入图片描述

OpenNJet优势

1. 性能无损动态配置

动态配置能力解决NGINX长期痛点,实时更改NGINX配置而无需重新启动服务器。不中断服务,快速响应流量需求变化

2. 灵活的CoPilot框架

旨在实现高性能的数据处理能力的同时提供方便扩展的管理接口,如指标输出、健康检查、管理界面、配置同步等以便灵活地、动态地监控、配置和管理系统的各个方面,同时确保数据面的稳定性和可靠性

3. 支持HTTP/3

HTTP/3采用了全新的底层传输协议即QUIC,为您提供更快、更可靠和更安全的Web浏览体验,保证互联网数据传输效率的同时减少用户等待,并增强网络的安全性

4. 支持国密

支持国密 SM2、SM3、SM4算法,场景主要为Server和反向代理两种场景,为您提供更强的数据保护,满足合规性

5. 企业级应用

提供集群状态同步及集群配额控制、高可用及运维文档一体化功能,可以帮助企业更好地实现自动化部署、持续集成和持续交付等 DevOps 实践

6. 高效安全

旨在提高现代应用的安全性、可用性和管理效率,特别是涉及到敏感数据、大规模集群和高可用性要求时,帮助企业更好地保护数据、提供可靠的服务,并简化运维任务

在这里插入图片描述

OpenNJet 编译与安装

大致了解了OpenNJet 以及功能和优势,我们来先体验一下编辑和安装吧。

环境准备

  • 能够访问外网的服务器
  • 版本最低为:CentOS Linux release 7.9.2009 (Core)

编译环境配置

配置yum源

  1. 执行命令:安装epel-release、centos-release-scl-rh和https://repo.ius.io/ius-release-el7.rpm
sudo yum --enablerepo=extras install -q -y epel-release centos-release-scl-rh https://repo.ius.io/ius-release-el7.rpm
  1. 从Mercurial官方网站下载CentOS 7版本的存储库配置文件
sudo curl -o /etc/yum.repos.d/mercurial.repo https://www.mercurial-scm.org/release/centos7/mercurial.repo
  1. 上面步骤完成后,文件系统的目录/etc/yum.repos.d 将生成对应的repo文件。
  2. 可以查看mercurial.repo文件的详细信息
ls -al /etc/yum.repos.d/mercurial.repo

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

创建符号连接

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

修改 ld.so.conf 配置

sudo bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf' 
sudo ldconfig

编译代码

把OpenNJet 1.0.zip 包上传到 /home 目录下。 并解压 unzip njet1.0.zip,如图:
[图片]

运行脚本build_cc.sh

 sh build_cc.sh conf

在这里插入图片描述
执行make命令:如果make 后,有如下提示:则继续 执行 make 指令。
在这里插入图片描述
正确编译的结果如图
在这里插入图片描述
最后执行

make install

部署 WEB SERVER

前提是需要先按照我们上一步正确操作了OpenNJet的编译与安装步骤

配置OpenNJet

OpenNJet 的主要配置文件为 njet.conf。可以通过修改该文件来配置 OpenNJet。 例如,以下是一个简单的 OpenNJet配置文件示例,用于将所有请求重定向到一个 HTML 文件:

http {server {listen 80;server_name example.com;location / {root /var/www/html;index index.html;} }
}

上述配置中,在 HTTP 块中定义了一个名为“server”的服务器块。该服务器块监听 80 端口,并将请求的根目录设置为/var/www/html。如果请求的路径不存在,默认会返 回 index.html 文件。

部署 Web 应用程序

在配置 NGINX之前,需要将 Web 应用程序部署到服务器上。可以将 Web 应用程序放置在服务器上的任何位置,只要在 NGINX配置文件中正确设置 root 目录即可。

启动 NJet

在完成 OpenNJet 配置后,可以通过以下命令启动 OpenNJet:

  njet -p /tmpr/njet/ -c conf/njet.conf 常见启动参数:-p 指定 prefix 配置文件路径,不指定,默认/etc/njet -c 指定配置文件,不指定,默认 njet.conf-e 指定 error 日志文件

访问 Web 应用程序

将 Web 应用程序放置在 /var/www/html 目录中,访问结果如下图:
在这里插入图片描述

个人体验分享

安装过程

安装OpenNJet的过程对我来说既是一次学习的机会,也是一次挑战。提前检查系统环境和依赖,避免了在安装过程中可能出现的许多常见问题,从下载到配置,每一步都充满了新鲜感。我选择的是源码安装方式,这样可以让我更深入地了解软件的内部结构。在编译过程中,我遇到了一些依赖性问题,但通过查阅官方文档和社区论坛,我逐渐解决了这些问题。这个过程虽然有些曲折,但也让我对OpenNJet的工作原理有了更深刻的理解。

意外发现

在安装过程中,我发现OpenNJet的配置文件非常灵活,可以轻松地根据不同的应用场景进行调整。此外,我还惊喜地发现OpenNJet内置了许多高级功能,如故障注入和遥测,这些功能在其他同类软件中很少见。这些发现让我对OpenNJet的功能性和可定制性印象深刻。

随着对OpenNJet的深入了解,我开始思考它在云原生架构中更广泛的应用。我认为OpenNJet的动态配置加载和故障注入功能,对于实现微服务架构中的弹性和灵活性至关重要。同时,我也在考虑如何将OpenNJet集成到现有的CI/CD流程中,以实现自动化部署和测试。

总结

通过这次安装和测试,我对OpenNJet有了全面而深入的了解,包括安装、配置和性能等。从灵活的配置到强大的性能,从详尽的文档到活跃的社区,OpenNJet给我留下了深刻的印象。让我们期待OpenNJet在未来云原生世界中的精彩表现。

当然,以下是一些建议,您可以根据这些建议增加一些个人心得和经验:


附录

  • GitHub:OpenNJet
  • OpenNJet使用手册
  • OpenNJet快速上手
  • OpenNJet 编码规范以及新手指引
  • OpenNJet功能特性

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

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

相关文章

计算机毕设

随着社会和国家的重视,大学对于大学生毕业设计越来越重视。 做软件设计设计方面,前后端分离是必不可少的,代码管理工具,前后端接口测试是项目中必须要用到的工具。做大数据设计方面,主要是要用到爬虫进行数据爬取&…

AArch64 内存管理

本文是对arm developer网站《Learn the architecture - AArch64 memory management Guide》的学习笔记(Documentation – Arm Developer) 一、背景概述 本文介绍了AArch64中的内存转换,这是内存管理的关键,它解释了虚拟地址如何转…

【Pytorch】2.TensorBoard的运用

什么是TensorBoard 是一个可视化和理解深度爵溪模型的工具。它可以通过显示模型结构、训练过程中的指标和图形化展示训练的效果来帮助用户更好地理解和调试他们的模型 TensorBoard的使用 安装tensorboard环境 在终端使用 conda install tensorboard通过anaconda安装 导入类Sum…

408数据结构-树与森林 自学知识点整理

前置知识:树的基本概念与性质 树的存储结构 树既可以采用顺序存储结构,又可采用链式存储结构。但无论采取哪种方式,都要求能够唯一地反映树中各结点之间的逻辑关系。 1. 双亲表示法 这种存储结构采用一组连续空间来存储每个结点&#xff0…

DW PCIE LINUX的初始化分析

一些定义 PCIE复位:一些PCIE复位的知识链接 PCIE初始化:初始化相关定义看下面链接和下图 C语言简化初始化看本人的《DW PCIE的PCIE的RC和EP最简初始化学习笔记》文章。 Sticky Registers:与传统的复位方式相同,FLR方式不能复位…

Linux环境下的事件驱动力量:探索Libevent的高性能I/O架构

hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之《Linux环境下的事件驱动力量:探索Libevent的高性能I/O架构》,在这篇文章中,你将会学习到Libevent的高性能I/O原理以及应用,并且我会给出源码…

java中的字符串(String)常量池理解

下面创建String对象的方式一样吗? 上述程序创建对象类似,为什么s1和s2引用对象一样,但是s3和s4不一样呢? 在java程序中,许多基本类型的字面常量会经常用到,例如2,3.11,“hyy”等。为了提升程序…

一文读懂Vue生命周期(Vue2)

一文读懂Vue生命周期(Vue2) 目录 一文读懂Vue生命周期(Vue2)1 前言2 Vue生命周期2.1 基本生命周期2.1.1 8个生命周期2.1.2 案例 2.2 组件生命周期2.2.1 父子生命周期2.2.2 案例 2.3 keep-alive生命周期2.3.1 案例 2.4 其他 3 总结…

OpenHarmony实战开发-应用侧调用前端页面函数

应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。 在下面的示例中&#xff0c;点击应用侧的“runJavaScript”按钮时&#xff0c;来触发前端页面的htmlTest()方法。 前端页面代码。 <!-- index.html --> <!DOCTYPE html> <html> <…

迭代器解释(C++)

一、什么是迭代器 为了提高C编程的效率&#xff0c;STL&#xff08;Standard Template Library&#xff09;中提供了许多容器&#xff0c;包括vector、list、map、set等。然而有些容器&#xff08;vector&#xff09;可以通过下标索引的方式访问容器里面的数据&#xff0c;但是…

php基础知识快速入门

一、PHP基本知识 1、php介绍&#xff1a; php是一种创建动态交互性的强有力的服务器脚本语言&#xff0c;PHP是开源免费的&#xff0c;并且使用广泛。PHP是解释性语言&#xff0c;按顺序从上往下执行&#xff0c;无需编译&#xff0c;直接运行。PHP脚本在服务器上运行。 2、ph…

【STM32嵌入式系统设计与开发】——18StaticNixite(静态数码管应用)

这里写目录标题 STM32资料包&#xff1a; 百度网盘下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码&#xff1a;88881、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;主函数头文件函数&#x…