当前位置: 首页 > 软件库 > 云计算 > 云原生 >

OpenNJet

云原生应用引擎
授权协议 MulanPSL-2.0
开发语言 C/C++ Perl HTML/CSS
所属分类 云计算、 云原生
软件类型 开源软件
地区 国产
投 递 者 穆浩皛
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序。具备环境感知、安全控制、加速优化等能力,作为底层引擎,OpenNJet 利用动态加载机制可以实现不同的产品形态,如API网关、消息代理、出入向代理,负载均衡,WAF等等。在云原生架构中,OpenNJet 除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信、透明流量劫持、熔断、遥测与故障注入等新功能特性。

OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,随着 NGINX 版本迭代,吸收上游 NGINX 的更新,已经同步更新到 NGINX1.23.1 版本,OpenNJet 具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。我们目标在于适应国内特定的技术规范及标准,如国密算法套件支持、构建安全可控的云原生数据面,支撑我国云原生产业生态。

技术架构:

功能特性

继承 nginx-1.23.1 所有功能, 并且100%兼容nginx

OpenNJet 功能特性

Copilot框架

支持动态加载不同的外部copilot模块

支持外部模块异常退出的自动重启

KV模块

支持键值的查询及设置

支持键值的持久化

动态配置框架

支持控制平面的消息发送

支持RPC消息、组播消息

 

 

支持消息持久化

Cache-purge

支持缓存清理

支持按指定前缀清理缓存

开启分片后修改源文件不会造成下载失败

health_check

支持单独在helper进程开启健康检查,不影响数据面业务

支持运行时动态开启或关闭健康检查功能

支持校验返回http code

支持校验返回http header

支持校验返回http body

支持https健康检查

支持国密https健康检查

Split-clients-2

支持蓝绿发布

支持运行时动态调整流量比例

黑白名单

支持黑名单方式进行访问IP的限制

支持白名单方式进行访问IP的限制

 支持运行时动态设置IPv4的黑白名单列表

doc模块

支持location 级别通过doc_api 指令配置,实现对swaggergui页面的访问

支持通过swagger 页面实现对各功能opentapi的访问

支持通过gui页面实现对动态模块配置修改的能力

telemetry(外部编译模块)

支持http请求在不同server间的服务追踪

支持动态开关控制调用链的生成

正向代理(支持http/https

实现了HTTP CONNECT 方法支持http/https正向代理访问

vts模块

 

 

支持serverrequestresponsetrafficcache信息的统计,其中serverresponse可以按照response code进行分类统计,分类统计使用的response code1xx2xx3xx4xx5xx

支持upstreamcache信息的统计

支持通过内嵌的html页面进行统计信息的展示

支持通过Prometheusgrafana进行统计信息的展示

支持动态配置serverlocation统计开关,支持动态配置serverfilter key

国密支持

支持server中使用国密

支持反向代理中使用国密

支持国密双证证书

动态(国密)证书更新

动态access log

支持运行中动态关闭access log功能

支持运行中动态修改写入的日志文件

支持运行中切换syslog服务器

支持运行中切换写入文件的变量

支持运行时增加日志format

支持运行时修改日志format

声明式API

支持感知声明式模块注册

支持查询声明式模块查询

支持PUT方式更新声明式配置

边车支持

支持流量劫持,兼容istio 规则

支持协议识别

支持代理http1.1

支持 istio 的双向认证(service-to-service mTLS)

动态location 支持

支持通过api vs 添加 location

支持通过api vs中删除已经添加的location

动态upstream api 支持

支持通过api,对http stream 中的upstream 信息进行查询

支持通过api,对http stream 中的upstream server 进行, 添加,修改,删除

支持通过api,对http stream 中的upstream 的统计信息进行重置

支持post 添加的upstream server 持久化或非持久化

动态域名upstream server

支持静态配置upstream server 域名的reslove 属性,定时解析域名,根据域名对应的ip 增减结果,同步更新到upstream server 列表中

支持通过upstream api post接口,添加server 域名,并定时解析域名

Http 会话保持支持

支持cookie 会话保持

支持route 会话保持

支持lear 会话保持

 相关资料
  • 云原生是一种应用开发风格,鼓励在持续交付和价值驱动开发领域轻松采用最佳实践。相关的学科是建立12-factor Apps,其中开发实践与交付和运营目标相一致,例如通过使用声明式编程和管理和监控。Spring Cloud以多种具体方式促进这些开发风格,起点是一组功能,分布式系统中的所有组件都需要或需要时轻松访问。 许多这些功能都由Spring Boot覆盖,我们在Spring Cloud中建立。更多

  • 2017年9月,Mesos宣布支持Kubernetes,而在2017年10月份的DockerCon EU上,Docker公司宣布官方同时支持Swarm和Kubernetes容器编排,Kubernetes已然成为容器编排调度的标准。 作为全书的开头,首先从历史、生态和应用角度介绍一下Kubernetes与云原生应用,深入浅出,高屋建瓴,没有深入到具体细节,主要是为了给初次接触Kubernetes的小

  • 首先我们来阐述下将应用迁移到云原生架构的动机。 速度 天下武功,唯快不破,市场竞争亦是如此。想象一下,能够快速创新、实验并交付软件的企业,与使用传统软件交付模式的企业,谁将在市场竞争中胜出呢? 在传统企业中,为应用提供环境和部署新版本花费的时间通常以天、周或月来计算。这种速度严重限制了每个发行版可以承担的风险,因为修复这些错误往往跟发行一个新版本有差不多的耗时。 互联网公司经常提到它们每天几百次发

  • 当前很多企业正在采用云原生应用程序架构,这可以帮助其IT转型,成为市场竞争中真正敏捷的力量。 O'Reilly 的报告中定义了云原生应用程序架构的特性,如微服务和十二因素应用程序。 本书中作者Matt Stine还探究了将传统的单体应用和面向服务架构(SOA)应用迁移到云原生架构所需的文化、组织和技术变革。本书中还有一个迁移手册,其中包含将单体应用程序分解为微服务,实施容错模式和执行云原生服务的自

  • 从Kubernetes到Cloud Native——云原生应用之路,这是我最近在 ArchSummit2017北京站 和 数人云&TalkingData合办的Service Mesh is coming meetup 中分享的话题。 本文简要介绍了容器技术发展的路径,为何Kubernetes的出现是容器技术发展到这一步的必然选择,而为何Kubernetes又将成为云原生应用的基石。 我的分享按照这

  • 楼主研一,但是误投了暑期实习,所以顺便就面了 1.在滴滴工作做的内容 2.做短视频后端的背景是什么?为什么要做? 3.这个项目做了哪些东西? 4.关注的表是怎么设计的?关注和被关注者关系存储在一行么?存储在一行又什么问题?不存在一行又有什么问题?(没搞懂什么意思)(回答的不好) 5.项目中rabbitmq用在哪些场景?(关注和点赞) 6.rabbitmq的架构说一下 7.rabbitmq是否有消息