溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Nginx的微服務(wù)架構(gòu)分析

發(fā)布時(shí)間:2021-12-10 17:24:38 來(lái)源:億速云 閱讀:363 作者:iii 欄目:服務(wù)器

本篇內(nèi)容主要講解“Nginx的微服務(wù)架構(gòu)分析”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Nginx的微服務(wù)架構(gòu)分析”吧!

 介紹

NGINX從一開(kāi)始就參與了微服務(wù)運(yùn)動(dòng)。 NGINX的輕巧,高性能和靈活性非常適合微服務(wù)。

NGINX Docker映像是Docker Hub上排名第一的應(yīng)用程序映像,您今天在Web上找到的大多數(shù)微服務(wù)平臺(tái)都包含一個(gè)演示,它以某種形式部署NGINX并連接到歡迎頁(yè)面。

因?yàn)槲覀冋J(rèn)為轉(zhuǎn)向微服務(wù)對(duì)于客戶(hù)的成功至關(guān)重要,我們NGINX已經(jīng)啟動(dòng)了一個(gè)專(zhuān)門(mén)的程序來(lái)開(kāi)發(fā)支持Web應(yīng)用程序開(kāi)發(fā)和交付這種地震轉(zhuǎn)變的功能和實(shí)踐。我們還認(rèn)識(shí)到,實(shí)現(xiàn)微服務(wù)有許多不同的方法,其中許多方法都是新穎的,并且特定于各個(gè)開(kāi)發(fā)團(tuán)隊(duì)的需求。我們認(rèn)為需要使用模型來(lái)使公司更容易開(kāi)發(fā)和交付自己的基于微服務(wù)的應(yīng)用程序。

考慮到這一切,NGINX專(zhuān)業(yè)服務(wù)部門(mén)正在開(kāi)發(fā)NGINX微服務(wù)參考架構(gòu)(MRA) - 一組可用于創(chuàng)建自己的微服務(wù)應(yīng)用程序的模型。

MRA由兩部分組成:三個(gè)模型中的每一個(gè)的詳細(xì)描述,以及實(shí)現(xiàn)我們的示例照片共享程序的可下載代碼,Ingenious。三種型號(hào)的唯一區(qū)別是用于為每種型號(hào)配置NGINX Plus的配置代碼。這一系列博客文章將提供每個(gè)模型的概述說(shuō)明; Ingenious示例程序的詳細(xì)描述,配置代碼和代碼將在今年晚些時(shí)候推出。

我們構(gòu)建此參考架構(gòu)的目標(biāo)有三個(gè):

為客戶(hù)和行業(yè)提供隨時(shí)可用的藍(lán)圖,用于構(gòu)建基于微服務(wù)的系統(tǒng),加速和改進(jìn)開(kāi)發(fā)

創(chuàng)建用于測(cè)試NGINX和NGINX Plus中新功能的平臺(tái),無(wú)論是內(nèi)部開(kāi)發(fā)還是外部開(kāi)發(fā),分布在產(chǎn)品核心中或作為動(dòng)態(tài)模塊

為了幫助我們了解合作伙伴系統(tǒng)和組件,我們可以從整體上了解微服務(wù)生態(tài)系統(tǒng)

微服務(wù)參考架構(gòu)也是NGINX客戶(hù)專(zhuān)業(yè)服務(wù)產(chǎn)品的重要組成部分。在MRA中,我們盡可能使用NGINX開(kāi)源和NGINX Plus共有的功能,并在需要時(shí)使用NGINX Plus特有的功能。 NGINX Plus依賴(lài)關(guān)系在更復(fù)雜的模型中更強(qiáng),如下所述。我們預(yù)計(jì),MRA的許多用戶(hù)將受益于NGINX專(zhuān)業(yè)服務(wù)的訪(fǎng)問(wèn)以及NGINX Plus訂閱的技術(shù)支持。

微服務(wù)參考架構(gòu)概述

我們正在構(gòu)建參考架構(gòu)以符合Twelve-Factor App的原則。這些服務(wù)設(shè)計(jì)為輕量級(jí),短暫的和無(wú)狀態(tài)的。

MRA使用行業(yè)標(biāo)準(zhǔn)組件,如Docker容器,各種語(yǔ)言 - Java,PHP,Python,NodeJS / JavaScript和Ruby - 以及基于NGINX的網(wǎng)絡(luò)。

