1. 程式人生 > >基於Spring Boot和Spring Cloud實現微服務架構學習(一)-Spring框架介紹

基於Spring Boot和Spring Cloud實現微服務架構學習(一)-Spring框架介紹

總結

看了幾周Spring相關框架的書籍和官方demo,是時候開始總結下這中間的學習感悟。

首先,最想說的是,當你要學習一套最新的技術時,官網的英文文件是學習的最佳渠道。因為網上流傳的多數資料是官網翻譯而來,很多描述的重點也都偏向於作者自身碰到的問題,這樣就很容易讓你理解和操作出現偏差,最開始我就進入了這樣誤區。官網的技術導讀真的描述的很詳細,雖然對於我們看英文很費勁,但如果英文不是很差,請選擇沉下心去讀,你一定能收穫好多。我的學習是先從Spring boot開始的,然後接觸到微服務架構,當然,這一切最大的啟迪還是感謝我的一個老師,是他給我指明瞭新的道路,讓我眼前一亮,再次感謝。

談及微服務,作為當前主流的企業框架Spring,它提供了一整套相關的頂級專案,能讓開發者快速的上手實現自己的應用,今天就介紹下Spring旗下各個頂級專案:

Spring IO platform:用於系統部署,是可整合的,構建現代化應用的版本平臺,具體來說當你使用maven dependency引入spring jar包時它就在工作了。

Spring Boot:旨在簡化建立產品級的 Spring 應用和服務,簡化了配置檔案,使用嵌入式web伺服器,含有諸多開箱即用微服務功能,可以和spring cloud聯合部署。

Spring Framework:即通常所說的spring 框架,是一個開源的Java/Java EE全功能棧應用程式框架,其它spring專案如spring boot也依賴於此框架。

Spring Cloud:微服務工具包,為開發者提供了在分散式系統的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排等開發工具包。

Spring XD:是一種執行時環境(伺服器軟體,非開發框架),組合spring技術,如spring batch、spring boot、spring data,採集大資料並處理。

Spring Data:是一個數據訪問及操作的工具包,封裝了很多種資料及資料庫的訪問相關技術,包括:jdbc、Redis、MongoDB、Neo4j等。

Spring Batch:批處理框架,或說是批量任務執行管理器,功能包括任務排程、日誌記錄/跟蹤等。

Spring Security:是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。

Spring Integration:面向企業應用整合(EAI/ESB)的程式設計框架,支援的通訊方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。

Spring Social:一組工具包,一組連線社交服務API,如Twitter、Facebook、LinkedIn、GitHub等,有幾十個。

Spring AMQP:訊息佇列操作的工具包,主要是封裝了RabbitMQ的操作。

Spring HATEOAS:是一個用於支援實現超文字驅動的 REST Web 服務的開發庫。

Spring Mobile:是Spring MVC的擴充套件,用來簡化手機上的Web應用開發。

Spring for Android:是Spring框架的一個擴充套件,其主要目的在乎簡化Android本地應用的開發,提供RestTemplate來訪問Rest服務。

Spring Web Flow:目標是成為管理Web應用頁面流程的最佳方案,將頁面跳轉流程單獨管理,並可配置。

Spring LDAP:是一個用於操作LDAP的Java工具包,基於Spring的JdbcTemplate模式,簡化LDAP訪問。

Spring Session:session管理的開發工具包,讓你可以把session儲存到redis等,進行叢集化session管理。

Spring Web Services:是基於Spring的Web服務框架,提供SOAP服務開發,允許通過多種方式建立Web服務。

Spring Shell:提供互動式的Shell可讓你使用簡單的基於Spring的程式設計模型來開發命令,比如Spring Roo命令。

Spring Roo:是一種Spring開發的輔助工具,使用命令列操作來生成自動化專案,操作非常類似於Rails。

Spring Scala:為Scala語言程式設計提供的spring框架的封裝(新的程式語言,Java平臺的Scala於2003年底/2004年初發布)。

Spring BlazeDS Integration:一個開發RIA工具包,可以整合Adobe Flex、BlazeDS、Spring以及Java技術建立RIA。

Spring Loaded:用於實現java程式和web應用的熱部署的開源工具。

Spring REST Shell:可以呼叫Rest服務的命令列工具,敲命令列操作Rest服務。

目前來說spring主要集中於spring boot(用於開發微服務)和spring cloud相關框架的開發,我們從幾張圖著手理解,然後再具體介紹:

spring cloud子專案包括:

Spring Cloud Config:配置管理開發工具包,可以讓你把配置放到遠端伺服器,目前支援本地儲存、Git以及Subversion。

Spring Cloud Bus:事件、訊息匯流排,用於在叢集(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。

Spring Cloud Netflix:針對多種Netflix元件提供的開發工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka:雲端負載均衡,一個基於 REST 的服務,用於定位服務,以實現雲端的負載均衡和中間層伺服器的故障轉移。

Netflix Hystrix:容錯管理工具,旨在通過控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

Netflix Zuul:邊緣服務工具,是提供動態路由,監控,彈性,安全等的邊緣服務。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供動態型別化屬性、執行緒安全配置操作、輪詢框架、回撥機制等功能。

Spring Cloud for Cloud Foundry:通過Oauth2協議繫結服務到CloudFoundry,CloudFoundry是VMware推出的開源PaaS雲平臺。

Spring Cloud Sleuth:日誌收集工具包,封裝了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大資料操作工具,通過命令列方式操作資料流。

Spring Cloud Security:安全工具包,為你的應用程式新增安全控制,主要是指OAuth2。

Spring Cloud Consul:封裝了Consul操作,consul是一個服務發現與配置工具,與Docker容器可以無縫整合。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用於使用zookeeper方式的服務註冊和發現。

Spring Cloud Stream:資料流操作開發包,封裝了與Redis,Rabbit、Kafka等傳送接收訊息。

Spring Cloud CLI:基於 Spring Boot CLI,可以讓你以命令列方式快速建立雲元件。