OpenNJet云原生應(yīng)用引擎
OpenNJet 應(yīng)用引擎是基于 NGINX 的面向互聯(lián)網(wǎng)和云原生應(yīng)用提供的運(yùn)行時組態(tài)服務(wù)程序。具備環(huán)境感知、安全控制、加速優(yōu)化等能力,作為底層引擎,OpenNJet 利用動態(tài)加載機(jī)制可以實(shí)現(xiàn)不同的產(chǎn)品形態(tài),如API網(wǎng)關(guān)、消息代理、出入向代理,負(fù)載均衡,WAF等等。在云原生架構(gòu)中,OpenNJet 除了提供南北向通信網(wǎng)關(guān)的功能以外,還提供了服務(wù)網(wǎng)格中東西向通信、透明流量劫持、熔斷、遙測與故障注入等新功能特性。
OpenNJet 最早是基于 NGINX1.19 基礎(chǔ) fork 并獨(dú)立演進(jìn),隨著 NGINX 版本迭代,吸收上游 NGINX 的更新,已經(jīng)同步更新到 NGINX1.23.1 版本,OpenNJet 具有高性能、穩(wěn)定、易擴(kuò)展的特點(diǎn),同時也解決了 NGINX 長期存在的難于動態(tài)配置、管理功能影響業(yè)務(wù)等問題。我們目標(biāo)在于適應(yīng)國內(nèi)特定的技術(shù)規(guī)范及標(biāo)準(zhǔn),如國密算法套件支持、構(gòu)建安全可控的云原生數(shù)據(jù)面,支撐我國云原生產(chǎn)業(yè)生態(tài)。
技術(shù)架構(gòu):
功能特性
| 繼承 nginx-1.23.1 所有功能, 并且100%兼容nginx |
|
| OpenNJet 功能特性 |
|
| Copilot框架 |
支持動態(tài)加載不同的外部copilot模塊 |
| 支持外部模塊異常退出的自動重啟 |
|
| KV模塊 |
支持鍵值的查詢及設(shè)置 |
| 支持鍵值的持久化 |
|
| 動態(tài)配置框架 |
支持控制平面的消息發(fā)送 |
| 支持RPC消息、組播消息
|
|
| 支持消息持久化 |
|
| Cache-purge |
支持緩存清理 |
| 支持按指定前綴清理緩存 |
|
| 開啟分片后修改源文件不會造成下載失敗 |
|
| health_check |
支持單獨(dú)在helper進(jìn)程開啟健康檢查,不影響數(shù)據(jù)面業(yè)務(wù) |
| 支持運(yùn)行時動態(tài)開啟或關(guān)閉健康檢查功能 |
|
| 支持校驗(yàn)返回http code |
|
| 支持校驗(yàn)返回http header |
|
| 支持校驗(yàn)返回http body |
|
| 支持https健康檢查 |
|
| 支持國密https健康檢查 |
|
| Split-clients-2 |
支持藍(lán)綠發(fā)布 |
| 支持運(yùn)行時動態(tài)調(diào)整流量比例 |
|
| 黑白名單 |
支持黑名單方式進(jìn)行訪問IP的限制 |
| 支持白名單方式進(jìn)行訪問IP的限制 |
|
| 支持運(yùn)行時動態(tài)設(shè)置IPv4的黑白名單列表 |
|
| doc模塊 |
支持location 級別通過doc_api 指令配置,實(shí)現(xiàn)對swagger、gui頁面的訪問 |
| 支持通過swagger 頁面實(shí)現(xiàn)對各功能opentapi的訪問 |
|
| 支持通過gui頁面實(shí)現(xiàn)對動態(tài)模塊配置修改的能力 |
|
| telemetry(外部編譯模塊) |
支持http請求在不同server間的服務(wù)追蹤 |
| 支持動態(tài)開關(guān)控制調(diào)用鏈的生成 |
|
| 正向代理(支持http/https) |
實(shí)現(xiàn)了HTTP CONNECT 方法支持http/https正向代理訪問 |
| vts模塊
|
支持server的request、response、traffic、cache信息的統(tǒng)計(jì),其中server的response可以按照response code進(jìn)行分類統(tǒng)計(jì),分類統(tǒng)計(jì)使用的response code為1xx、2xx、3xx、4xx、5xx |
| 支持upstream和cache信息的統(tǒng)計(jì) |
|
| 支持通過內(nèi)嵌的html頁面進(jìn)行統(tǒng)計(jì)信息的展示 |
|
| 支持通過Prometheus、grafana進(jìn)行統(tǒng)計(jì)信息的展示 |
|
| 支持動態(tài)配置server的location統(tǒng)計(jì)開關(guān),支持動態(tài)配置server的filter key |
|
| 國密支持 |
支持server中使用國密 |
| 支持反向代理中使用國密 |
|
| 支持國密雙證證書 |
|
| 動態(tài)(國密)證書更新 |
|
| 動態(tài)access log |
支持運(yùn)行中動態(tài)關(guān)閉access log功能 |
| 支持運(yùn)行中動態(tài)修改寫入的日志文件 |
|
| 支持運(yùn)行中切換syslog服務(wù)器 |
|
| 支持運(yùn)行中切換寫入文件的變量 |
|
| 支持運(yùn)行時增加日志format |
|
| 支持運(yùn)行時修改日志format |
|
| 聲明式API |
支持感知聲明式模塊注冊 |
| 支持查詢聲明式模塊查詢 |
|
| 支持PUT方式更新聲明式配置 |
|
| 邊車支持 |
支持流量劫持,兼容istio 規(guī)則 |
| 支持協(xié)議識別 |
|
| 支持代理http1.1 |
|
| 支持 istio 的雙向認(rèn)證(service-to-service mTLS) |
|
| 動態(tài)location 支持 |
支持通過api 向vs 添加 location |
| 支持通過api 從vs中刪除已經(jīng)添加的location |
|
| 動態(tài)upstream api 支持 |
支持通過api,對http 或stream 中的upstream 信息進(jìn)行查詢 |
| 支持通過api,對http 或stream 中的upstream 的server 進(jìn)行, 添加,修改,刪除 |
|
| 支持通過api,對http 或stream 中的upstream 的統(tǒng)計(jì)信息進(jìn)行重置 |
|
| 支持post 添加的upstream server 持久化或非持久化 |
|
| 動態(tài)域名upstream server |
支持靜態(tài)配置upstream server 域名的reslove 屬性,定時解析域名,根據(jù)域名對應(yīng)的ip 增減結(jié)果,同步更新到upstream server 列表中 |
| 支持通過upstream api post接口,添加server 域名,并定時解析域名 |
|
| Http 會話保持支持 |
支持cookie 會話保持 |
| 支持route 會話保持 |
|
| 支持lear 會話保持 |
|
