AWS入門指南之四:微服務以及Lambda

這篇文章我們聊一聊微服務的概念,和aws裏與微服務關係比較緊密的一個計算服務:Lambda。

什麼是微服務(microservice)?按照維基百科的定義,微服務是面向服務架構(servcie-oriented-architecture - SOA)的變體。服務是許多鬆散耦合的服務集合。在微服務中,服務是細粒度的,協議是輕量級的。那麼什麼是面向服務架構呢?SOA是一種設計方式,它基於一種理念是系統中的每一個部件利用網絡通信協議向其它系統部件提供遠程服務。所有的部件功能應該是獨立的。microservice和SOA從總體上看是一種理念,但是micro service更加強調所有服務組件的細粒度和輕量級。所以我們可以只談談microservice在AWS裏的應用。

微服務的設計理念有一些優勢。首先微服務是很容易進行擴展的。因爲服務是輕量級而且獨立的,很容易將它們部署在獨立的小規模的物理設備上。在需要進行擴展時,很容易對從底層物理框架到上面的邏輯功能組件進行復制以達到擴展的目的。其次,微服務是很容易部署的。因爲所有的服務獨立而輕量,服務可以進行分開部署,而且部署會非常簡單。再次,微服務的設計非常靈活,可以分批次分別實現和逐步上線。而因爲服務之間的松耦合,可以使用不同的開發語言和開發技術分別開發不同的服務組件。

對於微服務和傳統的大型服務設計方式那種更優其實沒有固定的結論,必須要更具實際情況而定。但是不可否認的是,伴隨着網絡建設的大幅前進,爲微服務這樣一種新穎的設計方式提供了可能性,以至於在很多情況下微服務可以帶來傳統的統一服務設計和管理所不具備的多個優點。而云計算這種大規模的分佈式和多種功能資源集於一身的產品的出現,更是爲微服務的開發和維護都帶來了前所未有的便利條件。其實總結下來我們會發現伴隨着網絡基礎設施的愈發完善,軟件設計的總體趨勢從傳統的集中大規模的方式慢慢轉變爲分佈的小規模的模式。雖然分佈式系統中的每一個部件看起來是簡單的,規模很小的,但是當大量這樣的功能部件組合在一起後,就可以完成非常複雜的大規模計算功能。優勢顯而易見在於維護的複雜度大大降低,擴展的能力又大大提高了。而因爲大量複雜的功能由網絡基礎設施和分佈式系統提供,使得服務開發者可以更加專注於服務功能的設計和開發,從而降低了開發的負擔和複雜度。但是相應的在分佈式系統中開發有着不同於傳統服務模式開發的模式和要解決的問題。而這是之前專注於傳統服務開發的程序員需要重新學習的地方。

對於AWS來說,更是爲微服務開發方式提供了完備的解決方案。具體的信息可以閱讀參考文檔1。在這篇博客中,我們具體聊一聊和微服務計算有關的一個服務:Lambda. 

Lambda是AWS提供的一種無服務器服務。簡單來說就是AWS爲你提供服務運行的環境,而你只需要實現你的服務的邏輯。這個聽起來是不是和微服務非常契合?其實Lambda可以說是在AWS中實現微服務的最佳候選服務。Lambda有一個Currency池。當有一個觸發來到,Lambda就會從Currency池中運行一個Currency來執行該次觸發。而Lambda可以響應的觸發有很多種,比如DynamoDB,S3,SQS等等。作爲服務的提供者,最常見的組合方式是由APIGateway提供終端的訪問能力,而Lambda響應來自APIGateway的請求提供計算服務。假如有些同學對於Amazon的智能設備Alexa感興趣的話,會發現Lambda也是可以響應Alexa的,所以幾乎所有的Alexa的後臺處理都是在Lambda上完成的。在後面我們可以實際用Lambda開發一些簡單的功能讓大家來體會一下Lambda所帶來的便利性。

總之Lambda作爲AWS中非常靈活和功能強大的服務之一,是在AWS中提供微服務的計算能力的上上之選。還有另一個基於Container的服務叫做ECS (Elastic Container Service)也是提供計算能力的很流行的服務之一,但是Lambda還是要更加靈活和簡單一些。所以假如可能我們應該首先選擇Lambda。關於ECS我們放在後面介紹。

 

 

參考文檔:

  1. https://aws.amazon.com/microservices/
  2. https://aws.amazon.com/lambda/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章