掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Introducing the NGINX Microservices Reference Architecture (this post)

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比石獅網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式石獅網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋石獅地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
另請查看有關(guān)微服務(wù)的其他NGINX資源:
介紹
NGINX從一開始就參與了微服務(wù)運動。 NGINX的輕巧,高性能和靈活性非常適合微服務(wù)。
NGINX Docker映像是Docker Hub上排名第一的應(yīng)用程序映像,您今天在Web上找到的大多數(shù)微服務(wù)平臺都包含一個演示,它以某種形式部署NGINX并連接到歡迎頁面。
因為我們認(rèn)為轉(zhuǎn)向微服務(wù)對于客戶的成功至關(guān)重要,我們NGINX已經(jīng)啟動了一個專門的程序來開發(fā)支持Web應(yīng)用程序開發(fā)和交付這種地震轉(zhuǎn)變的功能和實踐。我們還認(rèn)識到,實現(xiàn)微服務(wù)有許多不同的方法,其中許多方法都是新穎的,并且特定于各個開發(fā)團(tuán)隊的需求。我們認(rèn)為需要使用模型來使公司更容易開發(fā)和交付自己的基于微服務(wù)的應(yīng)用程序。
考慮到這一切,NGINX專業(yè)服務(wù)部門正在開發(fā)NGINX微服務(wù)參考架構(gòu)(MRA) - 一組可用于創(chuàng)建自己的微服務(wù)應(yīng)用程序的模型。
MRA由兩部分組成:三個模型中的每一個的詳細(xì)描述,以及實現(xiàn)我們的示例照片共享程序的可下載代碼,Ingenious。三種型號的唯一區(qū)別是用于為每種型號配置NGINX Plus的配置代碼。這一系列博客文章將提供每個模型的概述說明; Ingenious示例程序的詳細(xì)描述,配置代碼和代碼將在今年晚些時候推出。
我們構(gòu)建此參考架構(gòu)的目標(biāo)有三個:
微服務(wù)參考架構(gòu)也是NGINX客戶專業(yè)服務(wù)產(chǎn)品的重要組成部分。在MRA中,我們盡可能使用NGINX開源和NGINX Plus共有的功能,并在需要時使用NGINX Plus特有的功能。 NGINX Plus依賴關(guān)系在更復(fù)雜的模型中更強(qiáng),如下所述。我們預(yù)計,MRA的許多用戶將受益于NGINX專業(yè)服務(wù)的訪問以及NGINX Plus訂閱的技術(shù)支持。
微服務(wù)參考架構(gòu)概述
我們正在構(gòu)建參考架構(gòu)以符合Twelve-Factor App的原則。這些服務(wù)設(shè)計為輕量級,短暫的和無狀態(tài)的。
MRA使用行業(yè)標(biāo)準(zhǔn)組件,如Docker容器,各種語言 - Java,PHP,Python,NodeJS / JavaScript和Ruby - 以及基于NGINX的網(wǎng)絡(luò)。
遷移到微服務(wù)時,應(yīng)用程序設(shè)計和體系結(jié)構(gòu)的最大變化之一是使用網(wǎng)絡(luò)在應(yīng)用程序的功能組件之間進(jìn)行通信。在單片應(yīng)用程序中,應(yīng)用程序組件在內(nèi)存中進(jìn)行通信。在微服務(wù)應(yīng)用程序中,該通信通過網(wǎng)絡(luò)進(jìn)行,因此網(wǎng)絡(luò)設(shè)計和實施變得至關(guān)重要。
為了反映這一點,MRA已經(jīng)使用三種不同的網(wǎng)絡(luò)模型實現(xiàn),所有這些模型都使用NGINX或NGINX Plus。它們的范圍從相對簡單到功能豐富且更復(fù)雜:
我們的目的是您使用這些模型作為您自己的微服務(wù)實現(xiàn)的起點,我們歡迎您提供有關(guān)如何改進(jìn)MRA的反饋。 (您可以從添加到下面的評論開始。)
以下是每種模型的簡要說明;我們建議您閱讀所有描述,以便開始了解如何最好地使用一個或多個模型。未來的博客文章將詳細(xì)描述每個模型,每個博客文章一個。
代理模型簡介
代理模型是一種相對簡單的網(wǎng)絡(luò)模型。它是初始微服務(wù)應(yīng)用程序的出色起點,或者是轉(zhuǎn)換中等復(fù)雜的單片遺留應(yīng)用程序的目標(biāo)模型。
在代理模型中,NGINX或NGINX Plus充當(dāng)入口控制器,將請求路由到微服務(wù)。當(dāng)創(chuàng)建新服務(wù)時,NGINX Plus可以使用動態(tài)DNS進(jìn)行服務(wù)發(fā)現(xiàn)。當(dāng)使用NGINX作為API網(wǎng)關(guān)時,代理模型也適合用作模板。
如果需要進(jìn)行服務(wù)間通信 - 并且大多數(shù)應(yīng)用程序都處于任何復(fù)雜程度 - 服務(wù)注冊表提供集群內(nèi)的機(jī)制。 (有關(guān)服務(wù)間通信機(jī)制的詳細(xì)列表,請參閱此博客文章。)Docker Cloud默認(rèn)使用此方法;為了連接到另一個服務(wù),服務(wù)查詢DNS并獲取IP地址以發(fā)送請求。
通常,代理模型適用于簡單到中等復(fù)雜的應(yīng)用程序。它不是負(fù)載平衡最有效的方法/模型,特別是在規(guī)模上;如果您有嚴(yán)重的負(fù)載平衡要求,請使用下面描述的模型之一。 (“Scale”可以指大量的微服務(wù)以及高流量。)
編輯器 - 有關(guān)此模型的深入探索,請參閱MRA,第2部分 - 代理模型。
路由器網(wǎng)格模型
路由器網(wǎng)格模型中等復(fù)雜,非常適合強(qiáng)大的新應(yīng)用程序設(shè)計,也適用于轉(zhuǎn)換不需要Fabric模型功能的更復(fù)雜的單片遺留應(yīng)用程序。
通過在每個主機(jī)上運行負(fù)載均衡器并主動管理微服務(wù)之間的連接,路由器網(wǎng)狀網(wǎng)模型采用比代理模型更強(qiáng)大的網(wǎng)絡(luò)方法。路由器網(wǎng)格模型的主要優(yōu)點是服務(wù)之間的更高效和穩(wěn)健的負(fù)載平衡。如果使用NGINX Plus,則可以實施活動運行狀況檢查以監(jiān)視各個服務(wù)實例,并在關(guān)閉時優(yōu)雅地限制流量。
Deis Workflow使用類似于路由器網(wǎng)格模型的方法在服務(wù)之間路由流量,NGINX實例在每個主機(jī)上的容器中運行。當(dāng)新的應(yīng)用程序?qū)嵗粏訒r,進(jìn)程從etcd服務(wù)注冊表中提取服務(wù)信息并將其加載到NGINX中。 NGINX Plus也可以在這種模式下工作,使用各種位置及其相關(guān)的上游。
編輯器 - 有關(guān)此模型的深入探索,請參閱MRA,第3部分 - 路由器網(wǎng)格模型(https://www.nginx.com/blog/microservices-reference-architecture-nginx-router-mesh-model/)。
最后 - Fabric模型,帶有可選的SSL / TLS
我們NGINX對Fabric模型最為興奮。它帶來了一些最令人興奮的微服務(wù)承諾,包括高性能,負(fù)載平衡的靈活性,以及??無處不在的SSL / TLS,直到單個微服務(wù)的水平。 Fabric模型適用于安全應(yīng)用程序,可擴(kuò)展到非常大的應(yīng)用程序。
在Fabric模型中,NGINX Plus部署在每個容器中,并成為進(jìn)出容器的所有HTTP流量的代理。應(yīng)用程序與本地(localhost)主機(jī)位置通信以獲取所有服務(wù)連接,并依賴NGINX Plus進(jìn)行服務(wù)發(fā)現(xiàn),負(fù)載平衡和運行狀況檢查。
在我們的配置中,NGINX Plus向ZooKeeper查詢應(yīng)用程序需要連接的所有服務(wù)實例。例如,使用DNS頻率設(shè)置(有效)設(shè)置為1秒,NGINX Plus會每隔一秒掃描ZooKeeper,并適當(dāng)?shù)芈酚闪髁俊?/p>
由于NGINX Plus中強(qiáng)大的HTTP處理功能,我們可以使用keepalive來維護(hù)與微服務(wù)的狀態(tài)連接,減少延遲并提高性能。當(dāng)使用SSL / TLS來保護(hù)微服務(wù)之間的流量時,這是一個特別有價值的功能。
最后,我們使用NGINX Plus的主動健康檢查來管理健康實例的流量,并且基本上免費構(gòu)建斷路器模式。
編輯 - 有關(guān)此模型的深入探索,請參閱MRA,第4部分 - 結(jié)構(gòu)模型(https://www.nginx.com/blog/microservices-reference-architecture-nginx-fabric-model/)。
MRA的巧妙演示應(yīng)用程序
MRA包括一個示例應(yīng)用程序作為演示:Ingenious照片共享應(yīng)用程序。 Ingenious在三種模型中實現(xiàn) - 代理,路由器網(wǎng)格和結(jié)構(gòu)。 Ingenious演示應(yīng)用程序?qū)⒂诮衲晖硇r候向公眾發(fā)布。
Ingenious是照片存儲和共享應(yīng)用程序的簡化版本,la Flickr或Shutterfly。我們選擇照片共享應(yīng)用程序的原因有以下幾點:
結(jié)論
NGINX微服務(wù)參考架構(gòu)對我們來說是一個令人興奮的發(fā)展,對于我們迄今為止共享的客戶和合作伙伴而言。 在接下來的幾個月里,我們將發(fā)布一系列博客文章,詳細(xì)描述它,我們將在今年晚些時候推出。 我們還將在9月7日至9日在德克薩斯州奧斯汀舉行的nginx.conf 2016上詳細(xì)討論。 請給我們您的反饋意見,我們期待著與您相見。
原文:https://www.nginx.com/blog/introducing-the-nginx-microservices-reference-architecture/
本文:http://pub.intelligentx.net/introducing-microservices-reference-architecture-nginx

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流