騰訊雲微服務


微服務基本概念

微服務是一個新興的軟件架構,就是把一個大型的單個應用程序和服務拆分為數十個的支持微服務。

單體架構

   單體架構下,所有的功能被打包在一個包里,基本沒有外部依賴,部署在一個JEE容器(Tomcat,JBoss,WebLogic)里,包含了服務運行的所有邏輯。

單體架構的特征

應用程序的功能集中化,各個功能模塊緊耦合,牽一發而動全身,任何一個功能模塊的故障都可能造成整個應用的癱瘓,並且當某個功能模塊需要升級時,既需要針對整個應用做開發升級,同時在部署時,需要將舊的應用系統下線,然后將升級的業務系統重新部署,周期長效率低,如果要做灰度發布,快速的迭代升級,單體架構的效率往往是無法滿足業務快速迭代更新的需求,因此提出了微服務的架構。

微服務架構:

微服務是一個新興的軟件架構,就是把一個大型的單個應用程序和服務拆分為數十個的支持微服務,每個服務都有自己的處理和輕量通訊機制,可以部署在單個或多個服務器上,微服務也指一種松耦合的、有一定的有界上下文的面向服務架構。可以讓工作變得更為簡便,它可擴展單個組件而不是整個的應用程序堆棧,從而滿足服務等級協議,系統中的各個微服務可被獨立部署,每個服務運行在自己的進程中,並使用輕量級機制通信,通常是HTTP API,這些微服務通常基於業務能力構建,並能夠通過自動化部署機制來獨立部署,各個微服務之間是松耦合的,每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表着一個小的業務能力。微服務最早由Martin Fowler與James Lewis於2014年共同提出,微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑。

單體架構特征:

開發效率低:所有的開發在一個項目改代碼,遞交代碼相互等待,代碼沖突不斷;

代碼維護難:代碼功能耦合在一起,新人不知道何從下手;部署不靈活:構建時間長,任何小修改必須重新構建整個項目,這個過程往往很長;

穩定性不高:一個微不足道的小問題,可以導致整個應用掛掉;

擴展性不夠:無法滿足高並發情況下的業務需求;

微服務架構

易開發:服務粒度更小,而每個服務是針對一個單一職責的業務能力的封裝,專注做好一件事情;

易且快的代碼更新:當開發者對一個傳統的單體應用程序進行變更時,他們必須做詳細的QA測試,以確保變更不會影響其他特性或功能。但有了微服務,開發者可以更新應用程序的單個組件,而不會影響其他的部分。測試微服務應用程序仍然是必需的,但它更容易識別和隔離問題,從而加快開發速度並支持DevOps和持續應用程序開發。

獨立部署:每個服務能夠獨立被部署並運行在一個進程內,這種運行和部署方式能夠賦予系統靈活的代碼組織方式和發布節奏,使得快速交付和應對變化成為可能。

獨立團隊和自治:團隊對服務的整個生命周期負責,工作在獨立的上下文中,自己決策自己治理,而不需要統一的指揮中心,團隊和團隊之間通過松散的社區部落進行銜接。資源利用率更高:往往比傳統的應用程序更有效地利用計算資源,這是因為它們通過擴展組件來處理功能瓶頸問題,這樣一來,開發人員只需要為額外的組件部署計算資源,而不需要部署一個完整的應用程序的全新迭代,最終的結果是有更多的資源可以提供給其它任務。

微服務設計原則:

前后端分離:為了更好的支撐微服務架構,微服務在設計時要保證前后端分離,這里的分離是前端和后端的代碼分離也就是技術上做分離,最好直接采用物理分離的方式部署,進一步促使進行更徹底的分離。
無狀態服務:這里的無狀態服務指的是將有狀態的業務服務改變為無狀態的計算類服務。
Rest通訊風格:無狀態服務之間進行API通訊的通訊風格。

uploading-image-93345.png

分離模式的方式有幾個好處

前后端技術分離,可以由各自的專家來對各自的領域進行優化,這樣前端的用戶體驗優化效果會更好。

分離模式下,前后端交互界面更加清晰,就剩下了接口和模型,后端的接口簡潔明了,更容易維護。

前端多渠道集成場景更容易實現,后端服務無需變更,采用統一的數據和模型,可以支撐前端的web UI\移動App等訪問。

無狀態服務

對於無狀態服務,首先解釋一下什么是狀態

