成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單聊聊從 Nginx 到 Kong 的進(jìn)化

開發(fā) 架構(gòu)
在微服務(wù)時(shí)代,需要在網(wǎng)關(guān)上擴(kuò)展很多功能。但是在 Nginx 里這些功能擴(kuò)展起來并不是很方便,需要開發(fā)熟悉 c 語言,而且發(fā)布起來也得重新編譯,很費(fèi)勁。

大家好,我是飛哥!

在我們的傳統(tǒng)業(yè)務(wù)中,Nginx 在七層網(wǎng)關(guān)場景中應(yīng)用得很廣。但是最近幾年由于微服務(wù)的盛行。Nginx 上的這套生態(tài)鏈也在不斷地進(jìn)化。

2007 年國人章亦春大神在 Nginx 的基礎(chǔ)上開發(fā)出了 OpenResty。2009 年 marco 又在 OpenResty 上開發(fā)出了 kong。截止到寫稿時(shí),該項(xiàng)目已經(jīng) 33 k 的 star 了。

我今天借助騰訊云來帶大家學(xué)習(xí)下 kong 所具備的各種能力。

一、Nginx 是如何進(jìn)化到 kong 的

在傳統(tǒng)的互聯(lián)網(wǎng)服務(wù)中,對網(wǎng)關(guān)的主要訴求就是反向代理、負(fù)載均衡、路由等基礎(chǔ)功能。

一個(gè)經(jīng)典的業(yè)務(wù)的架構(gòu)圖一般是采用四層 LVS 做 對外 IP 收斂,在七層采用 Nginx 來負(fù)責(zé)七層 HTTPS 協(xié)議接入,反向代理、負(fù)載均衡、路由。

圖片

Nginx 的每個(gè) Worker 進(jìn)程在底層都使用一個(gè) epoll 對象,高效管理海量的 socket 連接上的網(wǎng)絡(luò)事件的處理。參見飛哥之前寫的搞懂 Nginx 高性能網(wǎng)絡(luò)工作原理!這篇文章。

性能上的問題是解決了,但是現(xiàn)在隨著微服務(wù)的發(fā)展,服務(wù)被拆的非常零散,降低了耦合度的同時(shí)也給服務(wù)的統(tǒng)一管理增加了難度。

例如服務(wù)發(fā)現(xiàn)。在 Nginx 中,所有的后端服務(wù)都是以靜態(tài)配置文件的形式記錄的。每當(dāng)后端服務(wù)的 IP 發(fā)生變化的時(shí)候,需要重新修改配置文件。

但在微服務(wù)時(shí)代,后端都是用容器部署的,每次版本發(fā)布都會(huì)導(dǎo)致 IP 的變化。而且微服務(wù)時(shí)代還需要?jiǎng)討B(tài)的擴(kuò)縮容,都會(huì)導(dǎo)致后端服務(wù) IP 的變化。傳統(tǒng)的修改配置文件才能重新分配流量的方式顯然已經(jīng)無法滿足需要。

除了服務(wù)發(fā)現(xiàn)以外,微服務(wù)時(shí)代對網(wǎng)關(guān)還有其他一些新的需求,例如限流、協(xié)議轉(zhuǎn)換、身份驗(yàn)證、安全防護(hù)等功能,都需要在網(wǎng)關(guān)中能夠支持。

我們都知道,Nginx 是用 c 語言寫的。如果想在 Nginx 的基礎(chǔ)上開發(fā)這些功能,成本還是挺高的。首先 c 語言的門檻就會(huì)比其它語言要高一些。其次,每次功能的修改都需要重新編譯發(fā)布 Nginx。

好在國人章亦春大神搞出了 OpenResty,將 Lua JIT 內(nèi)嵌到了 Nginx 的內(nèi)部,以支持通過 lua 語言對 Nginx 的能力進(jìn)行方便地?cái)U(kuò)展開發(fā)。這樣每當(dāng)有新功能擴(kuò)展的時(shí)候,只需要將 lua 代碼發(fā)布一下,然后將 Nginx reload 一下就 ok 了。

