OpenNJet应用引擎——云原生时代的Web服务新选择

文章目录

  • OpenNJet应用引擎——云原生时代的Web服务新选择
    • 引言:
    • 数字化转型的推动力:OpenNJet应用引擎
      • 为什么选择OpenNJet?
    • OpenNJet的核心优势
      • 1. 云原生功能增强
      • 2. 安全加固
      • 3. 代码重构与性能优化
      • 4. 动态加载机制
      • 5. 多样化的产品形态
      • 6. 易于集成与扩展
      • 7. 社区与文档支持
    • 基于Centos 7部署的最佳实践
      • OpenNJet 编译与安装
        • 1. 配置Yum源
        • 2. 安装依赖软件包
        • 3. 创建符号链接
        • 4. 修改动态链接器配置
        • 5. 获取OpenNJet源码
        • 6. 编译OpenNJet
        • 7. 编译结果验证
      • OpenNJet 使用教程
        • 常用命令
        • 正向代理配置
        • 示例配置
    • 个人体验分享

OpenNJet应用引擎——云原生时代的Web服务新选择

引言:

数字化转型的浪潮席卷全球,企业对于高效、灵活且安全的Web服务解决方案的需求愈发迫切。在云计算和微服务架构的推动下,传统的Web服务器正逐渐被新一代的云原生应用服务所取代。

数字化转型的推动力:OpenNJet应用引擎

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

为什么选择OpenNJet?

[图片]

  1. 高效架构
    OpenNJet的CoPilot框架实现了数据面与控制面的分离,这意味着可以在不影响数据传输性能的前提下,轻松扩展管理功能,如监控和配置同步。
  2. 灵活的动态配置
    突破传统限制,OpenNJet允许在线修改配置而不中断服务,大幅提升了运维效率和系统的灵活性。
  3. 企业级功能
    内建国密支持、集群同步、配额控制等高级特性,为企业提供了一个安全、可控的网络服务平台。
  4. 经济效益显著
    OpenNJet优化资源管理,以2025年为例,全年可节约能耗成本高达1314亿元人民币,凸显了其在大规模部署中的经济效益。

OpenNJet的核心优势

随着互联网技术的不断进步,企业和开发者们面临着一系列新的挑战和机遇。他们需要一个既能够提供高性能,又能保持高度灵活性和安全性的平台,来支持日益复杂的应用场景。OpenNJet正是在这样的背景下应运而生,它不仅继承了NGINX的稳定性和高效性,还通过一系列创新的特性,满足了现代云原生应用的需求。

1. 云原生功能增强

OpenNJet深度集成了云原生技术栈,支持Kubernetes等容器编排平台,简化了云环境中的部署和扩展。它通过容器感知的健康检查和自动伸缩功能,确保了服务的高可用性和弹性。此外,OpenNJet还支持服务网格技术,如Istio,为微服务架构下的通信、监控和安全性提供了更细粒度的控制。

2. 安全加固

在安全方面,OpenNJet通过实现最新的WAF(Web应用防火墙)规则和支持如TLS 1.3等现代加密协议,加固了网络层的安全。它还集成了实时的入侵检测系统和自动化的安全事件响应机制,能够及时发现并防御潜在的安全威胁。此外,OpenNJet提供了细粒度的访问控制和审计日志,帮助企业满足合规性要求。

3. 代码重构与性能优化

OpenNJet对NGINX的代码进行了彻底的重构,优化了事件驱动模型和并发处理机制。这不仅提升了处理静态和动态内容的性能,还减少了内存占用和上下文切换开销。通过使用最新的编译技术,如JIT(即时编译),OpenNJet能够在运行时优化性能,动态调整资源分配。

4. 动态加载机制

OpenNJet的动态加载机制允许在运行时无需重启服务即可加载新的模块或更新配置。这一特性极大地提高了应用的灵活性和敏捷性,使得开发者能够快速响应市场变化,实现持续集成和持续部署(CI/CD)。同时,这也降低了维护成本,因为更新和扩展服务变得更加容易。

