微服務架構是一個怎樣的存在?

文章轉發自專業的Laravel開發者社區,原始連接:learnku.com/laravel/t/1…laravel

一篇關於構建大規模應用的介紹數據庫

一篇關於構建大規模應用的介紹

介紹

不管如今的影響力如何,分佈式系統仍然是最容易被忽視的主題之一,至少在大學層面是如此。沒有多少學生理解諸如容器化和容錯等概念,你也永遠不會看到系統項目贏得黑客馬拉松。儘管如此,我認爲至少對今天的大規模系統如何工做有一個簡單的理解是很是重要的。api

這個故事是針對初學者的系列中的第一個,例如接受 1 到 2 年級的普通計算機科學教育或者具備自學網絡開發經驗的人。前幾篇文章將對主要概念進行重點介紹,並深刻探討技術細節。而後,我但願探索網絡相關的主題、Kubernetes ,以及我在研究中看到的有趣內容。第一個很是簡單,旨在解釋微服務背後的動機和基本概念。服務器

分佈式系統維持着互聯網的運行

在過去,應用程序都是獨立的。可能應用程序包括Web服務自己和儲存系統被打包成只有一個或者兩個二進制文件。而後這些二進制文件上傳到服務器直接在機器上運行。在 80,90 年代這個系統是足夠的,可是現在 Google 天天都會收到 35 億次搜索查詢,沒有哪一個服務器足夠強大處處理這些查詢。網絡

過去,工程師購買更好的服務器,更好的電纜等等。隨着互聯網的發展和 摩爾定律 的終結, 這種方法很快變得不可行了,很明顯須要橫向拓展而不是縱向。取而代之,再也不去買更好的更貴的硬件,而是去買大量便宜的服務器去分配這些負載。架構

最先的橫向拓展只是運行多個 Web 服務的副本。 然而隨着雲服務的發展,*微服務 *架構很快主導了市場。微服務是指將一個大的應用拆分紅獨立的組件,叫作服務,每一個組件執行一項專門的任務。因此不是讓一個 Web 服務從頭至尾運行處理一個請求,開發人員將應用拆分紅服務像用戶身份驗證, 頁面服務,API 服務,數據庫模型服務等等。負載均衡

拆分一個獨立應用程序 (Source: Dzone)框架

每個微服務有一個或者多個 微服務 組成。對於運行在 Django 上的網站,咱們能夠經過增長咱們運行在 Django 服務器的副本數量來進行橫向拓展。這些副本是徹底同樣的。若是咱們運行一個數據庫,咱們能夠經過增長副本數量來增長副本,咱們一般稱之爲分片 。 將分片視爲數據庫的一部分,你能夠獨立運行並保留總體數據的一部分 經過增長分片數量,咱們能夠橫向拓展數據庫。這些副本能夠在不一樣機器上運行。因此若是咱們想在 100 臺機器上運行一個大的 Web 服務,咱們可讓 100 份副本單獨在每一臺機器上運行。分佈式

讓咱們看一個完整的例子。負載均衡器能夠接受谷歌搜索查詢,並將其轉發到 api 服務器的數千個副本之一。而後,api 服務器將請求同時轉發給索引器、ad 生成器和 ML 神經網絡。每一個服務均可以運行數千個副本。這些單獨的服務完成它們本身的任務,每一個任務都是整個原始請求的一部分,而後 api 服務器聚合結果並以搜索結果的形式返回給您。微服務

聚合樣式的微服務體系結構 (Source: Arun Gupta)

有關微服務體系結構模式的更多信息,請訪問 Arun Gupta's Blog。他是 AWS 的首席技術專家。

優點

下面是一些比較關鍵的優點。 固然還有不少其它的優點,但這四個最爲重要。

  • 微服務框架最重要的不能否認的優點是能夠橫向拓展任何組件。 若是一個服務 (例如神經網絡) 負載很重, 你能夠簡單的運行該服務的更多的副本。
  • 服務是獨立的。 每一個組件能夠存在於獨立的庫中,並由專門的工程師團隊維護。 每一個組件能夠用最適合它的語言編寫,好比數據庫服務用 C 語言編寫 Web 服務用 Python 編寫。 組件的更新和新組件的編寫不會影響其它的服務。
  • 架構是可插拔的。 基於服務獨立性構造的,但它帶來的是一個全新的境界。一個公司甚至不須要寫出全部的服務。第三方應用像 MySQL,Elasticsearch,Redis 全是能夠很容易整合到你係統的微服務。
  • 容錯 (經過錯誤隔離) 。 這種優點只有在你的系統設計不合理時才得以體現。 一個副本的故障不會致使整個管線故障甚至中止服務。 一樣的,特定服務中的錯誤不會影響其它無關服務的正常運行。 這並不老是容易的,容錯是工業和研究裏的一個難題,特別是對分佈式數據庫和網絡。

固然,和全部事情同樣,微服務也有一些缺點。將請求從一臺服務器轉發到另一臺服務器,這具備必定的開銷和複雜性。分佈式系統一般都存在依賴、複製和共享問題。隨着微服務的數量和複雜增長,部署和調試的難度也呈指數級增長。

好消息是,有大量的研究人員,公司和創業公司在一塊兒協力研究這些問題。Jenkins,Spinnaker 和 Jaegertracing 等項目都是今天最流行的開源解決方案之一,天天在行業和學術中都有新的創新。

因此,分佈式系統仍能夠說是相對比較新的,其影響力也在每日劇增。 個人意思是,僅僅想一想你是如何來閱讀這篇文章的。

相關文章
相關標籤/搜索