OpenNJet,够轻更强云原生应用引擎

news2024/12/23 23:39:48

前言:

         在正式介绍OpenNJet之前,我们先来看看它的技术架构,如下图所示,OpenNJet正是NGINX的Pro版,在100%兼容NGINX基础上,新增了动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。

        NGINX作为我们熟悉的老大哥,以其高效的异步事件驱动模型而闻名,在高流量场景下能够保持出色的性能,而不会像传统的同步服务器那样因为每个连接都占用一个线程而导致资源耗尽。今天给大家介绍的OpenNJet继承了

        NGINX的高性能、并拥有功能多、强安全、可扩展、可编程、易管理等独特优势。那接下来跟着我一起从0-1揭开OpenNJet的神秘面纱吧。

一、初识OpenNJet

  1、颜值:高矮胖瘦?

        前面我们了解到OpenNJet拥有很多独特的优势,为了实现这些复杂的功能,OpenNJet应该比较重。因此在我的潜意识中OpenNJet应该是一款"重量级的嘉宾",然而OpenNJet的RPM安装包,只有仅仅的6M左右,真是一个字绝,因此OpenNJet给我的第一印象是够轻

2、初体验:3分钟上手

        在被OpenNJet够轻震撼的同时,我开始了我的体验之旅。OpenNJet的整个安装过程也非常简单,本次以Centos7的操作系统为例,来详细阐述整个安装过程。

  2.1安装前准备

        NJet官方提供centos,ubuntu,cloudOS等多个版本的2进制安装包,及软件源。如果你也是选择RPM的安装方式,我们需要先检查自己的Centos的版本,是不是Centos7的。

检查linux版本命令。

cat /etc/os-release

2.2安装启动

          在检查完我们系统版本后,我们需要检查自己的账号是不是root账号,有没有连接外网等,如果我们不是root账号,我们需要在安装命令前面加上sudo来提权安装,服务器没有连接外网的情况下,我们可以点击下面链接先下载到本地再上传至linux系统安装盘中。

  https://gitee.com/njet-rd/njet/releases/download/v2.0.1/njet-2.0.1-1.el7.x86_64.rpm

  在线安装命令

下载njet2.1.0版本

sudo wget https://gitee.com/njet-rd/njet/releases/download/v2.1.0/njet-2.1.0-1.el7.x86\_64.rpm

#通过yum进行本地安装 sudo yum localinstall ./njet-2.1.0-1.el7.x86\_64.rpm

#启动njet sudo systemctl start njet

图2.2.1下载安装包效果图

图2.2.2yum本地安装效果图

图2.2.3成功启动效果图

Tips:整个过程只需三句命令,如果我们顺利的话,整个过程大概在三分钟左右可以完成。需要注意的是如果我们在下载安装包过程中遇到网络异常,被异常中断后,再次下载会默认将安装包重命名。如下图所示,此时我们需要将旧的安装包进行删除,再重命名我们新下载的安装包,继续后续的操作。

        如上图所示,再次下载安装rpm安装包被重命名为...rpm.1,这里需特别注意下。

二、OpenNJet实战表现

  1、动态配置体验

        我们通过简单的三步命令完成了OpenNJet的安装和启动,这是我们可以通过{ip}:8081/doc/swagger/,进入OpenNJet的swagger 页面。在swagger 页面中可以对各功能api的访问,比如健康检查、动态access log 配置、动态VTS配置、动态 location 配置、动态 upstream api 配置等。

        通过简单的web界面,就可以动态了解各api的GET/POST请求,轻松实现各种云原生api接口的配置接口访问,不愧是下一代云原生应用引擎,够强。

2、 GUI 参数动态配置

        我们知道在NIGINX中参数都是静态配置,这导致每次修改一个小参数都必须重启服务才能生效,这对于云原生应用来说是非常的不友好。如下图所示我们通过{ip}:8081/doc/gui/,进入OpenNJet参数动态配置界面,通过点击加号新增log模块,点击保存两步就完成http_log模块的设置。

