1. 程式人生 > >微服務架構實踐-七牛技術總監肖勤

微服務架構實踐-七牛技術總監肖勤

微服務架構優勢

肖勤首先簡單介紹了微服務(Microservices)的內涵及優勢,他表示,微服務架構的本質,是用一些功能比較明確、業務比較精練的服務去解決更大、更實際的問題。

微服務架構將服務拆分,分別採用相對獨立的服務對各方面進行管理,彼此之間使用統一的介面來進行交流,架構變得複雜,優勢也很明顯:

  • 複雜度可控:在將應用分解的同時,規避了原本複雜度無止境的積累。每一個微服務專注於單一功能,並通過定義良好的介面清晰表述服務邊界。由於體積小、複雜度低,每個微服務可由一個小規模開發團隊完全掌控,易於保持高可維護性和開發效率。
  • 獨立部署:由於微服務具備獨立的執行程序,所以每個微服務也可以獨立部署。當某個微服務發生變更時無需編譯、部署整個應用。由微服務組成的應用相當於具備一系列可並行的釋出流程,使得釋出更加高效,同時降低對生產環境所造成的風險,最終縮短應用交付週期。
  • 技術選型靈活:微服務架構下,技術選型是去中心化的。每個團隊可以根據自身服務的需求和行業發展的現狀,自由選擇最適合的技術棧。由於每個微服務相對簡單,當需要對技術棧進行升級時所面臨的風險較低,甚至完全重構一個微服務也是可行的。
  • 容錯:當某一組建發生故障時,在單一程序的傳統架構下,故障很有可能在程序內擴散,形成應用全域性性的不可用。在微服務架構下,故障會被隔離在單個服務中。若設計良好,其他服務可通過重試、平穩退化等機制實現應用層面的容錯。
  • 擴充套件:單塊架構應用也可以實現橫向擴充套件,就是將整個應用完整的複製到不同的節點。當應用的不同元件在擴充套件需求上存在差異時,微服務架構便體現出其靈活性,因為每個服務可以根據實際需求獨立進行擴充套件。

微服務架構實踐

肖勤介紹重點介紹了七牛圖片處理(FOP)場景的微服務應用。FOP服務早期的架構以它的每一個應用為後端。隨著使用者越來越多,流量越來越高,負載均衡逐漸出現了頻寬和流量的壓力。


七牛將影象處理服務拆成兩個部分,分別負責處理檔案的傳輸和影象本身的處理。從負載均衡過來的請求不再是完整的檔案,而是檔案的地址。這樣,負載均衡和流量優化跟整個影象處理沒有關係,可以做單獨的部署。而對於稍微複雜一些的請求(如圖片格式和尺寸的變更,新增水印),就用管道的方式把不同的服務串聯起來最終實現。