當前位置:
首頁 > 最新 > 阿里雲基於 Go 的微服務架構分享

阿里雲基於 Go 的微服務架構分享

作者介紹

花名聰心,阿里雲技術專家,主要負責阿里雲OpenAPI,Services architectre 技術服務的實現。

雲產品前端架構

眾所周知,阿里是以 Java 開發為主,最近引用 GO 在微服務架構上面進行開發,本次分享也是圍繞這個主題進行敘述。

圖 1圖 1 所示,是我們最早期的前端微服務架構圖,當時不存在API網關服務、天象全鏈路監控以及外部服務這幾個模塊,並且藍色這部分也並沒有被應用起來。因此進行了一場微服務重構過程,產生了最新的前端微服務架構圖(圖 2)。

圖 2圖 2 是目前的前端微服務架構,其中,OpenAPI是前端入口;API網關目前被商業化,由它來調度內部的dubbo服務;其次是最為重要的中間件,由其支撐註冊中心、控制台、阿里雲日誌服務、消息隊列服務以及內部的天象全鏈路監控系統;外部服務主要是進行與其他雲產品的交互,比如VPC、VPS等;驅動&介面服務也進一步的開發應用起來。下面著重介紹整個架構中的幾個板塊。

日誌服務

圖 3

在這麼多微服務組件中,日誌採集是不可或缺的,阿里雲日誌服務對象就是ELK,實際上它的成本是比較高的,而使用Kafka則成本要相對低很多。現在會提供很多中間的服務進行協調,方便進行業務統計工作(圖 3)

API網關服務

圖 4

網關服務位於整個架構的最上層;因為認證系統的存在,所以再使用老架構的形式則每一個對外服務都需要我們自己手動進行接入,這樣會耗費很大的工作量,所以新版的架構將API網關服務放在最上層,一方面在認證服務方面省去了人力成本其次在流量控制上,也起到了關鍵性的作用(圖 4)。

天象全鏈路監控系統

圖 5

圖 5 所示是天象全鏈路監控系統的界面,這一塊在整個微服務架構中是不可或缺的一個服務。當架構微服務化後往往會造成鏈路變長的情況發生(圖左所示)。使用天象可以對全鏈路進行監控。

Dubbo

Dubbo是一個RPC框架,在11-12年間名氣都是比較響的,當時它有2000個節點,3B+ request,在阿里巴巴、京東以及噹噹網的使用度是比較高的。它最實用的地方主要在於以下幾點:

1、服務動態註冊&服務發現

2、SOA服務治理

3、轉負載均衡

4、熔斷、服務降級

圖 6圖 6 所示是Dubbo服務治理圖。其中包括了調度中心、監控中心、註冊中心、治理中心這幾項服務,如果要做到100%規範,那麼圖中的每個點都需要去遵守。因為阿里目前只有幾百個節點,所以可以很放心的使用這個框架而不需要擔心它有任何的性能問題。

圖 7圖 7 所示。是講Dubbo部署到可服務化的一個示意圖,當應用起來後會啟動 Repository,接下來comsumer便會開始服務了,所有應用都會收到通知,不管新版本、新介面或是新的伺服器上線都會接收到通知。此時如果需要調用,便會去尋求最適合的方式;在此之上的Monitor,也會持續回報運維人員。其實關於Dubbo的未來規劃,就是可以解決所有SOA的事情,目前還是人工的在執行這件事情,沒有施行自動化方案,這也是有遺留的歷史因素存在。

Micro-services complexity at 阿里雲

阿里雲前端架構的微服務化是一個必然的趨勢,早在2014年業務增長並不顯著,但是14年以後,隨著雲計算行業的發展,業務增長量也突飛猛進,因此我們不得不推翻此前的架構,重新構建新的架構系統,當然整個過程並非想像的那麼容易,所以微服務化必須自然的引進,必須要做小,做簡單,然後讓整個產品可以快速推進。

前面提到,Dubbo、Spring解決了大部分SOA問題,理論上講如果Dubbo服務拆解的很乾凈,那麼我們理應很高興。但是問題在於,如何能在拆解之後仍舊可以保持有規範的交付卻是一個不容易解決的問題。所以當中我們也採取過很多策略,比如代理服務,但是在整個微服務過程中也會產生大量成本,如何降低又是新的需要解決的問題。

圖 8

圖 8 是阿里內部使用語言的開發人員的人數統計圖,從圖中可以看出,golang的使用人數其實是相對較少的,但是其增長速度卻是最快的。那麼是什麼原因導致gopher數量的急劇增加,大部分人都知道Java可以比作為一個靜態藝人,對於很多Java開發人員來說,歷史遺留包袱比較重,培養一個能在業務系統上做支持的Java人員很難,但是若只是Spring開發人員,也未必是符合我們所需。

因此我們轉型GO,GO的神奇在我們在使用gRPC時的一些感悟,grpc是一個高性能的開源RTC框架,gRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復用請求等特。這些特性使得其在移動設備上表現更好,更省電和節省空間佔用。

圖 9圖 9 所示是Go kit與 Dubbo的一些對比,關於Go kit的更詳細的內容可以在gokit.io上進行了解。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Go中國 的精彩文章:

一周 Go World 新鮮事Asta 優選
螞蜂窩大數據多維分析 DRUID 引擎實踐
Go大咖說第一期《比特幣、區塊鏈和Go開發》

TAG:Go中國 |