欢迎来到 OpenNJet 下一代云原生应用引擎
OpenNJet应用引擎是什么
OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序,作为底层引擎,OpenNJet 实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态,如Web服务器、流媒体服务器、负载均衡、代理(Proxy)、应用中间件、API网关、消息队列等产品形态等等。OpenNJet 在云原生架构中作为数据平面,除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信能力。在原有功能基础上增加了透明流量劫持、熔断、遥测与故障注入等新功能特性。
OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,OpenNJet 具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。我们旨在适应国内特定的技术规范及标准,如国密算法套件支持、构建安全可控的云原生数据面,支撑我国云原生产业生态。
为什么选择OpenNJet?
-
数据面、控制面隔离:CoPilot 框架隔离数据面、管理面功能,避免对数据面能力的影响,在提供稳定高性能的数据面能力的基础上,可以方便地扩充各种管理接口,如指标输出、健康检查、管理界面、配置同步等
-
动态能力:动态配置能力可以解决NGINX的长期痛点,实现性能无损的配置变更
-
内置企业特性:国密、集群状态同步及集群配额控制、高可用及运维文档一体化
-
采用OpenNJet 2025年全年节约能耗:1314亿元人民币
100亿 x (1瓦 / 1000) 度 x 24小时 x 365天 x 1.5元(每度电费)= 1314亿元(人民币)
技术架构
- 以不同进程隔离数据面(workers)及控制管理能力(copilots),两者间主要通过共享内存共享数据;
- 利用 mqtt 协议构建底层 event bus,形成一套动态配置框架,第三方模块容易的实现动态配置改造;
- coworkers 采用插件机制,可以按需和不同的系统对接,实现不同的管控能力;
路线图
功能规划
OpenNJet充分吸收了开源社区的建议,在功能规划上包含了4大类18类组件,具体功能如下:
OpenNJet功能亮点总结:
- 及时的国际/国家标准支持,如HTTP3, OpenNJet 会在2023年度发布的版本2.0完善支持;
- 内置企业特性,如集群规模的流量控制、高可用、API集成支持;
- 安全加固,如内置WAF、多种认证授权方式的集成;
- 动态能力,已经原生实现业界呼声最高的动态路由能力;
- 可编程性,OpenNJet 除了内置对HTTP 1/2/3的支持外,还支持利用脚本实现对特定应用协议的解析,并根据协议内容进行特定的路由;
- 数据、管控能力隔离,可观测性需要的指标、追踪数据采集不会影响对业务的处理,不会导致业务处理的性能降级;
- 适应面广,可适应本地、容器及云原生部署。
Q3 Milestone
贡献
贡献指南
如果您对我们的项目非常感兴趣,请查看 贡献指南 了解更多贡献的流程,当然,我们也非常欢迎您通过Issue的方式帮助修正我们的贡献流程。
沟通渠道
- 技术交流面对面:QQ群号:607280080
- 工作组会议纪要
OpenNJet 贡献者成员列表
姓名 | 账号 | 领域 |
---|---|---|
单雷 | 总架构 | |
赵延刚 | 动态location、慢启动、动态upstream api 支持、动态域名upstream server、Http 会话保持支持 | |
刘琪 | 边车支持 | |
洪昕 | 动态配置框架、动态黑白名单、动态Split-clients-2、动态worker数量调整、HA Copilot | |
陈潞波 | doc模块、telemetry 链路追踪、正向代理、动态配额功能、组播集群、配额限制(limit conn\rps)集群功能 | |
李崇民 | http3模块,动态location规则解析,自动生成json解析代码 |