飛哥之前所負(fù)責(zé)的搜狗瀏覽器在不少的模塊中都是采用這種模式開發(fā)的,使用 lua 語言對 Nginx 功能進(jìn)行擴(kuò)展。既簡單方便,還基本接近原生 Nginx 的性能。

有了 OpenResty,網(wǎng)關(guān)方便地進(jìn)行功能擴(kuò)展的技術(shù)路徑就算是打通了。后來 Mashape 在 OpenResty 的基礎(chǔ)上迭代發(fā)布了一個(gè)新網(wǎng)關(guān) Kong。

我覺得 kong 最優(yōu)雅的設(shè)計(jì)就是它的插件機(jī)制。該網(wǎng)關(guān)基于通過插件化的方式來支持網(wǎng)關(guān)功能的擴(kuò)展,并提供了 60 多種插件。當(dāng)對網(wǎng)關(guān)有特定需求的時(shí)候,直接選擇一個(gè)或者幾個(gè)插件就可以輕松在 Nginx 上支持新功能了。

圖片

Kong 的插件機(jī)制是其高可擴(kuò)展性的根源,Kong 可以很方便地為路由和服務(wù)提供各種插件,網(wǎng)關(guān)所需要的基本特性,Kong 都如數(shù)支持。如果現(xiàn)有的插件不能滿足你的,需求,你也可以使用 lua 語言輕松自己開發(fā)一個(gè)滿足自己需求的插件。

二、展示 kong 的功能

kong 的環(huán)境配起來還是有一點(diǎn)點(diǎn)小復(fù)雜的。它需要 Postgres 或者 Cassandra 等數(shù)據(jù)庫來管理路由配置,服務(wù)配置,upstream 配置等信息。還需要安裝 konga(最好的 kong 的管理程序)。

在騰訊云上的微服務(wù)引擎中,已經(jīng)集成了 kong 網(wǎng)關(guān),可以一鍵配置,非常的方便。我就以騰訊云上的 kong 為例,來給大家展示一下 kong 所具備的功能。

在騰訊云微服務(wù)引擎后臺一鍵就可以創(chuàng)建 kong 網(wǎng)關(guān)。

圖片

當(dāng)你選擇好配置并創(chuàng)建 kong 實(shí)例后,其內(nèi)部依賴的數(shù)據(jù)庫和管理程序 konga 就全都自動(dòng)一鍵生成好了。

圖片

在 konga 管理后臺中,可以通過 service、route 菜單來管理服務(wù)以及路由。

圖片

接下來幾乎所有的工作都可以通過 konga 界面來可視化地完成。比如你想添加一個(gè)證書的話,直接點(diǎn)擊 “CERTIFICATES” 按鈕。填寫 Certificate、Key,并填域名到 Server Name Indications 中,單擊 SUBMIT CERTIFICATES 提交就完事。

圖片

圖片

服務(wù)是需要監(jiān)控的。在 Google的網(wǎng)站可靠性工程師小組(SRE)對服務(wù)提出了幾個(gè)需要監(jiān)控的黃金指標(biāo),例如延遲、流量和錯(cuò)誤。kong 可以很方便地和 Prometheus 等云原生組件對接起來,以實(shí)現(xiàn)這些黃金指標(biāo)的監(jiān)控功能。

在騰訊云中,不需要額外的配置,這些功能都自動(dòng)的配置好了,直接在實(shí)例的監(jiān)控頁查看即可。

圖片

kong 也可以 ELK 打通,實(shí)現(xiàn)日志的查看與檢索。

圖片

如果想將日志長期存儲(chǔ)的話,直接開啟 CLS 日志服務(wù)的話就可以實(shí)現(xiàn)長期保存。

另外在“PLUGINS”菜單中,騰訊云提供了各種內(nèi)置插件可以直接選用。包含訪問鑒權(quán)、安全控制、運(yùn)維支持、報(bào)文轉(zhuǎn)換、流量控制等五個(gè)大類,幾十個(gè)插件。

圖片

