@html
架構的發展歷程是從單體式架構,到分佈式架構,到SOA架構,再到微服務架構。spring
微服務架構在某種程度上是SOA架構的進一步的發展。服務器
微服務目前並無比較官方的定義。微服務 Microservices 之父,馬丁.福勒,對微服務大概的概述以下:網絡
就目前而言,對於微服務業界並無一個統一的、標準的定義(While there is no precise definition of this architectural style ) 。
但一般在其而言,微服務架構是一種架構模式或者說是一種架構風格,它提倡將單一應用程序劃分紅一組小的服務,每一個服務運行獨立的本身的進程中,服務之間互相協調、互相配合,爲用戶提供最終價值。
服務之間採用輕量級的通訊機制互相溝通(一般是基於 HTTP 的 RESTful API ) 。每一個服務都圍繞着具體業務進行構建,而且可以被獨立地部署到生產環境、類生產環境等。
另外,應儘可能避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建,能夠有一個很是輕量級的集中式管理來協調這些服務。可使用不一樣的語言來編寫服務,也可使用不一樣的數據存儲。架構
目前最流行的兩種微服務解決方案是SpringCloud和Dubbo。負載均衡
Spring Cloud 做爲 Java 言的微服務框架,它依賴於 Spring Boot ,有快速開發、持續交付和容易部署等特色。 Spring Cloud 的組件很是多,涉及微服務的方方面面,井在開源社區 Spring、Netflix Pivotal 兩大公司的推進下愈來愈完善。框架
SpringCloud是一系列組件的有機集合。分佈式
Netflix Eureka 是由 Netflix 開源的一款基於 REST 的服務發現組件,包括 Eureka Server 及 Eureka Client。微服務
Ribbon Netflix 公司開源的一個負載均衡的組件。工具
Feign是是一個聲明式的Web Service客戶端。
Hystrix是Netstflix 公司開源的一個項目,它提供了熔斷器功能,可以阻止分佈式系統中出現聯動故障。
Zuul 是由 Netflix 孵化的一個致力於「網關 「解決方案的開源組件。
Spring Cloud Gateway 是 Spring 官方基於 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等
技術開發的網關, Spring Cloud Gateway 旨在爲微服務架構提供簡單、 有效且統一的 API 路由
管理方式。
Spring Cloud 中提供了分佈式配置中 Spring Cloud Config ,爲外部配置提供了客戶端和服務器端的支持。
使用 Spring Cloud Bus, 能夠很是容易地搭建起消息總線。
Sprin Cloud 構建的微服務系統中可使用 Spring Cloud OAuth2 來保護微服務系統。
Spring Cloud Sleuth是Spring Cloud 個組件,它的主要功能是在分佈式系統中提供服務鏈路追蹤的解決方案。
本文中對架構的演進及Spring Cloud 構建微服務的基本組件進行了概覽。
參考:
【1】:朱榮鑫、張天、黃迪璇編著《Spring Cloud微服務架構進階》
【2】:翟永超著 《Spring Cloud 微服務實戰》
【3】:許進等著《從新定義SpringCloud實戰》
【4】: 方誌朋著 《深刻理解SpringCloud微服務構建》
【5】:SOA架構設計分析
【6】:【12張手繪圖】我搞懂了微服務架構!
【7】:微服務架構深度解析與最佳實踐