【OpenNJet下一代云原生之旅】

OpenNJet下一代云原生之旅

  • 1、OpenNJet的定义
    • OpenNJet架构图
  • 2、OpenNJet的特点
    • 性能无损动态配置
    • 灵活的CoPilot框架
    • 支持HTTP/3
    • 支持国密
    • 企业级应用
    • 高效安全
  • 3、OpenNJet的功能特性
  • 4、OpenNJet的安装使用
    • 编译安装
      • 配置yum源
      • 创建符号连接
      • 修改配置
      • 编译
  • 5、通过 OpenNJet 部署 WEB SERVER
    • 配置OpenNJet
    • 部署 Web 应用程序
    • 启动 NJet
    • 访问 Web 应用程序
  • 6、通过OpenNJet 部署反向代理server
    • 配置 njet.conf 配置文件
    • 启动 OpenNJet,指定配置好的配置文件
    • 请求上游资源,验证反向代理服务
  • 7、使用体验感
  • 8、总结

1、OpenNJet的定义

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

OpenNJet架构图

在这里插入图片描述

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

作为底层引擎,OpenNJet利用动态加载机制可以实现不同的产品形态,如API网关、消息代理、出入向代理,负载均衡,WAF等。
我们在学习一个新的知识之前,学习最好的资源那就是看官方文档,所以我们在学习这个产品也是先去看官方文档:https://njet.org.cn/

2、OpenNJet的特点

性能无损动态配置

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

灵活的CoPilot框架

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

支持HTTP/3

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

支持国密

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

企业级应用

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

高效安全

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

3、OpenNJet的功能特性

它继承 nginx-1.23.1 所有功能, 并且100%兼容nginx!!!
它的功能特性很多,我就着重挑选几个来讲解,因为官方文档里面都很详细:

特性描述
Copilot框架支持动态加载不同的外部copilot模块;支持外部模块异常退出的自动重启
动态配置框架支持控制平面的消息发送; 支持RPC消息、组播消息; 支持消息持久化
黑白名单支持黑名单方式进行访问IP的限制;支持白名单方式进行访问IP的限制;支持运行时动态设置IPv4的黑白名单列表
正向代理(支持http/https)实现了HTTP CONNECT 方法支持http/https正向代理访问
Http 会话保持支持支持cookie 会话保持;支持route 会话保持;支持lear 会话保持
负载均衡slow_start 慢启动功能,针对轮询算法,实现server新增或故障转正常后,业务的流量在指定时间,缓慢增长。

4、OpenNJet的安装使用

我们了解学习完之后,就需要我们进行实操,自己搭建一遍产品,我们才能学的更深入。
更多操作文档参考官方手册:
快速上手手册
使用手册
其中NJet官方提供centos,ubuntu,cloudOS等多个版本的2进制安装包,及软件源。而我们就采用centos安装:

编译安装

配置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文件
查看yum源是否配置成功:

ls -al /etc/yum.repos.d/mercurial.repo
-rw-r--r--. 1 root root 267 37 11:26 /etc/yum.repos.d/mercurial.repo

创建符号连接

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

修改配置

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

编译

点击这个OpenNJet地址里面获取到OpenNJet的压缩包,并把它上传到/home目录下进行解压:

unzip njet1.0.zip

执行脚本:build_cc.sh 之后执行make进行编译

sh build_cc.sh conf

最后执行

make install

5、通过 OpenNJet 部署 WEB SERVER

首先我们需要OpenNJet使用手册的说明安装OpenNJet,使用手册指路:使用手册
这里我使用的是快速上手的学习文档:我们可以跟着官方文档先简单的搭建一个web应用程序:

配置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:

Bash  njet -p /tmpr/njet/ -c conf/njet.conf  

常见启动参数:

  • -p 指定 prefix 配置文件路径,不指定,默认/etc/njet
  • -c 指定配置文件,不指定,默认 njet.conf
  • -e 指定 error 日志文件

访问 Web 应用程序

现在,可以使用 Web 浏览器访问 Web 应用程序。只需输入服务器的 IP 地址或域名即 可访问 Web 应用程序。如果您按照上述示例配置 OpenNJet,则应将 Web 应用程序放置在/var/www/html目录中,并使用服务器的 IP 地址或域名访问它。然后我们就可以看到一个网页:上面写着NJet Hello World。说明已经部署成功!!!

6、通过OpenNJet 部署反向代理server

反向代理知识引入:反向代理(Reverse Proxy)是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
正向代理:将配置文件配置在客户端,客户端所有流量都通过正向代理去访问。
因为OpenNJet 支持反向代理功能的使用,所以我们也可以模拟搭建一下环境看看:安装的流程我们就跳过,可以去查看前面的第4点安装流程。

配置 njet.conf 配置文件

使用反向代理功能,需要使用 proxy_pass 指令来进行反向 代理服务,proxy_pass 设置连接被代理服务器的协议、IP 地址或套接字,也可以是域名或 upstream 定义的服务器组,这里我们使用 upstream 作为上游资源服务器组。
配置信息如下:

JSON
http {    
upstream backend1{          
server 127.0.0.1:8080;          
server 127.0.0.1:8081;       
}    
server {       
listen 9000;       
location /{               
proxy_pass http://backend1;       
}     
}
}

启动 OpenNJet,指定配置好的配置文件

配置好文件,开始启动OpenNJet

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

请求上游资源,验证反向代理服务

部署与配置后,我们就要在服务器命令行界面使用 curl 命令来请求上游服务器的资源,就可以验证反向代理服务是否部署成功。

Bashcurl 
http://127.0.0.1:9000/test/hello.html
<!doctype html>
<html lang="en"> 
<head>  
<title>Document</title> 
</head> 
<body>
Njet Hello World! 
</body>
</html>

7、使用体验感

首先是第一次接触到OpenNJet,第一步的学习就是先去查询官网,了解到OpenNJet是什么样的产品,把官网的产品都翻阅了一遍,然后逐渐了解它的特性和它的功能,然后就是跟着有概念之后去上手实操一遍,自己搭建了一遍环境,安装的话都很简单,我使用了编译安装,按照官方文档的指引,一步步安装没问题,有详细的安装文档,如果环境准备的好,跟着官方文档操作是没有问题的。
这个体验给我的感觉非常好,因为整体搭建过程其实是很简单的,因为都写的很详细,我也可能只是挑选了几个平时常用得着的框架测试体验,给我感觉很好用!它的无论是功能配置方面都很灵活使用。它内部集成的镜像构建、正反向代理、声明式API配置、黑白名单等配置简单,底层简化,框架配置更完善。

8、总结

学习使用OpenNJet,很大程度都是依据官方的文档来执行操作,流程很清晰化,操作也很方便快速。
功能方面它能完全做到南北通信网关功能,并且还有服务网格中东西通信的能力,而且它的功能还增强了透明流量劫持、熔断、遥测与故障注入等新的功能特性,这相比其他平台是一个新的优化和创新。期待OpenNJet 在云原生架构舞台中发光发热!

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

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

相关文章

数字化战略|数字化建设总体规划蓝图PPT(建议收藏)

摘要 这份头部咨询公司关于数字化转型的报告为企业管理者和技术人员提供了一份详尽的数字化转型指南。报告从战略出发&#xff0c;详细阐述了数字生态体系建设、数字化核心方案构建、管理协同能力提升以及数据集中管理和应用能力增强等关键环节。对于从业者而言&#xff0c;报…

CogVLM/CogAgent环境搭建推理测试

引子 对于多模态大语言模型&#xff0c;一直没有怎么接触。刚巧一朋友有问到这方面的问题&#xff0c;也就顺手调研下。智谱AI的东西一直以来&#xff0c;还是很不错的。ChatGLM的忠实fans&#xff0c;看到白嫖网站github上有他们开源的多模态CogVLM/CogAgent&#xff0c;那就…

【JAVA项目】基于SSM的【电动车智能充电服务平台】

技术简介&#xff1a;采用SSM技术、MYSQL等技术实现。 系统简介&#xff1a;电动车智能充电服务平台实现了首页、个人中心、用户管理、充电桩管理、电池商品管理、托送服务管理、我的钱包管理、充值信息管理、消费信息管理、购买订单管理、配送信息管理、服务订单管理、系统管理…

43.139.152.26 C07L01P02 数字8

题目描述 不超过 N 位的正整数中包含有多少数字 8 &#xff1f; 输入格式 一行 1 个正整数 N &#xff0c;范围 [1,16]。 输出格式 一个整数。 输入数据 1 2输出数据 1 20样例解释 8,18,28,38,48,58,68,78,88, 98 与 80,81,82,83,84,85,86,87,89 这些数中有 8 &#xff0…

菜鸡学习netty源码(四)—— EventLoop

1.概述 我们前面进行过分析,channel为netty网络操作的抽象类,EventLoop负责处理注册到其上的Channel处理的I/O事件;EventLoopGroup是一个EventLoop的分组,它可以获取到一个或者多个的EventLoop对象。 2.类关系图 NioEventLoopGroup的类继承图,蓝色部分为对应的java类,绿…

使用Jellyfin创建媒体库

目录 前言 1.介绍Jellyfin 2.安装 3.设置时注意点 4.效果 5.内存占用 前言 分为客户端和服务器端&#xff0c;这里讲的是服务器端的安装 1.介绍Jellyfin Jellyfin 是一个免费开源的媒体服务器软件&#xff0c;它允许您管理和播放您的媒体文件。这些媒体文件可以包括电…

crossover软件是干嘛的 CrossOver软件好用吗 crossover最新2024使用方法教程 MacBook怎么安装exe软件

CrossOver软件是干嘛的 CrossOver由CodeWeavers公司开发&#xff0c;目的是使linux和Mac OS X操作系统和windows系统兼容。这样使用户可以将windows系统上的应用在linux或Mac os上运行。 CrossOver让您可以在Mac和Linux系统上运行Microsoft Windows应用&#xff0c;不必购买W…

第19章 基于质量特性的测试技术

一、功能性测试 &#xff08;一&#xff09;测试方法 等价类边界值法因果图法判定表法场景法 &#xff08;二&#xff09;用例 1、正常用例 2、异常用例 &#xff08;三&#xff09;完备性 1、功能覆盖率 2、X1-A/B 功能覆盖率X&#xff1a;软件实际功能覆盖文档中所有…

Linux的socket详解

一、本机直接的进程通信方式 管道&#xff08;Pipes&#xff09;&#xff1a; 匿名管道&#xff08;Anonymous pipes&#xff09;&#xff1a;通常用于父子进程间的通信&#xff0c;它是单向的。命名管道&#xff08;Named pipes&#xff0c;也称FIFO&#xff09;&#xff1a;允…

2023第十四届蓝桥杯国赛C/C++ 大学 A 组 圆上的连线

思路&#xff1a;很显然总的方案数等于挑选偶数点的方案数乘以对应偶数点的连线方案数之和&#xff0c;挑选偶数点的方案数靠组合数得出&#xff0c;偶数点的连线方案数就是个卡特兰数。具体为什么是卡特兰数&#xff0c;可以任选一个点&#xff0c;枚举这个点所连边的位置&…

Linux搭建sqlilabs靶场

提前准备&#xff1a; 文章中所使用到的Linux系统&#xff1a;Ubantu20.4sqlilabs靶场下载地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令&#xff1a;wget -O install.sh h…

python爬虫实战

import requests import json yesinput(输入页数&#xff1a;) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…

仿知乎网站问答源码,开源版

仿知乎网站问答源码&#xff0c;开源版 需要一定动手能力 发文章&#xff0c;发视频&#xff0c;发想法&#xff0c;提问回答&#xff0c;注册登录 开发环境 使用技术&#xff1a;springbootthymeleafRedis&#xff1b; 开发环境&#xff1a;tomcat8.0&#xff0c;jdk8.0, ID…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发&#xff0c;但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型&#xff08;如Caffe, TensorFlow, PyTorch等…

如何优雅的分析你的微信朋友圈和聊天记录

微信朋友圈、个人聊天记录、微信群聊天记录&#xff1a; 蓝奏云&#xff1a;链接:​www.lanzoub.com/b00rn0g47e 密码:9hww

SPARC VScode EIDE GDB 使用配置

前言 搞了多年的SPARC 最近接触了VSCODE插件感觉好用。想想看不是能方便调试和编译SPARC&#xff0c;决定使用开源的SPARC仿真环境和编译器来试试。感觉的却不错&#xff0c;借此献给使用SPARC的朋友们。安装 1.找微软官方的下载VSCODE. 2.电机左边的方块形状的图标&#xff0…

周鸿祎成了中国新能源汽车的顶流IP

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 以后开公司创业&#xff0c;老板自己做网红是标配。 这句话是我在看了红衣大叔这段时间的操作后发的朋友圈。 短短半年时间(2023.12—2024.5)&#xff0c;周鸿祎就从一名传统互联网企业家变成了新能源汽车顶流IP…

C++相关概念和易错语法(10)(定位new、模板)

1.定位new 我们使用类来实例化对象&#xff0c;开辟空间的时候会自动去调用它的构造函数。但在那篇博客我就特意强调过&#xff0c;使用a.A()的方式是错误的&#xff0c;A()根本不会被识别为一个构造函数&#xff0c;而会被识别为A类型。因此我们要注意最好在实例化对象&#…

2024/5/4 英语每日一段

But something is slowing that rocket down: lack of access to the types of data used to train robots so they can interact more smoothly with the physical world.It’s far harder to come by than the data used to train the most advanced AI models like GPT—mos…

08 IRF技术 华三交换机实现

IRF 详细介绍 我知道 AI IRF 技术是指集成路由功能(Integrated Routing and Bridging)技术,是惠普(Hewlett Packard)公司开发的一种基于硬件的虚拟化技术。IRF 技术可以将多台物理设备组合成一个逻辑设备,实现设备的高可用性和灵活性。 IRF 技术主要有以下特点: 1. …