另外在界面上沒有展示的是,騰訊云的 kong 還支持無損擴(kuò)容,同城多活等高可用特性。

三、總結(jié)

在微服務(wù)時(shí)代,需要在網(wǎng)關(guān)上擴(kuò)展很多功能。但是在 Nginx 里這些功能擴(kuò)展起來并不是很方便,需要開發(fā)熟悉 c 語言,而且發(fā)布起來也得重新編譯,很費(fèi)勁。

OpenResty 支持了 lua JIT,使得可以通過簡單的 lua 語言來擴(kuò)展網(wǎng)關(guān)的功能。kong 網(wǎng)關(guān)根據(jù)微服務(wù)對網(wǎng)關(guān)的需求,通過插件機(jī)制對網(wǎng)關(guān)進(jìn)行功能擴(kuò)展。并開發(fā)了許多現(xiàn)成的插件,直接拿來即用。

最后我又借助騰訊云給大家展示了是如何通過 konga 配置網(wǎng)關(guān),對服務(wù)的黃金指標(biāo)進(jìn)行監(jiān)控,并進(jìn)行日志檢索的。在部署使用以及運(yùn)維上,騰訊云也更方便易用,而且也穩(wěn)定。

總之,在今天的互聯(lián)網(wǎng)中,kong 可能比 nginx 更加適合業(yè)務(wù)!

責(zé)任編輯:武曉燕 來源: 開發(fā)內(nèi)功修煉
相關(guān)推薦

2021-09-01 22:58:22

Canvas標(biāo)簽

2024-07-08 08:11:15

2022-03-29 09:35:15

FirefoxUI瀏覽器

2021-03-09 08:01:27

CPUarm64寄存器

2018-12-21 11:01:05

存儲(chǔ)大數(shù)據(jù)RAID

2020-12-03 14:03:29

中臺數(shù)智化架構(gòu)

2018-10-10 14:02:30

Linux系統(tǒng)硬件內(nèi)核

2009-06-01 10:11:55

路由器DIR-685D-Link

2013-04-17 11:18:11

編程語言

2025-02-06 16:51:30

2018-03-19 15:35:27

華為

2011-10-03 20:23:34

2011-01-04 17:08:10

匯編語言

2012-06-12 09:17:42

蘋果WWDC

2024-02-04 09:13:24

基礎(chǔ)設(shè)施代碼DevOps

2024-09-26 10:29:56

數(shù)據(jù)中臺數(shù)據(jù)飛輪

2024-03-05 10:34:33

KubernetesPod云原生

2024-12-24 07:20:00

C++std::anyC++17

2020-11-27 10:34:01

HTTPHTTPS模型

2024-10-09 10:33:56

Go語言DevOps
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 九九热国产视频 | 天堂免费看片 | 91精品国产综合久久久久蜜臀 | 欧美中文字幕一区二区三区亚洲 | 久久99精品国产99久久6男男 | 国产精品美女久久久久久久久久久 | 亚洲免费大片 | 中文在线www | 亚洲免费精品 | 91精品麻豆日日躁夜夜躁 | 福利视频二区 | 99精品国产在热久久 | 美女黄色在线观看 | 四虎成人精品永久免费av九九 | 亚洲成人av在线 | 欧美一二三区 | 精品国产亚洲一区二区三区大结局 | 日本视频一区二区三区 | 国外成人在线视频网站 | 国产一区二区三区免费观看在线 | 综合国产在线 | 欧美一级欧美一级在线播放 | 日韩一级免费电影 | 精品国产乱码久久久久久丨区2区 | 国产精品视频一区二区三区 | 国产精品毛片一区二区在线看 | 操操操操操| 欧美一区二区三区在线观看 | 国产99久久精品一区二区300 | 久久久激情 | 奇色影视| 欧美日韩电影一区二区 | 亚洲精品久久久久久一区二区 | 国产综合欧美 | 国产一区二区三区 | 99精品一级欧美片免费播放 | av香蕉| 日韩成人免费在线视频 | 亚洲一区二区在线视频 | 一级片在线视频 | 日韩中文字幕一区二区 |