「首席架構師看微服務架構」介紹NGINX的微服務參考架構

2021-01-10 首席架構師智庫

所有六個博客,以及一個關於微服務應用程式的Web前端的博客,都被收集到一個免費的電子書中。

另請查看有關微服務的其他NGINX資源:

A very useful and popular series by Chris Richardson about microservices application designThe Chris Richardson articles collected into a free ebook, with additional tips on implementing microservices with NGINX and NGINX PlusOther microservices blog postsMicroservices webinarsMicroservices Solutions pageTopic: Microservices介紹

NGINX從一開始就參與了微服務運動。 NGINX的輕巧,高性能和靈活性非常適合微服務。

NGINX Docker映像是Docker Hub上排名第一的應用程式映像,您今天在Web上找到的大多數微服務平臺都包含一個演示,它以某種形式部署NGINX並連接到歡迎頁面。

因為我們認為轉向微服務對於客戶的成功至關重要,我們NGINX已經啟動了一個專門的程序來開發支持Web應用程式開發和交付這種地震轉變的功能和實踐。我們還認識到,實現微服務有許多不同的方法,其中許多方法都是新穎的,並且特定於各個開發團隊的需求。我們認為需要使用模型來使公司更容易開發和交付自己的基於微服務的應用程式。

考慮到這一切,NGINX專業服務部門正在開發NGINX微服務參考架構(MRA) - 一組可用於創建自己的微服務應用程式的模型。

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

我們構建此參考架構的目標有三個:

為客戶和行業提供隨時可用的藍圖,用於構建基於微服務的系統,加速和改進開發創建用於測試NGINX和NGINX Plus中新功能的平臺,無論是內部開發還是外部開發,分布在產品核心中或作為動態模塊為了幫助我們了解合作夥伴系統和組件,我們可以從整體上了解微服務生態系統微服務參考架構也是NGINX客戶專業服務產品的重要組成部分。在MRA中,我們儘可能使用NGINX開源和NGINX Plus共有的功能,並在需要時使用NGINX Plus特有的功能。 NGINX Plus依賴關係在更複雜的模型中更強,如下所述。我們預計,MRA的許多用戶將受益於NGINX專業服務的訪問以及NGINX Plus訂閱的技術支持。

微服務參考架構概述

我們正在構建參考架構以符合Twelve-Factor App的原則。這些服務設計為輕量級,短暫的和無狀態的。

MRA使用行業標準組件,如Docker容器,各種語言 - Java,PHP,Python,NodeJS / JavaScript和Ruby - 以及基於NGINX的網絡。

遷移到微服務時,應用程式設計和體系結構的最大變化之一是使用網絡在應用程式的功能組件之間進行通信。在單片應用程式中,應用程式組件在內存中進行通信。在微服務應用程式中,該通信通過網絡進行,因此網絡設計和實施變得至關重要。

為了反映這一點,MRA已經使用三種不同的網絡模型實現,所有這些模型都使用NGINX或NGINX Plus。它們的範圍從相對簡單到功能豐富且更複雜:

代理模型 (Proxy Model)- 一種簡單的網絡模型,適用於實現NGINX Plus作為微服務應用程式的控制器或API網關。該模型建立在Docker Cloud之上。路由器網格模型(Router Mesh Model ) - 一種更強大的網絡方法,每臺主機上都有一個負載均衡器,可以管理系統之間的連接。該模型類似於Deis 1.0的體系結構。織品模型 (Fabric Model) - MRA的皇冠上的明珠,面料模型在每個容器中都有NGINX Plus,處理所有入口和出口交通。它適用於高負載系統,並支持所有級別的SSL / TLS,NGINX Plus提供減少的延遲,持久的SSL / TLS連接,服務發現以及所有微服務中的斷路器模式。我們的目的是您使用這些模型作為您自己的微服務實現的起點,我們歡迎您提供有關如何改進MRA的反饋。 (您可以從添加到下面的評論開始。)

以下是每種模型的簡要說明;我們建議您閱讀所有描述,以便開始了解如何最好地使用一個或多個模型。未來的博客文章將詳細描述每個模型,每個博客文章一個。

代理模型簡介

代理模型是一種相對簡單的網絡模型。它是初始微服務應用程式的出色起點,或者是轉換中等複雜的單片遺留應用程式的目標模型。

在代理模型中,NGINX或NGINX Plus充當入口控制器,將請求路由到微服務。當創建新服務時,NGINX Plus可以使用動態DNS進行服務發現。當使用NGINX作為API網關時,代理模型也適合用作模板。

如果需要進行服務間通信 - 並且大多數應用程式都處於任何複雜程度 - 服務註冊表提供集群內的機制。 (有關服務間通信機制的詳細列表,請參閱此博客文章。)Docker Cloud默認使用此方法;為了連接到另一個服務,服務查詢DNS並獲取IP位址以發送請求。

通常,代理模型適用於簡單到中等複雜的應用程式。它不是負載平衡最有效的方法/模型,特別是在規模上;如果您有嚴重的負載平衡要求,請使用下面描述的模型之一。 (「Scale」可以指大量的微服務以及高流量。)

編輯器 - 有關此模型的深入探索,請參閱MRA,第2部分 - 代理模型。

路由器網格模型

路由器網格模型中等複雜,非常適合強大的新應用程式設計,也適用於轉換不需要Fabric模型功能的更複雜的單片遺留應用程式。

通過在每個主機上運行負載均衡器並主動管理微服務之間的連接,路由器網狀網模型採用比代理模型更強大的網絡方法。路由器網格模型的主要優點是服務之間的更高效和穩健的負載平衡。如果使用NGINX Plus,則可以實施活動運行狀況檢查以監視各個服務實例,並在關閉時優雅地限制流量。

Deis Workflow使用類似於路由器網格模型的方法在服務之間路由流量,NGINX實例在每個主機上的容器中運行。當新的應用程式實例被啟動時,進程從etcd服務註冊表中提取服務信息並將其加載到NGINX中。 NGINX Plus也可以在這種模式下工作,使用各種位置及其相關的上遊。

