一張圖秒懂微服務網路架構
- 2019 年 11 月 10 日
- 筆記
最近參與了 公有雲微服務項目
,已經有一段時間未公開發表。通過這次改造公有雲微服務項目的實踐過程,分享一下公有雲微服務網路架構,及服務部署方案。
每個平台的網路架構圖都類似,但細節根據自有服務有組件又各不一樣,別人的架構拿過來不一致適合你的架構,那麼首先要了解每層架構及每個服務的職責,以及服務與服務之間的交互邏輯。我們根據私有雲的架構遷移過來,保持了部分架構,補充了原來在私有雲部署中公共組件部分。遷移到公有雲後,一些公共組件由我們自己搭建並運維。整理總覽圖請看下圖:
網路架構總覽圖
一、互聯網層
外網層也是網路架構中最上一層,是指服務報露在互聯網中使用的,通過IP或域名的方式訪問服務。訪問的域名通過解析伺服器,解析到指定的互聯網機器。
互聯網機器一般是使用雲服務的方式構建。
二、雲服務平台層
雲計算按照服務類型大致可以分為三類:
- 將基礎設施作為服務Iaas
- 將平台作為服務PaaS
- 將軟體作為服務SaaS
按照雲計算服務的部署方式和服務對象的範圍可以將雲計算分為三類,即公共雲、私有雲和混合雲。
- 公共云:是由雲服務提供商運營,為最終用戶提供從應用程式、軟體運行環境,到物理基礎設施等各種各樣的IT資源。在該方式下,雲服務提供商需要保證所提供資源的安全性和可能性等非功能性需求,而最終用戶不關心具體資源由誰提供、如何實現等問題。
- 私有云:是由企業自建自用的雲計算中心,相對於公共雲,私有雲可以支援動態靈活的基礎設施,降低IT架構的複雜度,使各種IT資源得以整合、標準化,更加容易滿足企業業務發展需要,同時私有雲用戶完全擁有整個雲計算中心的設施(如中間件、伺服器、網路及存儲設備等)。
- 混合云:是把「公共雲」和「私有雲」結合在一起的方式。用戶可以通過一種可控的方式部分擁有,部分與他人共享。
什麼是雲服務?
雲服務是基於互聯網的相關服務的增加和使用,通常涉及互聯網動態易擴展且經常是虛擬化的資源。雲是網路、互聯網的一種比喻說法。
雲服務指通過網路以按需、易擴展的方式獲得所需服務。這種服務可以是IT和軟體、互聯網相關,也可是其他服務。它意味著計算能力也可作為一種商品通過互聯網進行流通。
這一層我們使用雲服務提供的WAF防火牆
,用來於外網與租戶區之間做了安全防護。WAF防火牆中增加一個vip
來管理租戶區的應用服務。
三、租戶區
租戶區是通過雲服務購買的ECS伺服器
、雲資料庫RDS Mysql版
、雲資料庫Redis版
、對象存儲OSS
、雲通訊-簡訊服務
、彈性公網IP
等資源。
根據以上資源根據我們的服務劃分兩類:
- 應用服務
- 基礎組件服務
上圖中做了做分隔:左側為應用服務,提供業務服務。右側為基礎組件服務,提供應用服務的服務
應用服務
應用服務的入口是Nginx,應用服務又分三層:統一網關層
、Web應用服務層
、原子化服務層
。
1、統一網關層
由防火牆的VIP打到應用服務的Nginx
上面,Nginx代理到應用網關
,所有網路流量都經過網關,由網關統一服務轉發。轉發只能轉發到Web應用服務
,不能轉發到中台服務。Web應用服務與中台服務或中台服務之間訪問採用RPC遠程調用
。
應用服務需要調用基礎組件時根據可擴展方案,訪問需要經過VIP。應用服務訪問的基礎組件都不是真實的機器 ,而是VIP(Virtual IP Address)。
2、Web應用服務
是根據業務需求,實現業務邏輯。組合中台服務,達到實現業務需求的目地。
在圖中根據自己的業務劃分自己的服務,這裡只是簡單羅列了一下幾個服務作為代表。但不局限於這幾個服務
3、原子化服務(中台服務)
互聯網電商行業,根據業務需求不斷變更,服務要求不斷穩定。不一業務需求變更,而造成服務的不穩定性。那麼根據職責模組劃分為多個原子化服務,並根據職責劃分到各個系統中。從而達到中台服務負責基礎數據及穩定業務服務,多變或可訂製化服務由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代理,直接由應用服務訪問。
因每個組件的實現原理不一樣,使用的機器數量也不一樣。他們每個服務的高可用後台單獨為每個組件詳細描述。
最後,根據以上描述畫出整體網路架構圖:
致此,講解了我們在這些公有雲微服務項目的實踐及部署方案,整體網路架構圖如下:
以上是根據個人在這個項目中的實踐和理解,若你有更好的方案或想法可關注 微信公眾號"猿碼"
,發表你的看法。或在文章底部留言,建議我們對技術的熱愛~~~~
你的關注會繼續發表相關話題,及相關技術。
再次感謝您已看完全文,歡迎關注微信公眾號猿碼
,您的關注我會持續更新文章!