5. 多样化的产品形态

OpenNJet的多功能性使其能够适应不同的业务场景。作为Web服务器,它能够处理数以百万计的并发连接;作为API网关,它提供了API发布和管理的功能;作为负载均衡器,它能够智能分配流量,优化资源使用。这种灵活性使得OpenNJet成为构建现代互联网应用的理想选择。

6. 易于集成与扩展

OpenNJet提供了丰富的API接口和模块化的设计,使得第三方开发者可以轻松地扩展其功能。无论是集成第三方认证系统,还是开发自定义的负载均衡策略,OpenNJet都提供了必要的工具和文档支持。这种开放性促进了一个活跃的开发者社区的形成。

7. 社区与文档支持

OpenNJet拥有一个活跃的开发者社区,提供了大量的教程、文档和论坛支持。这些资源不仅帮助新手快速上手,也为经验丰富的开发者提供了深入学习的平台。社区还定期举办线上和线下的交流活动,促进了知识的共享和技术的创新。

基于Centos 7部署的最佳实践

为了帮助您更深入地了解每个步骤,以下是对OpenNJet在CentOS环境下编译与安装过程的详细描述,以及使用教程的扩展说明,供小伙伴们参考:

OpenNJet 编译与安装

1. 配置Yum源

这一步是为了确保您的系统可以访问到安装OpenNJet所需的所有软件包。

  • 安装额外的软件仓库:执行以下命令来添加EPEL和SCL源,以及IUS源,后者提供了更为更新的GCC版本。
sudo yum --enablerepo=extras install -q -y epel-release centos-release-scl-rh https://repo.ius.io/ius-release-el7.rpm
  • 添加Mercurial源:为了安装版本控制系统Mercurial,需要添加Mercurial的Yum源。
sudo curl -o /etc/yum.repos.d/mercurial.repo https://www.mercurial-scm.org/release/centos7/mercurial.repo

在这里插入图片描述

  • 验证Mercurial源:检查Mercurial源是否已经成功添加到Yum源列表中。
ls -al /etc/yum.repos.d/mercurial.repo
2. 安装依赖软件包

这一步安装了编译OpenNJet所需的开发工具集和库文件。

  • 安装开发工具和库:运行下面的命令来安装必要的软件包。
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. 修改动态链接器配置

这一步确保了系统能够找到并使用安装的库文件

  • 更新动态链接器配置:运行下面的命令来添加用户定义的库路径到动态链接器的配置文件中。
sudo bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
5. 获取OpenNJet源码

这一步涉及从GitHub获取OpenNJet的源码。

  • 克隆或下载源码:使用Git克隆仓库或直接下载源码压缩包,并解压到您的home目录。
git clone https://github.com/OpenNJet/OpenNJet.git
# 或者
unzip OpenNJet-main.zip -d ~/

[图片]

6. 编译OpenNJet

编译过程将生成可执行的OpenNJet程序。

  • 编译源码:在源码目录中执行编译脚本,并构建程序。
cd ~/OpenNJet
sh build_cc.sh conf
make

[图片]

7. 编译结果验证

编译完成后,您可以通过检查终端的输出信息来确认是否编译成功,通常成功编译会显示“Build successful”或类似的结束语。

OpenNJet 使用教程

常用命令

了解和掌握以下常用命令将帮助您更高效地使用OpenNJet。

  • 查看帮助信息:njet -h 将提供命令行工具的使用帮助。
  • 启动服务:使用配置文件启动OpenNJet服务,例如:njet -p /tmp/njet/ -c conf/njet.conf。
  • 测试配置:通过 njet -t 来检查配置文件是否有语法错误。
  • 查看版本:njet -v 将显示当前安装的OpenNJet版本。
  • 停止服务:快速停止OpenNJet服务,可以使用 njet -s stop 或者通过 kill -TERM {进程id} 来终止进程。
  • 重新加载配置:使用 njet -s reload 来重新加载配置文件,而不中断正在处理的连接。
正向代理配置