如果一個數據需要被多個服務共享,才能完成一筆交易,那么這個數據被稱為狀態。進而依賴這個“狀態”數據的服務被稱為有狀態服務,反之稱為無狀態服務。
那么這個無狀態服務原則並不是說在微服務架構里就不允許存在狀態,表達的真實意思是要把有狀態的業務服務改變為無狀態的計算類服務,那么狀態數據也就相應的遷移到對應的“有狀態數據服務”中。

場景說明

我們以前在本地內存中建立的數據緩存、Session緩存,到現在的微服務架構中就應該把這些數據遷移到分布式緩存中存儲,讓業務服務變成一個無狀態的計算節點,遷移后,就可以做到按需動態伸縮,微服務應用在運行時動態增刪節點,就不再需要考慮緩存數據如何同步的問題。

Rest 通信風格

Restful 是一種無狀態服務之間的通信風格,它的優點是:無狀態協議HTTP,具備先天優勢,擴展能力很強。例如需要安全加密時,有現成的成熟方案HTTPS可用。

JSON 報文序列化,輕量簡單,人與機器均可讀,學習成本低,搜索引擎友好。

語言無關,各大熱門語言都提供成熟的Restful API框架,相對其他的一些RPC框架生態更完善。

當然在有些特殊業務場景下,也需要采用其他的RPC框架,如thrift、avro-rpc、grpc,但絕大多數情況下Restful就足夠用了。

騰訊雲微服務特征

針對不同行業與使用場景,微服務解決方案包括微服務和微計算兩大方案,幫助企業實現低成本地實現系統微服務化,優化系統架構,實現業務的快速迭代。比如,提供了成熟的金融行業微服務化方案和成熟的電商行業微服務化方案。

騰訊雲微服務的優勢體現

微服務方案:

一站式平台:提供了一站式微服務治理平台,打通微服務API 網關、消息隊列等;
全方位管控:全應用生命周期管理,輕松部署,快速發布,立體化監控;微計算方案:快捷高效的配置:無需服務器管理,免除運維、操作系統及軟件維護;
合理低廉的價格:價格低廉,根據實際資源進行配置,並只按實際使用付費;

騰訊雲微服務產品

騰訊雲微服務兩大方案用到的產品有

無服務器函數SCF,容器服務CCS,騰訊分布式服務框架TSF,API網關,消息隊列CMQ。其中微服務方案用到的產品有TSF、CMQ、CCS和API網關;微計算方案用到的產品有SCF、API網關、CCS等:無服務器雲函數(Serverless Cloud Function,SCF):騰訊雲為企業和開發者們提供的無服務器執行環境,幫助您在無需購買和管理服務器的情況下運行代碼。

騰訊雲容器服務(Cloud Container Service,CCS):

基於原生kubernetes提供以容器為核心的、高度可擴展的高性能容器管理服務。騰訊分布式服務框架TSF (Tencent Distributed Service Framework) :一個圍繞應用和微服務的PaaS 平台,提供服務全生命周期管理能力和數據化運營支持,提供多維度應用、服務、機器的監控數據,助力服務性能優化;擁抱Spring Cloud 開源社區。

API 網關(API Gateway):

API 托管服務,提供API 的完整生命周期管理,包括創建、維護、發布、運行、下線等。
消息隊列(Message Queue,簡稱MQ):是一項高可用、高並發、高可擴展、低延時的分布式消息隊列服務,解耦消息的生產與消費,多進程可以同時讀寫、互不干擾,為企業級架構的核心產品之一。

騰訊雲微服務解耦產品使用描述:

騰訊雲分布式服務框架TSF,提供了構建雲上微服務的分布式架構平台,基於TSF框架,結合騰訊雲容器產品CCS,構建分布式的基礎服務層,公共服務層集群和數據接入層。TSF框架還提供了不同服務層次間數據消息總線(比如CMQ)的接入,騰訊雲中間件服務的接入,提供全局配置服務功能,服務注冊發現功能,應用的生命周期管理能力,以及與無服務器函數SCF對接從而實現高效計算能力。而對TSF框架中服務的訪問,可以使用API網關作為統一的標准化管理入口,將來自不同終端或第三方平台的請求進行統一化認證、接入等,同時API網關也可以統一封裝TSF框架中不同微服務的REST API接口,進行統一鑒權,統一監控。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM