天天看點

Spring Cloud與分布式系統

本文不是講解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什麼,以及它誕生的背景和意義。

背景

2008年以後,國内網際網路行業飛速發展,我們對軟體系統的需求已經不再是過去”能用就行”這種很low的檔次了,像搶紅包、雙十一這樣的活動不斷逼迫我們去突破軟體系統的性能上限,傳統的IT企業”能用就行”的開發思想已經不能滿足網際網路高并發、大流量的性能要求。系統架構走向分布式已經是伺服器開發領域解決該問題唯一的出路,然而分布式系統由于天生的複雜度,并不像開發單體應用一樣把架構一堆就能搞定,是以各大網際網路公司都在投入技術力量研發自己的基礎設施。這裡面比較有名的如阿裡的開源項目dubbo, Netflix開發的一系列服務架構。在這種“百花齊放”、重複造輪子的狀況下,必然要出現一種統一的标準來簡化分布式系統的開發,Spring Cloud應運而生。

Spring Cloud是什麼

Spring Cloud是一系列架構的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring并沒有重複制造輪子,它隻是将目前各家公司開發的比較成熟、經得起實際考驗的服務架構組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實作原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。

Spring Cloud組成

Spring Cloud的子項目,大緻可分成兩類,一類是對現有成熟架構”Spring Boot化”的封裝和抽象,也是數量最多的項目;第二類是開發了一部分分布式系統的基礎設施的實作,如Spring Cloud Stream扮演的就是kafka, ActiveMQ這樣的角色。對于我們想快速實踐微服務的開發者來說,第一類子項目就已經足夠使用,如:

  • Spring Cloud Netflix

    是對Netflix開發的一套分布式服務架構的封裝,包括服務的發現和注冊,負載均衡、斷路器、REST用戶端、請求路由等。

  • Spring Cloud Config

    将配置資訊中央化儲存, 配置Spring Cloud Bus可以實作動态修改配置檔案

  • Spring Cloud Bus

    分布式消息隊列,是對Kafka, MQ的封裝

  • Spring Cloud Security

    對Spring Security的封裝,并能配合Netflix使用

  • Spring Cloud Zookeeper

    對Zookeeper的封裝,使之能配置其它Spring Cloud的子項目使用

Spring Cloud前景

Spring Cloud對于中小型網際網路公司來說是一種福音,因為這類公司往往沒有實力或者沒有足夠的資金投入去開發自己的分布式系統基礎設施,使用Spring Cloud一站式解決方案能在從容應對業務發展的同時大大減少開發成本。同時,随着近幾年微服務架構和docker容器概念的火爆,也會讓Spring Cloud在未來越來越“雲”化的軟體開發風格中立有一席之地,尤其是在目前五花八門的分布式解決方案中提供了标準化的、全站式的技術方案,意義可能會堪比目前Servlet規範的誕生,有效推進服務端軟體系統技術水準的進步。