正向代理允许客户端通过代理服务器来访问互联网。

  • 启用CONNECT****方法:proxy_connect on; 启用了对CONNECT方法的支持,这对于代理某些类型的网络流量是必要的。
  • 设置允许的端口:proxy_connect_allow 443 563; 定义了允许通过代理连接的端口列表。
  • 设置连接超时:proxy_connect_timeout 10s; 设置了与代理服务器建立连接的超时时间。
示例配置

以下是一个Nginx服务器的配置示例,展示了如何设置正向代理:

server {
    listen 80;
    resolver 114.114.114.114;

    proxy_connect on;
    proxy_connect_allow 443 456;
    proxy_connect_timeout 10s;

    location / {
        proxy_pass $scheme://$host$request_uri;
    }
}

个人体验分享

OpenNJet作为一款基于NGINX引擎的网络应用平台,它在性能和灵活性方面的表现确实令人瞩目。从我个人的体验来看,OpenNJet在处理高并发流量时的稳定性和响应速度都非常出色,这使得它能够轻松应对大流量场景,同时保证了系统的流畅运行。这种性能的卓越表现,对于需要承载大量用户请求的系统来说,无疑是一个巨大的优势。

在功能方面,OpenNJet提供了包括API网关、消息代理、负载均衡、WAF等在内的多种功能模块。这些模块可以根据用户需求灵活加载,极大地提升了平台的可定制性和适应性。用户可以根据自己的业务需求,轻松添加或移除特定的功能模块,而不需要重新配置整个系统。这种模块化的设计,使得OpenNJet能够快速适应不同的业务场景,满足多样化的需求。

易用性也是OpenNJet的一大亮点。它提供了清晰的配置文件和详尽的文档,使得配置和管理变得非常简单和直观。即使是没有太多技术背景的用户,也可以根据文档指引完成各种配置,大大降低了技术门槛。这种易用性的设计,使得OpenNJet不仅适用于专业的技术人员,也适合非技术背景的用户使用。

对于新手来说,虽然开始使用OpenNJet可能会感到有些挑战,但通过一些方法和建议,可以更轻松地入门。首先,新手应该学习一些基础知识,如NGINX和网络代理等,这有助于理解OpenNJet的工作原理和使用方法。其次,阅读官方文档和教程是非常重要的,这些文档提供了详细的功能介绍、配置方法和使用案例,对于新手来说是非常宝贵的学习资源。此外,尝试运行文档中提供的示例代码,可以加深对OpenNJet操作的理解。通过实际操作,新手可以更直观地了解OpenNJet的工作方式和效果。同时,遵循最佳实践和安全原则也是非常重要的,如配置合适的安全策略、备份数据、定期更新系统等,这样可以提高系统的稳定性和安全性。

OpenNJet拥有一个活跃的社区,新手可以利用这个资源,向其他用户学习,获取帮助和支持。同时,社区也是一个很好的交流平台,可以与其他用户分享经验,共同成长。此外,OpenNJet团队持续对产品进行更新和优化,新手应关注产品的最新动态,及时了解新功能和优化点,以充分发挥OpenNJet的潜力。
在安全性方面,OpenNJet内置的WAF功能为系统提供了额外的安全保障,可以有效防御常见的网络攻击,保护系统不受侵害。这在当前网络安全形势日益严峻的背景下,显得尤为重要。

在我个人的使用过程中,OpenNJet给我的感觉是它不仅仅是一款性能出色的网络应用平台,更是一款能够激发用户创造性和灵活性的工具。我特别欣赏它在处理复杂网络请求时的稳定性,这在我之前使用过的其他平台中是难以匹敌的。它能够稳定地处理突发的流量高峰,这一点对于维护用户体验至关重要。 我在使用OpenNJet时,也对其模块化的功能设计感到非常满意。我可以根据自己的具体需求,快速地添加或移除功能模块,而不需要对整个系统架构进行大规模的调整。这种灵活性让我能够快速响应市场变化,及时调整服务以满足用户需求。 此外,OpenNJet的易用性也是我选择它的一个重要原因。即使我不是专业的网络工程师,也能够通过它提供的清晰文档和示例代码,快速地理解和配置各项功能。这种易用性极大地提高了我的工作效率,让我能够将更多的精力投入到核心业务逻辑的开发上,而不是花费大量时间在配置和调试网络设置上。