3、应用代理

        企业出于数据安全等方面的考虑,很多应用都是在内网运行,但有时我们又需要与外部的一些应用集成,如企业微信、钉钉、飞书等。但我们又不能直接开放外网,此时我们就需要一款优秀的代理软件来完成与外部应用的通信。下面我们来看看OpenNJet是怎么快速实现我们的BI应用与企业微信代理通信。

        在代理服务器上配置 OpenNJet代理。修改配置文件conf/njet.conf,在http{}之间添加如下代码:

server {
    listen 8113;  // 代理服务器端口
    server_name frbi.cngrgf.com.cn;  //代理服务器IP或者域名
    access log logs/fr/access.log; //记录运行日志
    error log logs/fr/error.log;//记录错误日志
    location / {
        proxy_pass http://10.110.13.109:80;//应用服务器内网地址
        proxy set header Host frbi.cngrgf.com.cn;//外网访问域名
    }
    
}

        如找到njet.conf文件,添加代理信息,保持后进行功能测试。

        在没有代理前,我们只能通过内网ip的方式来访问BI应用服务器。

        通过OpenNJet代理后,我们就可以通过外网域名的方式来访问我们的BI应用了,这样我们就可以通过OpenNJet代理与企业微信进行通信。

        通过OpenNJet代理后,BI系统就可以及时将企业发生的异常信息推送至企业微信群,大大降低了异常风险,提高了异常关闭的及时率和成本。

        为了让大家更直观的感受,我们将推送的企业微信消息在浏览器端打开,我们可以看到,通过 OpenNJet代理转发后,将我们的异常信息推送到了企业微信中。

三、总结

        总的来说,OpenNJet是一款轻量化的云原生应用引擎,强大而不笨重,易上手、不熬人。因其OPEN的api接口加上动态应用配置,更能满足企业对应用软件7*24小时高可用、高性能的运行需求。

        当然OpenNJet还有很多应用场景等待挖掘,如果你也对OpenNJet感兴趣,不妨点击下方链接试用。欢迎在下方留言讨论,一起探索OpenNJet更多神奇的应用。

https://njet.org.cn/

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

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

相关文章

如何在您的WordPress网站上安装和设置W3 Total Cache

本周有一个客户,购买Hostease的虚拟主机,询问我们的在线客服,如何在您的WordPress网站上安装和设置W3 Total Cache?我们为用户提供相关教程,用户很快解决了遇到的问题。在此,我们分享这个操作教程&#xff…

React19学习-初体验

升级react19版本 安装 npm install reactbeta react-dombeta如果使用ts则需要在package.json中添加。等正式版发布直接可以使用types/react了 "overrides": {"types/react": "npm:types-reactbeta","types/react-dom": "npm:ty…

翻工第二次 Ant Design Pro 下载,发现问题,电脑网络配置有误,魔法了

一、相关网址链接 鱼皮的用户中心项目 (前端Ant Design Pro构建) 语雀 ## 没有选择umi版本这一步 Issue #11144 ant-design/ant-design-pro GitHub 关于umi ui图标未显示问题_umi ui不出现-CSDN博客 二、存在问题 导致下载速度慢 本人镜像代码写…

vue + element-plus 开发中遇到的问题

1.问题之路由守卫 初写路由守卫,对于next()的理解不是很透彻,就想着都放行,不然看不到效果,结果控制台出现了警告,想着报黄的问题就不是问题,但仔细一看发现他说,如果再生产阶段就会失败&#x…

数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)