遷移到微服務(wù)時(shí),應(yīng)用程序設(shè)計(jì)和體系結(jié)構(gòu)的最大變化之一是使用網(wǎng)絡(luò)在應(yīng)用程序的功能組件之間進(jìn)行通信。在單片應(yīng)用程序中,應(yīng)用程序組件在內(nèi)存中進(jìn)行通信。在微服務(wù)應(yīng)用程序中,該通信通過(guò)網(wǎng)絡(luò)進(jìn)行,因此網(wǎng)絡(luò)設(shè)計(jì)和實(shí)施變得至關(guān)重要。

為了反映這一點(diǎn),MRA已經(jīng)使用三種不同的網(wǎng)絡(luò)模型實(shí)現(xiàn),所有這些模型都使用NGINX或NGINX Plus。它們的范圍從相對(duì)簡(jiǎn)單到功能豐富且更復(fù)雜:

  • 代理模型 (Proxy Model)- 一種簡(jiǎn)單的網(wǎng)絡(luò)模型,適用于實(shí)現(xiàn)NGINX Plus作為微服務(wù)應(yīng)用程序的控制器或API網(wǎng)關(guān)。該模型建立在Docker Cloud之上。

  • 路由器網(wǎng)格模型(Router Mesh Model ) - 一種更強(qiáng)大的網(wǎng)絡(luò)方法,每臺(tái)主機(jī)上都有一個(gè)負(fù)載均衡器,可以管理系統(tǒng)之間的連接。該模型類(lèi)似于Deis 1.0的體系結(jié)構(gòu)。

  • 織品模型 (Fabric Model) - MRA的皇冠上的明珠,面料模型在每個(gè)容器中都有NGINX Plus,處理所有入口和出口交通。它適用于高負(fù)載系統(tǒng),并支持所有級(jí)別的SSL / TLS,NGINX Plus提供減少的延遲,持久的SSL / TLS連接,服務(wù)發(fā)現(xiàn)以及所有微服務(wù)中的斷路器模式。

我們的目的是您使用這些模型作為您自己的微服務(wù)實(shí)現(xiàn)的起點(diǎn),我們歡迎您提供有關(guān)如何改進(jìn)MRA的反饋。 (您可以從添加到下面的評(píng)論開(kāi)始。)

以下是每種模型的簡(jiǎn)要說(shuō)明;我們建議您閱讀所有描述,以便開(kāi)始了解如何最好地使用一個(gè)或多個(gè)模型。未來(lái)的博客文章將詳細(xì)描述每個(gè)模型,每個(gè)博客文章一個(gè)。

代理模型簡(jiǎn)介

代理模型是一種相對(duì)簡(jiǎn)單的網(wǎng)絡(luò)模型。它是初始微服務(wù)應(yīng)用程序的出色起點(diǎn),或者是轉(zhuǎn)換中等復(fù)雜的單片遺留應(yīng)用程序的目標(biāo)模型。

在代理模型中,NGINX或NGINX Plus充當(dāng)入口控制器,將請(qǐng)求路由到微服務(wù)。當(dāng)創(chuàng)建新服務(wù)時(shí),NGINX Plus可以使用動(dòng)態(tài)DNS進(jìn)行服務(wù)發(fā)現(xiàn)。當(dāng)使用NGINX作為API網(wǎng)關(guān)時(shí),代理模型也適合用作模板。

Nginx的微服務(wù)架構(gòu)分析

如果需要進(jìn)行服務(wù)間通信 - 并且大多數(shù)應(yīng)用程序都處于任何復(fù)雜程度 - 服務(wù)注冊(cè)表提供集群內(nèi)的機(jī)制。 (有關(guān)服務(wù)間通信機(jī)制的詳細(xì)列表,請(qǐng)參閱此博客文章。)Docker Cloud默認(rèn)使用此方法;為了連接到另一個(gè)服務(wù),服務(wù)查詢(xún)DNS并獲取IP地址以發(fā)送請(qǐng)求。

通常,代理模型適用于簡(jiǎn)單到中等復(fù)雜的應(yīng)用程序。它不是負(fù)載平衡最有效的方法/模型,特別是在規(guī)模上;如果您有嚴(yán)重的負(fù)載平衡要求,請(qǐng)使用下面描述的模型之一。 (“Scale”可以指大量的微服務(wù)以及高流量。)

編輯器 - 有關(guān)此模型的深入探索,請(qǐng)參閱MRA,第2部分 - 代理模型。

路由器網(wǎng)格模型

路由器網(wǎng)格模型中等復(fù)雜,非常適合強(qiáng)大的新應(yīng)用程序設(shè)計(jì),也適用于轉(zhuǎn)換不需要Fabric模型功能的更復(fù)雜的單片遺留應(yīng)用程序。