探索OpenNJet的无限可能,就从它的官方网站开始。点击链接 https://njet.org.cn/
开发指南: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

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

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

相关文章

产业空间集聚DO指数计算

1.前言 创始人 :Duranton and Overman(2005) 目前应用较多的产业集聚度量指数主要基于两类,一是根据不同空间地理单元中产业经济规模的均衡性进行构造,如空间基尼系数与EG指数;二是基于微观企业地理位置信息形成的产业…

嵌入式系统应用-拓展-FLASH之操作 SFUD (Serial Flash Universal Driver)之KEIL应用

这里已经假设SFUD代码已经移植到工程下面成功了,如果读者对SFUD移植还不了解。可以参考笔者这篇文章:SFUD (Serial Flash Universal Driver)之KEIL移植 这里主要介绍测试和应用 1 硬件设计 这里采用windbond 的W25Q32这款芯片用于SFUD测试。 W25Q32是…

LLM⊗KG范式下的知识图谱问答实现框架思想阅读

分享一张有趣的图,意思是在分类场景下,使用大模型和fasttext的效果,评论也很逗。 这其实背后的逻辑是,在类别众多的分类场景下,尤其是在标注数据量不缺的情况下,大模型的收益是否能够比有监督模型的收益更多…

[渗透利器]全能工具=信息收集->漏洞扫描->EXP调用

前言 hxd开发的工具,大致模块有(信息收集,漏洞扫描,暴力破解,POC/EXP,常用编码) 工具使用 下载后解压 安装环境 pip install -r requirements.txt 注意,该工具继承了两种不同的使…

HTML_CSS学习:定位