绪论 千里之行始于足下;继续坚持 1.对比Python和numpy的性能 使用魔法指令%timeit进行对比 需求: 实现两个数组的加法数组 A 是 0 到 N-1 数字的平方数组 B 是 0 到 N-1 数字的立方 import numpy as np def numpy_sum(text_num):"""…

【软件测试】3.开发模型

目录 1.常见的开发模型 1.1瀑布模型 1.2螺旋模型 1.3增量模型和迭代模型 1.4敏捷模型 1.4.1特点: 1.5Scrum模型(三个角色和五个重要会议) 1.5.1三个角色: 1.5.2Scrum工作流程(五个会议) 1.6测试模…

PCIE学习(2)PCIE配置空间详解

文章目录 前言一、配置空间header二、Base Address register(BAR)2.1、BAR是干什么的2.2、具体实现过程BAR示例1——32bit内存地址空间请求BAR示例2——64bit内存地址空间请求 前言 图片来自:https://zhuanlan.zhihu.com/p/463518877 一、…

传感器—超声波雷达

声波技术 在讲述超声波雷达之前,先了解一下声波的概念以及超声波和声波之间的关系 什么是声波? 声波是物体机械振动状态(或能量)的传播形式。所谓振动是指物质的质点在其平衡位置附近进行的往返运动形式,这种振动状…

设计模式1——初步认识篇

设计模式1——初步认识篇 一、先让我们浅聊一下面向对象和设计模式。 说起设计模式,我第一次听到它,是在学习面向对象的时候。那么什么是面向对象,什么是设计模式,而且设计模式和面向对象又有什么关系呢? 1、什么是面…

智能创作时代:AI引领下的内容生产革命与效率提升

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

OpenHarmony 实战开发——移植通信子系统

通信子系统目前涉及Wi-Fi和蓝牙适配,厂商应当根据芯片自身情况进行适配。 移植指导 Wi-Fi编译文件内容如下: 路径:“foundation/communication/wifi_lite/BUILD.gn” group("wifi") {deps [ "$ohos_board_adapter_dir/ha…

【start和run的区别(面试题)及创建线程的五种写法】

线程 1.start和run的区别2.创建线程的五种写法1.继承Thread,重写run2.实现runnable,重写run3.继承Thread,重写run,使用匿名内部类4.实现Runnable,重写run,使用匿名内部类5.使用lambda表达式 1.start和run的区别 1.start方法内部,是会调用到系统api&…

用于视频大型多模态模型(Video-LMMs)的复杂视频推理和鲁棒性评估套件

1 引言 最近,大型语言模型(LLMs)在同时处理广泛的NLP任务的同时展示了令人印象深刻的推理和规划能力。因此,将它们与视觉模态集成,特别是用于视频理解任务,催生了视频大型多模态模型(Video-LMMs)。这些模型充当视觉聊天机器人,接受文本和视频作为输入,并处理各种任务,包括视频…

《2024网络安全报告》中文版

Check Point发布了《2024 年网络安全报告》,Check Point Research 对网络攻击数据(包括所有地区和全球的统计数据)进行了全面分析,揭示了不断变化的网络威胁形势。 ● 去年,全球 1/10 的机构遭遇勒索软件攻击尝试&a…

浅析扩散模型与图像生成【应用篇】(二十三)——Imagic

23. Imagic: Text-Based Real Image Editing with Diffusion Models 该文提出一种基于文本的真实图像编辑方法,能够根据纯文本提示,实现复杂的图像编辑任务,如改变一个或多个物体的位姿和组成,并且保持其他特征不变。相比于其他文…

C++基础中的存储类别

存储的类别是变量的属性之一,C语言定义了4种变量的存储类别,分别是auto变量、static变量、register变量和extern变量。以下重点介绍这几种类型。 一、auto变量 auto变量是C默认的存储类型。函数内未加存储类型说明的变量均被称为自动变量,即…

UBOOT介绍

一、UBOOT简介 U-boot全称 Universal Boot Loader,是遵循GPL条款的开放源码项目,uboot 是一个裸机代码,可以看作是一个裸机综合例程,执行启动内核的功能。 补充:GPL条款(GNU General Public License&…

数据分析:基于sparcc的co-occurrence网络

介绍 Sparcc是基于16s或metagenomics数据等计算组成数据之间关联关系的算法。通常使用count matrix数据。 安装Sparcc软件 git clone gitgithub.com:JCSzamosi/SparCC3.git export PATH/path/SparCC3:$PATHwhich SparCC.py导入数据 注:使用rarefy抽平的count ma…

css--控制滚动条的显示位置

各种学习后的知识点整理归纳,非原创! ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…

k8s部署最新版zookeeper集群(3.9.2),并配置prometheus监控

目录 zookeeper集群部署创建zookeeper文件夹namespace.yamlscripts-configmap.yamlserviceaccount.yamlstatefulset.yamlsvc-headless.yamlsvc.yamlmetrics-svc.yaml执行部署 接入prometheus访问prometheus查看接入情况导入zookeeper监控模版监控展示 zookeeper集群部署 复制粘…