Spring Cloud 開門見山

Spring Cloud簡介

Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,爲開發者提供了在分佈式系統(配置管理,服務發現,熔斷,路由,微代理,控制總線,一次性token,全居瑣,leader選舉,分佈式session,集羣狀態)中快速構建的工具。git

SpringCloud子項目介紹

     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,能夠讓你以命令行方式快速創建雲組件。
github

 

Spring Cloud基於Spring Boot, 由衆多的子項目組成. 例如Spring Cloud Config是一箇中心化的配置管理服務, 用來解決微服務環境下配置文件分散管理的難題, Spring Cloud Stream是一個消息中間件抽象層, 目前支持Redis, Rabbit MQ和Kafka, Spring Cloud Netflix整合了Netflix OSS, 能夠直接在項目中使用Netflix OSS. 目前Spring Cloud的子項目有接近20個, 若是要使用Spring Cloud, 務必先將子項目都瞭解一遍, 得知道哪些功能Spring Cloud已經提供了, 避免團隊花費大量時間重複造輪子.spring

 一個合格的微服務系統必然包括從設計(從業務層面劃分服務, 獨立數據庫), 到開發(選用合適的架構和工具, 解決CAP問題), 到測試(持續集成, 自動化測試), 到運維(容器化, 服務監控, 服務容錯)的一系列解決方案.數據庫

微服架構圖案例

Demo地址:https://github.com/zhangjianbinJAVA/mysteam.git安全

原博客地址:http://skaka.me/服務器

主要特色:
  1. 使用eureka和Netflix Ribbon進行服務註冊和服務發現.session

  2. 使用Spring Cloud Stream, zookeeper和kafka實現分佈式事務.架構

  3. 使用hystrix實現服務隔離, hystrix dashboard和turbine進行服務監控.app

  4. 使用Spring MVC和Swagger實現REST API.負載均衡

  5. 使用Spring Cloud Config實現配置集中管理.

系統拆分紅了五個服務:
  用戶服務(user service)
  帳戶服務(account service)
  產品服務(product service)
  優惠券服務(coupon service)
  訂單服務(order service)

關注點主要在Backend Services和MQ, MySQL這一部分. 服務之間經過Rest API和事件進行通訊. Rest API主要用來進行一些只讀等不須要事務的操做, 涉及事務的操做通常使用事件來完成。

相關文章
相關標籤/搜索