編輯器 - 有關此模型的深入探索,請參閱MRA,第3部分 - 路由器網格模型(https://www.nginx.com/blog/microservices-reference-architecture-nginx-router-mesh-model/)。

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

我們NGINX對Fabric模型最為興奮。它帶來了一些最令人興奮的微服務承諾,包括高性能,負載平衡的靈活性,以及無處不在的SSL / TLS,直到單個微服務的水平。 Fabric模型適用於安全應用程式,可擴展到非常大的應用程式。

在Fabric模型中,NGINX Plus部署在每個容器中,並成為進出容器的所有HTTP流量的代理。應用程式與本地(localhost)主機位置通信以獲取所有服務連接,並依賴NGINX Plus進行服務發現,負載平衡和運行狀況檢查。

在我們的配置中,NGINX Plus向ZooKeeper查詢應用程式需要連接的所有服務實例。例如,使用DNS頻率設置(有效)設置為1秒,NGINX Plus會每隔一秒掃描ZooKeeper,並適當地路由流量。

由於NGINX Plus中強大的HTTP處理功能,我們可以使用keepalive來維護與微服務的狀態連接,減少延遲並提高性能。當使用SSL / TLS來保護微服務之間的流量時,這是一個特別有價值的功能。

最後,我們使用NGINX Plus的主動健康檢查來管理健康實例的流量,並且基本上免費構建斷路器模式。

編輯 - 有關此模型的深入探索,請參閱MRA,第4部分 - 結構模型(https://www.nginx.com/blog/microservices-reference-architecture-nginx-fabric-model/)。

MRA的巧妙演示應用程式

MRA包括一個示例應用程式作為演示:Ingenious照片共享應用程式。 Ingenious在三種模型中實現 - 代理,路由器網格和結構。 Ingenious演示應用程式將於今年晚些時候向公眾發布。

Ingenious是照片存儲和共享應用程式的簡化版本,la Flickr或Shutterfly。我們選擇照片共享應用程式的原因有以下幾點:

用戶和開發人員都很容易掌握它的功能。需要管理多個數據維度。在應用程式中很容易融入漂亮的設計。它提供了非對稱計算要求 - 高強度和低強度處理的混合 - 可以實現跨不同功能的故障轉移,擴展和監視功能的真實測試。結論

NGINX微服務參考架構對我們來說是一個令人興奮的發展,對於我們迄今為止共享的客戶和合作夥伴而言。 在接下來的幾個月裡,我們將發布一系列博客文章,詳細描述它,我們將在今年晚些時候推出。 我們還將在9月7日至9日在德克薩斯州奧斯汀舉行的nginx.conf 2016上詳細討論。 請給我們您的反饋意見,我們期待著與您相見

相關焦點

  • DDD到底適不適合微服務架構?
    從初期的單體架構,到豎井式架構、RPC架構,再到大放異彩的微服務架構,可以說架構演進,本質上就是基於業務,對現有架構的抽象過程。一名架構師,最怕缺少全局意識和長線思維。如果架構師設計架構的出發點,只是緩解燃眉之急,那麼在未來,這套系統的迭代會越來越困難,很可能陷入推翻、重建,再推翻、再重建的「鬼打牆」。
  • 微服務架構技術棧
    基於近年在微服務基礎架構方面的實戰經驗和平時的學習積累,我想總結並提出一些構建微服務 2.0 技術棧的選型思路,供各位在一線實戰的架構師、工程師參考借鑑。對於一些暫時還沒有成熟開源產品的微服務支撐模塊,我也會給出一些定製自研的設計思路。二、選型準則對於技術選型,我個人有很多標準,其中下面三項是最重要的:1.
  • 基於容器雲的微服務架構實踐
    【編者按】微服務架構的誕生和容器技術的流行,幾乎是同時發生的,這並非偶然,而是網際網路時代倒逼傳統技術和架構而產生的變革,而以Docker為代表的容器技術則為微服務理念提供了匹配的實現機制,本文作者從什麼是微服務切入,詳細的介紹了微服務架構的優勢,最後從自身實踐出發,給出了微服務架構的雲端實踐。
  • 微服務,Java目前很火熱的系統架構
    學習內容安排如下: 系統架構的演化:集中式架構、分布式架構。當然系統架構肯定不是說我一篇文章就能學好的,只能說我作為一名初學者,是如何去理解這些概念的。至於想要真正地去弄懂這些,需要自己長期性地不斷學習,非一朝一夕就能學完的。一、系統架構概述技術更新是非常快的,從單一應用到垂直細分,到分布式,到SOA,以及微服務架構。
  • 架構大遷移:從Java Spring到ReactJS +API微服務架構
    面對著這樣的窘境,你能做的,而且唯一需要做的就是對其重構,重新開發一個全新架構的,高性能的,流行的系統。本文中蟲蟲給大家介紹實例Java平臺重構的方法,將Java Spring開發的系統遷移到ReactJS+API的微服務架構。基礎梳理為什麼要重構平臺架構?
  • SpringCloud微服務架構篇3:Spring Cloud簡介
    微服務架構的核心關鍵點1、微服務的服務治理服務治理(服務註冊及服務發現),通過服務發現,消費者可以在預先不知道服務提供者物理地址的情況下,僅通過相應的服務名稱就可以實現服務調用。5、微服務的統一配置對微服務架構中,數十個、上百個實例,統一對配置進行管理和發布更新。
  • 無服務和微服務架構,誰是業務計算的未來?
    總的說來,這兩種架構的相似之處在於:它們都能夠最大程度地降低運營的成本,縮短應用部署的周期,滿足不斷變化的開發需求,以及優化那些對於時間和資源敏感的日常任務。那麼,微服務和無伺服器模型之間的不同之處在哪裡呢?首先,微服務屬於一種小型的SOA(面向服務的體系架構)技術解決方案。
  • 覆蓋全網的阿里微服務架構有多牛:K8S+實戰+筆記+項目教程
    在這 趨勢中,平臺化尤其具有 礎性及戰略性意義,而以 Spring Cloud技術為代表的微服務 是平臺化的代表性技術。為了更好地推廣微服務相關技術的應用,今天小編分享的這份《SpringCloud實戰演練文檔》。本書用簡單明了的方式闡述了微服務開發的基礎知識,詳細介紹了Spring Cloud在項目開發各個階段的操作方法與技巧。
  • 架構師必須知道的架構設計原則
    編輯|小智 不管你是新手程式設計師、職場老司機,還是資深架構師,這篇文章對你來說應該都有裨益。這些原則沉澱在架構師的腦海中,最終內化成他的 mindset,以潛意識方式影響和指導他的架構和設計工作。 一晃我在軟體研發行業工作十多個年頭了,前面大部分時間做架構設計和開發,現在轉型做研發管理。
  • 京東資深架構師:學架構從三高開始學就行了
    加分項:掌握不同業務形態下的底層技術套路,對後臺系統架構能一通百通,面試中顯示出極強的知識遷移能力。滿足後者,至少你已經達到了一個架構師的思維水平,這才體現你的技術潛力,是你加價的籌碼。多數開發既沒有太多行業和不同項目的磨練,也沒機會參與後臺架構設計,這項能力只有靠自學,但是自學也有聰明辦法。
  • 什麼才是真正的架構設計?
    技術架構技術架構:確定組成應用系統的實際運行組件(lvs,nginx,tomcat,php-fpm等),這些運行組件之間的關係,以及部署到硬體的策略。技術架構主要考慮系統的非功能性特徵,對系統的高可用、高性能、擴展、安全、伸縮性、簡潔等做系統級的把握。系統架構的設計要求架構師具備軟體和硬體的功能和性能的過硬知識,這也是架構設計工作中最為困難的工作。
  • 2021升級版微服務教程—為什麼會有微服務?什麼是SpringCloud?
    2021升級版SpringCloud教程從入門到實戰精通「H版&alibaba&鏈路追蹤&日誌&事務&鎖」教程全目錄「含視頻」:https://gitee.com/bingqilinpeishenme/Java-Wiki微服務基本概念架構的演變為什麼會有微服務?
  • 什麼是微內核架構設計?
    阿里妹導讀:作為一名Java程式設計師,相信同學們都聽說過微內核架構設計,也有自己的理解。那麼微內核是如何被提出來的?微內核在作業系統內核的設計中又有什麼作用?本文從插件化(Plug-in)架構的角度來詮釋微內核架構設計,通過微內核架構和微服務架構的對比,分享其對微服務設計的參考意義。
  • 微服務這麼流行,你理解嘛?
    2、微服務和微服務架構的區別是什麼?3、微服務技術有什麼?4、微服務的優缺點是什麼?5、為什麼選擇Springcloud作為微服務架構?在寫本系列文章之前,我也看了很多網上的大佬那些微服務系列的文章,他們寫的都非常好,別人問我關於一些微服務的技術文章時,我也都會把那些我認為寫的好的文章推送給他們,但是存在一個問題,那就是剛剛接觸微服務的同學,一開始覺得寫的通俗易懂而且確實很簡單,但是越往後看越看不懂。因此才萌生出自己寫一套循序漸進的文章。
  • 服務網格和API網關在微服務架構中的作用
    服務網格和API網關在微服務架構中的作用 如果您從事微服務,那麼您可能已經多次聽說過這兩個術語。 人們常常在兩者之間感到困惑。 在本文中,我將詳細討論服務網格和API網關,並討論何時使用。
  • 將你的組織架構旋轉90度!
    作者近期針對企業數位化和架構轉型思考後陸續寫了三篇文章,這篇是第二篇,主題專注組織架構轉型,前一篇稱為《企業的組織架構是如何影響技術架構的?》,主題是建立背景上下文 (background),最後一篇稱為《大規模生產級微服務的關鍵支撐技術》,主題關於微服務架構和 DevOps 關鍵支撐技術,讀者可以關注 InfoQ 公眾號等待後續更新。
  • 如何成為更好的軟體架構師?這篇3.8K star的文章值得一看
    幾天前,高級架構師 Justin Miller 在 GitHub 上創建項目,介紹自己關於「如何成為更好的軟體架構師」的想法。該項目發布一天即獲得 1.4K star,現在已有 3.8K star 量。
  • 中臺的進化,從「IT架構」到「數智化能力」
    YonBIP 為何採用一技術平臺+3 中臺的技術架構?對此,CSDN 採訪到用友網絡雲平臺架構部負責人劉昆鵬,他自 2006 年加入用友,親歷了用友 NC、iuap 平臺的成長發展,一路從研發新人走到技術架構師,豐富的行業經驗使他對企業管理軟體的發展、中臺技術具有獨到的見解。
  • 15 年架構設計經驗:我眼中的那些優秀架構師
    第一,你表現出優秀的開發能力,讓領導相信,即使你沒有架構設計與領導開發的經驗,你也能做好架構師這一角色,從而任命你做架構師。 第二,你在成為架構師之前,就掌握了足夠的做架構的方法和技能。
  • restful微服務風格_restful 風格的微服務架構 - CSDN
    本文整理了 spring boot + jpa+mysql+redis +swagger+yml等技術,實現了微服務restFul 風格的demo,下載即運行[http://localhost:8080/