微服務與Spring Cloud

微服務是繼SOA以後流行起來的一種系統架構模式。因它緊隨SOA以後,因此有必要對他們先做個比較。react

SOA vs 微服務

關於兩者的比較表格,我在谷歌上搜索的一篇文章分析的挺好,現引用以下。git

面向服務架構 微服務架構
出現於1990's年代 出現於2000's年代
最大化應用服務的重用性 關注解耦
系統變化須要修改總體 系統變化是建立新服務
DevOps和持續發佈開始變得流行但不是主流 重點關注DevOps和持續發佈
聚焦於業務系統重用 「邊界上下文」愈加重要
使用ESB通訊 使用簡單消息系統通訊
支持多種消息協議 使用輕量級協議諸如:HTTP, REST等
對部署在其上的全部服務使用通用平臺 一般使用雲平臺而非應用服務器
Docker不太流行 容器與微服務工做的很是協調
SOA服務共享數據存儲 每一個微服務能夠擁有獨立的存儲服務
通用的治理和標準 鬆散治理,關注團隊協做與自由選擇

SOA vs MicroService

<!--more-->github

微服務

微服務這麼流行,確定有其優點所在。不過也不能不看到它的劣勢噢。spring

優點

  • 每一個模塊都是獨立的,因此你能夠選擇不一樣的開發語言以得到語言級別的好處
  • 每一個模塊均可以有本身的數據庫,NoSQL或者關係型
  • 開發人員構建和維護微服務因此他們對模塊很是熟悉。跨功能的成員一些協做完成服務

劣勢

  • 服務調用其它服務,因此對於大型項目來講,難以跟蹤調用過程以及監控服務
  • 服務之間經過RESTful API調用因此性能可能沒有總體的進程內通訊的系統高
  • 難以調試,尤爲是一個服務調用了一系列其它服務

SpringCloud

如何揚長避短,更好更方便地利用微服務呢。數據庫

SpringCloud提供如下特性來強化微服務的優點、彌補劣勢

  • 分佈式/版本化的配置
  • 服務註冊和發現
  • 路由
  • 服務到服務的調用
  • 負載均衡
  • 熔斷(Circuit Breaker)
  • 全局鎖
  • leader選舉及集羣狀態
  • 分佈式消息

SpringCloud主要項目

Spring Cloud Config

統一配置中心。編程

Spring Cloud Netflix

服務發現後端

Spring Cloud Bus

一個事件總線,利用分佈式消息系統將服務和服務實例連到一塊兒。可用於在集羣內傳播狀態變化(如配置變化事件)api

Spring Cloud for Cloud Foundry

集成你的應用到Pivotal Cloud Foundry,提供而且讓實現SSO和OAuth2來保護資源變得更加容易。服務器

Spring Cloud Open Service Broker

提供一個用於構建實現了Open Service Broker API的服務的Broker的起始點架構

Open Service Broker API鏈接開發者到一個全球的服務生態環境,該項目給開發者、ISVs、SaaS廠商提供一個單一的、簡單的和完美的方式去發佈服務到原生雲平臺上(諸如Cloud Foundry, OpenShift, Kubernetes)

Open Service Broker 項目

Open Service Broker API定義

Spring Cloud Cluster

提供基於Zookeeper、Redis、Hazelcast、Consul的領頭選舉、通用狀態機模式的抽象及實現。

Spring Cloud Consul

基於Hashicorp Consul的服務發現及配置管理。

Spring Cloud Security

提供對基於負載均衡的OAuth2 rest client和authentication header的支持,依賴了Zuul proxy。

Spring Cloud Sleuth

應用於Spring Cloud的分佈式追蹤功能,與Zipkin, HTrace and log-based (e.g. ELK) tracing 相兼容。

Spring Cloud Data Flow

一個cloud-native的服務編排,易用的DSL、drag-and-drop GUI,REST-APIs 一塊兒全面簡化了基於服務編排的數據管道。

Spring Cloud Stream

一個輕量級的事件驅動微服務框架,便於快速構建鏈接到外部系統的應用。簡單的聲明模型可使用Apache Kafka或RabbitMQ在Spring Boot應用間收發消息。

Spring Cloud Stream App Starters

一系列基於Spring Boot的Spring集成應用程序,提供與外部應用的集成。

Spring Cloud Task

一個短時間的微服務框架,快速構建執行有限數量的數據處理的應用。簡單的聲明就能夠增長功能性或非功能性特性到Spring Boot中。

Spring Cloud Task App Starters

一系列單機版的可執行應用程序,能夠擁有按需用例:好比數據庫遷移、機器學習、定時操做。這些應用能夠運行於各類獨立平臺,好比:Cloud Foundry、Apache Yarn、 ApacheMesos、Kubernetes、Docker甚至你的筆記本上。

Spring Cloud Zookeeper

基於Apache Zookeeper的服務發現及配置管理。

Spring Cloud Connectors

使得運行於各類平臺上的PaaS應用可以方便地鏈接到後端服務,好比數據庫、消息Broker。(這個項目原先叫做Spring Cloud)

Spring Cloud Starters

Spring Boot風格的啓動項目,簡化服務消費方Spring Cloud的依賴管理。

Spring Cloud CLI

Spring Boot CLI插件,用來快速使用Groovy語言建立Spring Cloud組件應用

Spring Cloud Contract

是一攬子有關幫助用戶成功地實現「消費端驅動契約」方式解決方案

Spring Cloud Gateway

是一款基於智能的、可編程的路由的Project Reactor

Spring Cloud OpenFeign

爲Spring Boot應用提供經過自動化配置和綁定到Spring Environment和其它編程模型風格的集成。

原文發表於http://www.yesdata.net/2018/03/15/microservice-and-spring-cloud/

·

相關文章
相關標籤/搜索