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.mzph.cn/pingmian/7107.shtml

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

相关文章

深入探索JDK:Java开发工具包的奥秘

深入探索JDK:Java开发工具包的奥秘 随着信息技术的飞速发展,Java作为一种广泛使用的编程语言,在各个领域都发挥着重要作用。而JDK(Java Development Kit,Java开发工具包)作为Java编程的基础,其…

k8s的架构组成

一 k8s的概述 1.1 概述 k8s是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务,通过k8s能够进行应用的自动化部署和扩缩容。 k8s可以创建多个容器,每个容器运行一个应用实例,然后通过内置的负载均衡策略,实现…

Docker安装gitlab后连接内置pgsql修改用户信息

Docker安装gitlab后连接内置pgsql修改用户信息 进入gitlab容器 docker exec -it gitlab /bin/bash 进入postgresql su - gitlab-psql 连接pgsql psql -h /var/opt/gitlab/postgresql -d gitlabhq_production 命令行直接执行SQL语句 psql -h /var/opt/gitlab/postgresql…

HCIP-Datacom-ARST必选题库_BGP【道题】

1.关于summary automatic命令和BGP聚合的描述,错误的是? 该命令用于实现自动聚合,其优先级高于手动聚合 配置该命令后,BGP将按自然网段聚合路由 该命令用来使能对本地引入的路由进行自动聚合 配置该命令后,BGP只向对等体发送聚合后的路由 1.关于summary automatic命令和BGP聚…

Vue入门到关门之Vue3项目创建

一、vue3介绍 1、为什么要学习vue3? vue3的变化: 首先vue3完全兼容vue2,但是vue3不建议用vue2的写法;其次,vue3拥抱TypeScript,之前vue2使用的JavaScript,ts完全兼容js 最后之前学的vue2 是…

面试经典150题——找出字符串中第一个匹配项的下标

面试经典150题 day23 题目来源我的题解方法一 库函数方法二 自定义indexOf函数方法三 KMP算法 题目来源 力扣每日一题;题序:28 我的题解 方法一 库函数 直接使用indexOf函数。 时间复杂度:O(n) 空间复杂度:O(1) public int str…

(数据分析方法)长期趋势分析

目录 一、定义 二、目的 三、方法 1、移动平均法 (1)、简单移动平均法 (2)、加权移动平均法 (3)、指数平滑法 2、最小二乘法 3、线性回归 1、数据预处理 2、观察数据分布建立假设模型 3、定义损失函数 4、批量梯度下降 5、优化 4、LSTM 时序分析 5、特征工程 一…

vue3中的reactive和ref

🌏总结:reactive 适用于创建复杂的响应式对象,而 ref 则适用于创建简单的响应式值。 reactive 和 ref 是 Vue 3 Composition API 中用于创建响应式数据的两种主要方式,它们的作用如下: 响应式数据管理: rea…

OCC笔记:图形可视化的实现方式

注:文中参看的occ的源码版本为7.4.0 1、实现思路概览 整体架构 主要有3大块:AIS(Application Interactive Services ,直译为:应用程序交互服务)、Graphics(图形)、Geometry & T…

嵌入式交叉编译:Unable to find arm_neon.h

找到文件 搜索了一下,具体目录是: /opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include/arm_neon.h 解决办法 INC_ARM/opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include./configure …

Spring Security + JWT 实现登录认证和权限控制

Spring Security JWT 实现登录认证和权限控制 准备步骤 准备好一些常用的工具类,比如jwtUtil,redisUtil等。引入数据库,mybatis等,配置好controller,service,mapper,保证能够正常的数据请求。…

书籍推荐|经典书籍ic书籍REUSE METHODOLOGY MANUALFOR等和verilog网站推荐(附下载)

大家好,今天是51过后的第一个工作日,想必大家都还没有完全从节假日的吃喝玩乐模式转变为勤勤恳恳的打工人模式,当然也包括我,因此这次更新主要是分享几篇书籍和verilog相关的学习网站~ 首先是一本数字电路相关的基础书籍&#xf…

如何让你的排单更快?

一般我们都喜欢做打板借用快速通道!但是目前快速通道也是共享通道,独立单元格基本不开发。 想要排单更快,想要隔夜打板,我们到底应该怎么做呢? 想要排单更快,说白了就是要提高你的交易速度!一&a…

ld.exe: unrecognized option ‘--major-image-version‘

问题:在windows环境使用cmakemingw32gcc交叉工具链报错 原因:将project指令放到了set(CMAKE_SYSTEM_NAME Linux)之前 下面为CMakeLists.txt正确写法: cmake_minimum_required(VERSION 3.0)#set(CMAKE_C_COMPILER_WORKS 1)#set(CMAKE_CXX_C…

性能超越!新模型Dragoman打造高质量英译乌翻译系统,打败现有SOTA模型

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言:探索乌克兰语的机器翻译挑战 在当今全球化迅速发展的背景下,机器翻译技术已成为沟通世界各地文化和语言的重要桥梁。尽管如此&…

PMO全面指南:一文读懂PMO的功能、职责、类型、构建

多年来,PMO 的概念在多个行业和类型的组织中越来越受欢迎。一开始,只有大型跨国公司才熟悉它,但后来,许多中小型公司开始采用 PMO 来进行高效的项目管理并实现其战略目标。 根据Statista的数据,目前有80%的组织设有至…

【C++基础】构造函数

一,构造函数概念 概念:函数名与类名相同,且没有返回值类型,这就是构造函数,它承担着类初始化的工作。 构造函数虽然名叫构造,但它并不是开空间创建对象,而是初始化对象。 分类:默…

OpenHarmony实战开发-管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果,决定是否赋予前端页面权限。获取设备位置,需要开发者配置ohos.permission.LOCATION,ohos.permission.APPROXIMATE…

基于Springboot的家具网站

基于SpringbootVue的家具网站设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 商家 家具信息 家居资讯 后台管理 后台首页 用户管理 商家管理 家具类型管理 家具…

fabric部署调用合约示例

一 打包智能合约 ①进入fabric-samples文件夹下的chaincode/fabcar/go目录下执行 GO111MODULEon go mod vendor下载依赖(文件夹下已经有go.mod,不需要使用go mod init生成该module文件)②进入到test-network文件下使用以下命令将二进制文件…