通過(guò)在每個(gè)主機(jī)上運(yùn)行負(fù)載均衡器并主動(dòng)管理微服務(wù)之間的連接,路由器網(wǎng)狀網(wǎng)模型采用比代理模型更強(qiáng)大的網(wǎng)絡(luò)方法。路由器網(wǎng)格模型的主要優(yōu)點(diǎn)是服務(wù)之間的更高效和穩(wěn)健的負(fù)載平衡。如果使用NGINX Plus,則可以實(shí)施活動(dòng)運(yùn)行狀況檢查以監(jiān)視各個(gè)服務(wù)實(shí)例,并在關(guān)閉時(shí)優(yōu)雅地限制流量。

Nginx的微服務(wù)架構(gòu)分析

Deis Workflow使用類(lèi)似于路由器網(wǎng)格模型的方法在服務(wù)之間路由流量,NGINX實(shí)例在每個(gè)主機(jī)上的容器中運(yùn)行。當(dāng)新的應(yīng)用程序?qū)嵗粏?dòng)時(shí),進(jìn)程從etcd服務(wù)注冊(cè)表中提取服務(wù)信息并將其加載到NGINX中。 NGINX Plus也可以在這種模式下工作,使用各種位置及其相關(guān)的上游。

最后 - Fabric模型,帶有可選的SSL / TLS

我們NGINX對(duì)Fabric模型最為興奮。它帶來(lái)了一些最令人興奮的微服務(wù)承諾,包括高性能,負(fù)載平衡的靈活性,以及無(wú)處不在的SSL / TLS,直到單個(gè)微服務(wù)的水平。 Fabric模型適用于安全應(yīng)用程序,可擴(kuò)展到非常大的應(yīng)用程序。

在Fabric模型中,NGINX Plus部署在每個(gè)容器中,并成為進(jìn)出容器的所有HTTP流量的代理。應(yīng)用程序與本地(localhost)主機(jī)位置通信以獲取所有服務(wù)連接,并依賴(lài)NGINX Plus進(jìn)行服務(wù)發(fā)現(xiàn),負(fù)載平衡和運(yùn)行狀況檢查。

Nginx的微服務(wù)架構(gòu)分析

在我們的配置中,NGINX Plus向ZooKeeper查詢(xún)應(yīng)用程序需要連接的所有服務(wù)實(shí)例。例如,使用DNS頻率設(shè)置(有效)設(shè)置為1秒,NGINX Plus會(huì)每隔一秒掃描ZooKeeper,并適當(dāng)?shù)芈酚闪髁俊?/p>

由于NGINX Plus中強(qiáng)大的HTTP處理功能,我們可以使用keepalive來(lái)維護(hù)與微服務(wù)的狀態(tài)連接,減少延遲并提高性能。當(dāng)使用SSL / TLS來(lái)保護(hù)微服務(wù)之間的流量時(shí),這是一個(gè)特別有價(jià)值的功能。

最后,我們使用NGINX Plus的主動(dòng)健康檢查來(lái)管理健康實(shí)例的流量,并且基本上免費(fèi)構(gòu)建斷路器模式。

MRA的巧妙演示應(yīng)用程序

MRA包括一個(gè)示例應(yīng)用程序作為演示:Ingenious照片共享應(yīng)用程序。 Ingenious在三種模型中實(shí)現(xiàn) - 代理,路由器網(wǎng)格和結(jié)構(gòu)。 Ingenious演示應(yīng)用程序?qū)⒂诮衲晖硇r(shí)候向公眾發(fā)布。

Ingenious是照片存儲(chǔ)和共享應(yīng)用程序的簡(jiǎn)化版本,la Flickr或Shutterfly。我們選擇照片共享應(yīng)用程序的原因有以下幾點(diǎn):

用戶(hù)和開(kāi)發(fā)人員都很容易掌握它的功能。

需要管理多個(gè)數(shù)據(jù)維度。

在應(yīng)用程序中很容易融入漂亮的設(shè)計(jì)。

它提供了非對(duì)稱(chēng)計(jì)算要求 - 高強(qiáng)度和低強(qiáng)度處理的混合 - 可以實(shí)現(xiàn)跨不同功能的故障轉(zhuǎn)移,擴(kuò)展和監(jiān)視功能的真實(shí)測(cè)試。

到此,相信大家對(duì)“Nginx的微服務(wù)架構(gòu)分析”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI