探索OpenNJet :快速上手下一代云原生应用引擎

2024-04-29 03:44

本文主要是介绍探索OpenNJet :快速上手下一代云原生应用引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 初识OpenNJet
  • OpenNJet 编译与安装
  • OpenNJet 使用教程
  • OpenNJet 产品体验感受

初识OpenNJet

OpenNJet最早是基于NGINX1.19基础,fork并独立演进的开源应用引擎,并随着NGINX版本迭代,吸收上游NGINX的更新,已经同步更新到NGINX1.23.1版本。OpenNJet的目标在于适应国内特定的技术规范及标准,如国密算法套件支持,并构建安全可控的云原生数据面,支撑我国云原生产业生态。作为底层引擎,OpenNJet利用动态加载机制可以实现不同的产品形态,如API网关、消息代理、出入向代理,负载均衡,WAF等等

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

OpenNJet 编译与安装

本文带大家使用CentOS 编译环境开发

  • 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

如图
在这里插入图片描述

如图:

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

在这里插入图片描述

  • 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

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

  • 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

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

  • 4.修改 ld.so.conf 配置
sudo bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
  • 5.上传压缩文件到home目录下

git仓库地址:https://github.com/OpenNJet/OpenNJet
可以下载zip文件

在这里插入图片描述

解压:

unzip OpenNJet-main.zip

在这里插入图片描述

编译

sh build_cc.sh conf

在这里插入图片描述

*执行:**make

make

执行成功截图如下:
在这里插入图片描述

OpenNJet 使用教程

  • 常用命令
 njet -h //显示帮助信息njet -p /tmpr/njet/ -c conf/njet.conf //启动​njet -t //测试配置信息是否有错误njet -v //显示版本njet -s stop 或者 kill -TERM {进程id} //快速停止njet -s reload 或者 kill -HUP {进程id}//重新加载配置
  • 正向代理

配置在客户端,客户端所有流量都通过正向代理去访问

指令介绍

proxy_connect
Syntax: proxy_connect Default: none Context: server
启用“ CONNECT”HTTP 方法支持。
proxy_connect_allow
Syntax: proxy_connect_allow all | [port ...] | [port-range ...] Default: 443 563 Context: server

此指令指定代理 CONNECT 方法可以连接到的端口号或范围的列表。 默认情况下,只启用默认的 https 端口(443)和默认的 snews 端口(563)。 使用此指令将覆盖此默认值,并仅允许连接到列出的端口。

All 值将允许所有端口进行代理。
给定值将允许指定的端口代理。
port-range 将允许指定的端口到代理的范围,例如:

Plaintext
proxy_connect_allow 1000-2000 3000-4000; # allow range of port from 1000 to 2000, from 3000 to 4000.

proxy_connect_connect_timeout
Syntax: proxy_connect_connect_timeout time Default: none Context: server

定义与代理服务器建立连接的超时。

代理配置示例
Example

Bash
server {listen 80;    //端口设定resolver 114.114.114.114; # dns解析服务器proxy_connect;proxy_connect_allow            443, 456;proxy_connect_connect_timeout  10s;location /{proxy_pass $scheme://$host$request_uri; #proxy_pass 用来要代理的网站,#$scheme是客户端请求的协议(如http,https);#$host是客户端请求的域名(如baidu.com);#$request_uri是客户端访问的url地址(如/baidu?s=12345)。#他们拼接成就是http://baidu.com/baidu?s=12345}}
}

客户端配置(win11系统为例)
在这里插入图片描述

OpenNJet 产品体验感受

当我第一次体验OpenNJet时,我被其在性能和灵活性方面的卓越表现所吸引。首先,OpenNJet基于NGINX引擎,利用了NGINX1.23.1版本的最新功能,为系统提供了出色的性能和稳定性。无论是处理大流量还是保障系统稳定运行,OpenNJet都表现出色。
其次,OpenNJet提供了丰富的功能模块,包括API网关、消息代理、出入向代理、负载均衡、WAF等,这些模块可以根据需求进行动态加载,为系统提供了极大的灵活性和可定制性。例如,我可以根据业务需求轻松地添加API网关和负载均衡功能,而不需要重新配置整个系统。

在实际使用中,我发现OpenNJet的易用性也很高。它提供了清晰的配置文件和详尽的文档,使得配置和管理变得非常简单和直观。我可以轻松地根据文档指引完成各种配置,而无需过多的技术背景知识。

对于新手来说,开始使用OpenNJet可能会感到有些挑战,但以下建议可以帮助他们更轻松地入门:

  • 学习基础知识: 在深入研究OpenNJet之前,建议新手先对相关的基础知识进行学习。这包括了解NGINX、云原生技术、网络代理等基本概念,这些知识将有助于理解OpenNJet的工作原理和使用方法。
  • 阅读文档和教程: OpenNJet提供了详细的文档和教程,新手可以通过阅读这些文档来了解OpenNJet的各种功能、配置和用法。务必花时间仔细阅读并理解文档中的内容,这将帮助您更快地掌握OpenNJet。
  • 尝试示例代码: OpenNJet的文档中通常会包含一些示例代码,新手可以尝试运行这些示例代码,以加深对OpenNJet的理解。通过实际操作,您可以更直观地了解OpenNJet的工作方式和效果。
  • 遵循最佳实践: 在使用OpenNJet时,建议新手遵循最佳实践和安全原则。例如,配置合适的安全策略、备份数据、定期更新系统等,这样可以提高系统的稳定性和安全性。
    参考资料
    开发指南https://gitee.com/njet-rd/docs/blob/master/zh-cn/CoPilot%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md
    使用手册https://gitee.com/njet-rd/docs/blob/master/zh-cn/OpenNJet%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8Cv2.1.0.md

这篇关于探索OpenNJet :快速上手下一代云原生应用引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945032

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式