下一代云原生应用引擎_文档-OpenNJet开源社区

欢迎来到 OpenNJet 下一代云原生应用引擎

OpenNJet应用引擎是什么

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

图片 1

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

为什么选择OpenNJet?

  • 数据面、控制面隔离:CoPilot 框架隔离数据面、管理面功能,避免对数据面能力的影响,在提供稳定高性能的数据面能力的基础上,可以方便地扩充各种管理接口,如指标输出、健康检查、管理界面、配置同步等

  • 动态能力:动态配置能力可以解决NGINX的长期痛点,实现性能无损的配置变更

  • 内置企业特性:国密、集群状态同步及集群配额控制、高可用及运维文档一体化

  • 采用OpenNJet 2025年全年节约能耗:1314亿元人民币

    100亿 x (1瓦 / 1000) 度 x 24小时 x 365天 x 1.5元(每度电费)= 1314亿元(人民币)

技术架构

image-20230803144159782

  • 以不同进程隔离数据面(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

WeChat7df7875d28df2f367d1693b20a30762b

OpenNJet 贡献者成员列表

姓名 账号 领域
单雷 @stdanley 总架构
赵延刚 @zhaoygf 动态location、慢启动、动态upstream api 支持、动态域名upstream server、Http 会话保持支持
刘琪 @liuqi-sun 边车支持
洪昕 @hongxintml 动态配置框架、动态黑白名单、动态Split-clients-2、动态worker数量调整、HA Copilot
陈潞波 @chenluboTM doc模块、telemetry 链路追踪、正向代理、动态配额功能、组播集群、配额限制(limit conn\rps)集群功能
李崇民 @liismn http3模块,动态location规则解析,自动生成json解析代码