微服務簡介

微服務簡介

微服務是一種架構風格,從應用程序的角度出發理解,即將應用程序拆分成一個個可單獨部署的服務,微服務的特點是:

⑴細粒度組件;從整個項目的角度出發,微服務將每個項目分隔爲多個子項目,在子項目的內部又分割爲多個功能模塊,每個功能模塊又可細分爲多個服務接口.

⑵單一職責原則;對於微服務中的服務,強調的是每個服務接口儘量提供一個專一的服務,分隔爲最小的服務單位.

⑶跨應用可複用;對於一個服務接口,跨服務,跨模塊之間可能存在調用關係,一個服務可被多個服務消費者調用.

⑷獨立可部署;每個服務可在容器中進行單獨部署,且不影響其他服務的部署,但是在業務邏輯上,每個服務可能存在互相依賴的關係,某個服務的宕機或網絡環境導致的某個服務的不可用,會導致其他服務的無法進行.

⑸輕量級通信協議;微服務採用HTTP協議和JSON格式輕量級的通信協議.

服務

上文中提到的服務,服務的宕機,可能會操作對服務的理解有些混淆,微服務中的服務可以從多個角度來理解:從軟件的角度來理解,就是一組使用Restful方式提供的服務接口API,通過http進行訪問;架構的角度來理解,就是一個部署在特定機器上的應用,服務的宕機指的是,服務做部署的主機由於某寫情況導致服務的不可用;從業務的角度理解,服務就是一個功能單元,這個功能單元儘可能的不可分割.

Spring Cloud和微服務

上面提到,微服務是一種架構風格,它是一個從理論方面來對軟件架構的解析,但是具體軟件開發時如何部署,使用哪種開發工具,使用哪個具體的協議,語言等,這個由多種實現方式,但Spring Cloud爲微服務的落地提供了方便的開發框架,Spring Cloud提供了一整套分佈式工具用來實現微服務的開發和部署,eg:服務發現和註冊,請求路由,負載均衡,服務與服務之間的調用,服務之間的消息傳遞,網關等一系列高效率的開發工具.

Spring Cloud 和Spring Boot

Spring Boot是一個快速整合常用框架以及第三方框架的工具,基於註解,少量的XML配置,內置Tomcat服務器,同時可以將應用以jar的方式直接運行,Spring Cloud 是基於Spring Boot,Spring Cloud中有部分Spring Boot的特性,基於註解,內置服務器,快速整合框架等特性,使得Spring Cloud快速,高效的開發和部署.

爲什麼總是看到有人說:使用Spring Boot構建一個微服務?因爲Spring Cloud基於Spring Boot,在Spring Boot的基礎上,添加特定的依賴,可以加入Spring Cloud中的微服務組件,所以,Spring Boot 是構建微服務的基礎,Spring Cloud只是一整套微服務工具,當然也可以說使用Spring Cloud構建微服務.

微服務和雲

雲,即雲計算,雲計算有三種基本模式:即IaaS(基礎設施即服務),PaaS(平臺即服務),Saas(軟件即服務);IaaS即雲供應商提供基礎設施,而具體技術的選擇和構建由消費者自己定義;SaaS即雲供應商爲服務的提供者,消費者爲服務的消費者,無法對技術進行選擇,也沒有任何責任來維護應用程序的基礎設施.PaaS即雲供應商提供平臺,以及平臺的維護,用戶可在平臺中進行開發.新的雲平臺類型,有FaaS函數即服務,CaaS容器即服務.

微服務需要的是高可用的部署,但對於本地部署,存在很多應用隱患,所以基於雲的微服務便是一個不錯的選擇,它以彈性的概念爲空心,對於服務的部署十分方便,提高應用程序的水平可伸縮性,即可以添加更多的服務實例,同時基於雲的微服務,具有更高的彈性,對於某個服務的不可用,可以快速重新申請一個服務器,而不是重新部署.

云爲微服務提供了硬件和軟件上的便利,使得微服務變的高可用.

Spring Cloud 與中間件

傳統的中間件,即操作系統之上,應用軟件之下的“中間層”軟件,隨着架構的演變,中間件的邊界也有所延伸,即“中間件向下屏蔽異構的硬件,軟件網絡等計算資源,向上提供應用開發,運行,維護等生命週期的統一計算環境與管理”(來自重新定義SpringCloud 實戰),簡單的理解,中間件即一種提供中間服務。Spring Cloud也可是一箇中間件,Spring Cloud可以作爲服務治理中間件,支持使用Eureka,Zookeeper,Consul作爲註冊中心,Spring Cloud Config是Spring Cloud中的配置中心中間件,Spring Cloud也提供了網關中間件,Zuul,Gateway,Spring Cloud Sleuth是全鏈路監控中間件。                  

再談Spring Cloud

從架構的演變來看,架構的變化爲:單體架構,分佈式架構,SOA架構,微服務架構,“微服務是一種架構風格,對於一個大型複雜的業務系統,它的業務功能可以拆分爲多個相互獨立的微服務,各個微服務之間是鬆耦合的,通過各種遠程協議進行同步/異步通信,各微服務均可以被獨立部署,擴/縮容以及升/降級”(來自重新定義SpringCloud 實戰)。SpringCloud 是一個微服務解決方案,是一個實現微服務落地的一整套工具.Spring Cloud也是一箇中間件,即向上對服務消費者,向下對服務提供者,在這中間,提供了一系列處理,使得微服務高效,高可用.

 

如有異議,敬請指出,謝謝觀看,與君共勉.

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章