SpringCloud官網:https://spring.io/projects/spring-cloud
《Spring Cloud微服務:入門、實戰與進階》
微服務架構是一種架構風格,而Spring Cloud是實現微服務架構的一系列框架的有序集合。
書涉及的源碼均可在https://github.com/yinjihuan/spring-cloud中下載。如果下載失敗,也可以發郵件給筆者[email protected],或者關注微信公衆號“猿天地”,直接與筆者交流。
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性,巧妙地簡化了分佈式系統基礎設施的開發,如服務註冊、服務發現、配置中心、消息總線、負載均衡、斷路器、數據監控等,這些都可以用SpringBoot的開發風格做到一鍵啓動和部署。通俗地講,Spring Cloud就是用於構建微服務開發和治理的框架集合(並不是具體的一個框架),主要貢獻來自Netflix OSS。
1.3.1 Spring Cloud模塊介紹
Spring Cloud模塊的相關介紹如下:
❑ Eureka:服務註冊中心,用於服務管理。
❑ Ribbon:基於客戶端的負載均衡組件。
❑ Hystrix:容錯框架,能夠防止服務的雪崩效應。
❑ Feign:Web服務客戶端,能夠簡化HTTP接口的調用。
❑ Zuul:API網關,提供路由轉發、請求過濾等功能。
❑ Config:分佈式配置管理。
❑ Sleuth:服務跟蹤。
❑ Stream:構建消息驅動的微服務應用程序的框架。
❑ Bus:消息代理的集羣消息總線。除了上述模塊,還有Cli、Task……。本書只介紹一些常用的模塊。
Spring Cloud是一個非常好的框架集合,它包含的功能模塊非常多,這裏不可能一一講解到,凡是在本書中出現的模塊都是真實開發中用得到的。對於那些沒有在本書中進行講解的模塊,大家也可以自行學習,當然有任何問題也可以諮詢筆者。[插圖]
2.3 Spring Boot Starter自定義
Spring Boot的便利性體現在,它簡化了很多煩瑣的配置,這對於開發人員來說是一個福音,通過引入各種SpringBoot Starter包可以快速搭建出一個項目的腳手架。
目前提供的Spring Boot Starter包有:
❑ spring-boot-starter-web:快速構建基於Spring MVC的Web項目,使用Tomcat做默認嵌入式容器。
❑ spring-boot-starter-data-redis:操作Redis。
❑ spring-boot-starter-data-mongodb:操作Mongodb。
❑ spring-boot-starter-data-jpa:操作Mysql。
❑ spring-boot-starter-activemq:操作Activemq。
❑ ……
自動配置非常方便,當我們要操作Mongodb的時候,只需要引入spring-boot-starter-data-mongodb的依賴,然後配置Mongodb的鏈接信息spring.data.mongodb.uri = mongodb://localhost/test就可以使用MongoTemplate來操作數據,MongoTemplate的初始化工作全部交給Starter來完成。
自動配置麻煩的是當出現錯誤時,排查問題的難度上升了。自動配置的邏輯都在Spring Boot Starter中,要想快速定位問題,就必須得了解Spring Boot Starter的內部原理。接下來我們自己動手來實現一個Spring BootStarter。