@
1、什麼是微服務
1.1、架構演進
架構的發展歷程是從單體式架構,到分散式架構,到SOA架構,再到微服務架構。
- 單體架構:未做任何拆分的Java Web程式
- 分散式架構:按照業務垂直劃分,每個業務都是單體架構,通過API互相呼叫。
- SOA架構:SOA是一種面向服務的架構。其應用程式的不同元件通過網路上的通訊協議向其它元件提供服務或消費服務,所以也是分散式架構的一種。
1.2、微服務架構
微服務架構在某種程度上是SOA架構的進一步的發展。
微服務目前並沒有比較官方的定義。微服務 Microservices 之父,馬丁.福勒,對微服務大概的概述如下:
就目前而言,對於微服務業界並沒有一個統一的、標準的定義(While there is no precise definition of this architectural style ) 。
但通常在其而言,微服務架構是一種架構模式或者說是一種架構風格,它提倡將單一應用程式劃分成一組小的服務,每個服務執行獨立的自己的程式中,服務之間互相協調、互相配合,為使用者提供最終價值。
服務之間採用輕量級的通訊機制互相溝通(通常是基於 HTTP 的 RESTful API ) 。每個服務都圍繞著具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。
另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建,可以有一個非常輕量級的集中式管理來協調這些服務。可以使用不同的語言來編寫服務,也可以使用不同的資料儲存。
1.3、微服務解決方案
目前最流行的兩種微服務解決方案是SpringCloud和Dubbo。
2、SpringCloud概覽
2.1、什麼是SpringCloud
Spring Cloud 作為 Java 言的微服務框架,它依賴於 Spring Boot ,有快速開發、持續交付和容易部署等特點。 Spring Cloud 的元件非常多,涉及微服務的方方面面,井在開源社群 Spring、Netflix Pivotal 兩大公司的推動下越來越完善。
SpringCloud是一系列元件的有機集合。
2.1、SpringCloud主要元件
2.1.1、Eureka
Netflix Eureka 是由 Netflix 開源的一款基於 REST 的服務發現元件,包括 Eureka Server 及 Eureka Client。
2.1.2、Ribbon
Ribbon Netflix 公司開源的一個負載均衡的元件。
2.1.3、Feign
Feign是是一個宣告式的Web Service客戶端。
2.1.4、Hystrix
Hystrix是Netstflix 公司開源的一個專案,它提供了熔斷器功能,能夠阻止分散式系統中出現聯動故障。
2.1.5、Zuul
Zuul 是由 Netflix 孵化的一個致力於“閘道器 “解決方案的開源元件。
2.1.6、Gateway
Spring Cloud Gateway 是 Spring 官方基於 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等
技術開發的閘道器, Spring Cloud Gateway 旨在為微服務架構提供簡單、 有效且統一的 API 路由
管理方式。
2.1.7、Config
Spring Cloud 中提供了分散式配置中 Spring Cloud Config ,為外部配置提供了客戶端和伺服器端的支援。
2.1.8、 Bus
使用 Spring Cloud Bus, 可以非常容易地搭建起訊息匯流排。
2.1.9、OAuth2
Sprin Cloud 構建的微服務系統中可以使用 Spring Cloud OAuth2 來保護微服務系統。
2.1.10、Sleuth
Spring Cloud Sleuth是Spring Cloud 個元件,它的主要功能是在分散式系統中提供服務鏈路追蹤的解決方案。
3、總結
本文中對架構的演進及Spring Cloud 構建微服務的基本元件進行了概覽。
博主水平有限,如有錯漏,歡迎指出!
參考:
【1】:朱榮鑫、張天、黃迪璇編著《Spring Cloud微服務架構進階》
【2】:翟永超著 《Spring Cloud 微服務實戰》
【3】:許進等著《重新定義SpringCloud實戰》
【4】: 方誌朋著 《深入理解SpringCloud微服務構建》
【5】:SOA架構設計分析
【6】:【12張手繪圖】我搞懂了微服務架構!
【7】:微服務架構深度解析與最佳實踐