一、相对定位 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>相对定位</title><style>.outer{width: 500px;background-color: #999ff0;border: 1px solid #000;p…

OpenHarmony实战开发-上传文件

Web组件支持前端页面选择文件上传功能&#xff0c;应用开发者可以使用onShowFileSelector()接口来处理前端页面文件上传的请求。 下面的示例中&#xff0c;当用户在前端页面点击文件上传按钮&#xff0c;应用侧在onShowFileSelector()接口中收到文件上传请求&#xff0c;在此接…

不考408的985,不想考408的有福了!吉林大学计算机考研考情分析

吉林大学&#xff08;Jilin University&#xff09;简称吉大&#xff0c;位于吉林长春&#xff0c;始建于1946年&#xff0c;是中华人民共和国教育部直属的综合性全国重点大学&#xff0c;国家“双一流”、“211工程”、“985工程”、“2011计划”重点建设的著名学府&#xff0…

我是如何带团队从0到1做了AI中台

经历心得 我从18年初就开始带这小团队开始做项目&#xff0c;比如最初的数字广东的协同办公项目&#xff0c;以及粤信签小程序等&#xff0c;所以&#xff0c;在团队管理&#xff0c;人员安排&#xff0c;工作分工&#xff0c;项目拆解等方面都有一定的经验。 19年中旬&#…

基于TL431和CSA的恒压与负压输出

Hello uu们,51去那里玩了呀?该收心回来上班了,嘿嘿! 为什么会有这个命题,因为我的手头只有这些东西如何去实现呢?让我们一起来看电路图吧.电路图如下图1所示 图1:CSA恒压输出电路 图1中,R1给U2提供偏置,Q1给R1提供电流,当U1-VOUT输出大于2.5V时候,U2内部的三极管CE导通,使得…

Kalign 3:大型数据集的多序列比对

之前一直用的是muscle&#xff0c;看到一个文章使用了Kalign&#xff0c;尝试一下吧 安装 wget -c https://github.com/TimoLassmann/kalign/archive/refs/tags/v3.4.0.tar.gz tar -zxvf v3.4.0.tar.gz cd kalign-3.4.0 mkdir build cd build cmake .. make make test su…

JVM之内存分配的详细解析

内存分配 两种方式 不分配内存的对象无法进行其他操作&#xff0c;JVM 为对象分配内存的过程&#xff1a;首先计算对象占用空间大小&#xff0c;接着在堆中划分一块内存给新对象 如果内存规整&#xff0c;使用指针碰撞&#xff08;Bump The Pointer&#xff09;。所有用过的内…

图片四张的时候两个一排 图片三张 五张的时候三个一排 css 如何实现

实现的效果如下图 1、html <view v-if"item.photo_list && item.photo_list.length ! 0" :class"getImageClass(item.photo_list.length)"><view v-for"(j,ind) in item.photo_list" :key"photoind" class"imag…

[python]texthero安装后测试代码

测试环境&#xff1a; anaconda3python3.8 texthero1.1.0 测试代码来自官方&#xff1a;https://github.com/jbesomi/texthero 代码&#xff1a; import texthero as hero import pandas as pddf pd.read_csv("https://gitee.com/FIRC/texthero/raw/master/dataset/…

自动化运维管理工具-------------Ansible

目录 一、自动化运维工具有哪些&#xff1f; 1.1Chef 1.2puppet 1.3Saltstack 二、Ansible介绍 2.1Ansible简介 2.2Ansible特点 2.3Ansible工作原理及流程 2.3.1内部流程 2.3.2外部流程 三、Ansible部署 3.1环境准备 3.2管理端安装 ansible 3.3Ansible相关文件 …

Hibernate 元数据模型(MetaModel)提示类没有找到错误

在进行一次编译的时候&#xff0c;提示下面的错误信息&#xff1a; java: java.lang.ClassNotFoundException: org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor 问题和解决 如果你对 Hibernate 的元数据还是不非常了解的话&#xff0c;请参考文章&#xff1a; JPA 的…

保研面试408复习 3——操作系统

文章目录 1、操作系统一、进程有哪几种状态&#xff0c;状态之间的转换、二、调度策略a.处理机调度分为三级&#xff1a;b.调度算法 标记文字记忆&#xff0c;加粗文字注意&#xff0c;普通文字理解。 为什么越写越少&#xff1f; 问就是在打瓦。(bushi) 1、操作系统 一、进程…

深度学习中的不确定性量化:技术、应用和挑战综述(一)

不确定性量化(UQ)在减少优化和决策过程中的不确定性方面起着关键作用&#xff0c;应用于解决各种现实世界的科学和工程应用。贝叶斯近似和集成学习技术是文献中使用最广泛的两种UQ方法。在这方面&#xff0c;研究人员提出了不同的UQ方法&#xff0c;并测试了它们在各种应用中的…

JAVA学习14——异常

目录 异常&#xff1a; 1.异常基本介绍&#xff1a; 2.异常体系图&#xff1a; 3.五大运行时异常&#xff1a; &#xff08;1&#xff09;NullPointerException空指针异常&#xff1a; &#xff08;2&#xff09;AirthmetiException数字运算异常&#xff1a; &#xff0…

翻译《The Old New Thing》 - Thread messages are eaten by modal loops

Raymond Chen 2005年4月26日 模态消息循环吃掉了线程消息 简要 文章提出了一个常见但也容易被忽视的问题&#xff1a; 线程消息&#xff08;由 PostThreadMessage 创建&#xff09;在模态循环中会被 DispatchMessage 丢弃&#xff0c;因为它们没有关联的窗口句柄。建议在创建窗…

2024年好用的几款数据库管理工具

本文主要介绍几款市面上好用的几款支持多种数据库、跨平台的数据库管理工具&#xff0c;包括开源/免费/收费不同的形式。 1. Chat2DB Chat2DB 是一款自2022年9月起开源的AI驱动的数据库管理工具&#xff0c;现如今已经超过了13k的Star。由EasyExcel&#xff08;31K Star&#…
最新文章