一張圖秒懂微服務網絡架構

  最近參與了 公有云微服務項目,已經有一段時間未公開發表。經過此次改造公有云微服務項目的實踐過程,分享一下公有云微服務網絡架構,及服務部署方案。
每一個平臺的網絡架構圖都相似,但細節根據自有服務有組件又各不同,別人的架構拿過來不一致適合你的架構,那麼首先要了解每層架構及每一個服務的職責,以及服務與服務之間的交互邏輯。咱們根據私有云的架構遷移過來,保持了部分架構,補充了原來在私有云部署中公共組件部分。遷移到公有云後,一些公共組件由咱們本身搭建並運維。整理總覽圖請看下圖:web

網絡架構總覽圖

file

1、互聯網層

  外網層也是網絡架構中最上一層,是指服務報露在互聯網中使用的,經過IP或域名的方式訪問服務。訪問的域名經過解析服務器,解析到指定的互聯網機器。
互聯網機器通常是使用雲服務的方式構建。sql

2、雲服務平臺層

雲計算按照服務類型大體能夠分爲三類:數據庫

  • 將基礎設施做爲服務Iaas
  • 將平臺做爲服務PaaS
  • 將軟件做爲服務SaaS

按照雲計算服務的部署方式和服務對象的範圍能夠將雲計算分爲三類,即公共雲、私有云和混合雲。緩存

  • 公共雲:是由雲服務提供商運營,爲最終用戶提供從應用程序、軟件運行環境,到物理基礎設施等各類各樣的IT資源。在該方式下,雲服務提供商須要保證所提供資源的安全性和可能性等非功能性需求,而最終用戶不關心具體資源由誰提供、如何實現等問題。
  • 私有云:是由企業自建自用的雲計算中心,相對於公共雲,私有云能夠支持動態靈活的基礎設施,下降IT架構的複雜度,使各類IT資源得以整合、標準化,更加容易知足企業業務發展須要,同時私有云用戶徹底擁有整個雲計算中心的設施(如中間件、服務器、網絡及存儲設備等)。
  • 混合雲:是把「公共雲」和「私有云」結合在一塊兒的方式。用戶能夠經過一種可控的方式部分擁有,部分與他人共享。

什麼是雲服務?

  雲服務是基於互聯網的相關服務的增長和使用,一般涉及互聯網動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。
  雲服務指經過網絡以按需、易擴展的方式得到所需服務。這種服務能夠是IT和軟件、互聯網相關,也但是其餘服務。它意味着計算能力也可做爲一種商品經過互聯網進行流通。
file安全

這一層咱們使用雲服務提供的WAF防火牆,用來於外網與租戶區之間作了安全防禦。WAF防火牆中增長一個vip來管理租戶區的應用服務。服務器

3、租戶區

  租戶區是經過雲服務購買的ECS服務器雲數據庫RDS Mysql版雲數據庫Redis版對象存儲OSS雲通訊-短信服務彈性公網IP等資源。微信

根據以上資源根據咱們的服務劃分兩類:網絡

  • 應用服務
  • 基礎組件服務
    file
    上圖中作了作分隔:左側爲應用服務,提供業務服務。右側爲基礎組件服務,提供應用服務的服務

應用服務

應用服務的入口是Nginx,應用服務又分三層:統一網關層Web應用服務層原子化服務層架構

一、統一網關層

  由防火牆的VIP打到應用服務的Nginx上面,Nginx代理到應用網關,全部網絡流量都通過網關,由網關統一服務轉發。轉發只能轉發到Web應用服務,不能轉發到中臺服務。Web應用服務與中臺服務或中臺服務之間訪問採用RPC遠程調用
應用服務須要調用基礎組件時根據可擴展方案,訪問須要通過VIP。應用服務訪問的基礎組件都不是真實的機器 ,而是VIP(Virtual IP Address)。運維

二、Web應用服務

是根據業務需求,實現業務邏輯。組合中臺服務,達到實現業務需求的目地。

在圖中根據本身的業務劃分本身的服務,這裏只是簡單羅列了一下幾個服務做爲表明。但不侷限於這幾個服務

三、原子化服務(中臺服務)

互聯網電商行業,根據業務需求不斷變動,服務要求不斷穩定。不一業務需求變動,而形成服務的不穩定性。那麼根據職責模塊劃分爲多個原子化服務,並根據職責劃分到各個系統中。從而達到中臺服務負責基礎數據及穩定業務服務,多變或可定製化服務由Web應用服務提供。

在圖中根據本身的業務劃分本身的服務,這裏只是簡單羅列了一下幾個服務做爲表明。但不侷限於這幾個服務

在高可用方案中,爲了保證最低高可用每一個系統均分配兩臺ECS,保證高可用。

基礎組件服務

基礎組件的入口是LVS,在應用服務中提到LVS中須要分配VIP。

爲何要使用VIP?

  VIP(虛擬IP)是比較常見的一個用例就是在系統高可用性(High Availability HA)方面的應用,一般一個系劃外的狀況而發統會由於平常維護或者非計生宕機,爲了提升系統對外服務的高可用性,就會採用主備模式進行高可用性的配置。當提供服務的主機M宕機後,服務會切換到備用主機S繼續對外提供服務。而這一切用戶是感受不到的,在這種狀況下系統對客戶端提供服務的IP地址就會是一個虛擬IP,當主機M宕機後,虛擬IP便會漂浮到備機上,繼續提供服務。

  在這種狀況下,虛擬IP就不是與特定計算主機或者特定某個物理網卡對應的了,而是一種虛擬或者是說邏輯的概念,它是能夠自由移動自由漂浮的,這樣一來既對外屏蔽了系統內部的細節,又爲系統內部的可維護性和擴展性提供了方便。

LVS屬於四層代理, 在組件中採用TCP協議的由:

  • 消息服務 RabbitMQ
  • 緩存服務 Redis
    因爲組件中還有HTTP協議的,那麼須要使用Nginx在作一層代理,採用HTTP協議的組件由:
  • 註冊中心 Eureka
  • 認證中心 Passport
  • 調度平臺 XXL-JOB
  • 圖片服務 FastDFS

除此以外,基礎組件中,還包括:配置中心 zookeeper搜索服務 Solr 這兩個服務不通過LVS代理,直接由應用服務訪問。

因每一個組件的實現原理不同,使用的機器數量也不同。他們每一個服務的高可用後臺單獨爲每一個組件詳細描述。
最後,根據以上描述畫出總體網絡架構圖:
file

致此,講解了咱們在這些公有云微服務項目的實踐及部署方案,總體網絡架構圖以下:

以上是根據我的在這個項目中的實踐和理解,若你有更好的方案或想法可關注 微信公衆號"猿碼",發表你的見解。或在文章底部留言,建議咱們對技術的熱愛~~~~

你的關注會繼續發表相關話題,及相關技術。

再次感謝您已看徹底文,歡迎關注微信公衆號猿碼 ,您的關注我會持續更新文章!

相關文章
相關標籤/搜索