開發與維運

Spring Cloud系列之微服務介紹

相信我,請認真讀完,點開每一個鏈接,或許你才能真正瞭解什麼是微服務?什麼是分佈式?什麼是雲計算?絕對沒有多餘!

1 微服務

微服務架構是“新常態”。構建小型的、自包含的、隨時可以運行的應用程序可以為代碼帶來極大的靈活性和靈活性。spring boot的許多專門構建的特性使得在大規模生產中構建和運行微服務變得非常容易。別忘了,沒有spring cloud,就沒有一個微服務架構是完整的,它簡化了管理,增強了您的容錯能力。
diagram-microservices-88e01c7d34c688cb49556435c130d352.svg

1.1 什麼是微服務?

微服務是一種現代的軟件方法,應用程序代碼可以獨立於其他程序以可管理的小塊形式交付。

1.2 為什麼要構建微服務?

它們的小規模和相對隔離可以帶來許多額外的好處,例如更容易維護、提高生產力、更大的容錯能力、更好的業務協調等等。

2 Spring Cloud

開發分佈式系統可能具有挑戰性。複雜性從應用層轉移到網絡層,要求服務之間進行更大的交互。使您的代碼成為“本機雲”意味著要處理12個因素的問題,例如外部配置、無狀態狀態、日誌記錄和連接到支持服務。spring cloud項目套件包含許多使應用程序在雲中運行所需的服務。
cloud-diagram-1a4cad7294b4452864b5ff57175dd983.svg

2.1 Service discovery——服務發現

在雲中,應用程序不可能總是知道其他服務的確切位置。服務註冊中心(如Netflix Eureka)或sidecar解決方案(如HashiCorp consur)都可以提供幫助。spring cloud為流行的註冊中心提供了Discovery Client實現,比如Eureka、consur、Zookeeper,甚至Kubernetes的內置系統。還有一個spring cloud負載平衡器(Spring Cloud LoadBalancer),可以幫助您在服務實例之間小心地分配負載。

2.2 API gateway——API 網關

由於有如此多的客戶機和服務器,在您的雲架構中包含一個API網關通常是很有幫助的。網關可以負責保護和路由消息、隱藏服務、限制負載以及許多其他有用的事情。spring cloud gateway為您提供了對API層的精確控制,集成了spring cloud服務發現和客戶端負載平衡解決方案,以簡化配置和維護。

2.3 Cloud configuration——雲配置

在雲中,配置不能簡單地嵌入到應用程序中。配置必須足夠靈活,以應對多個應用程序、環境和服務實例,並在不停機的情況下處理動態變化。spring cloud config旨在減輕這些負擔,並提供與Git等版本控制系統的集成,以幫助您確保配置的安全。

2.4 Circuit breakers——斷路器

分佈式系統可能不可靠。請求可能會遇到超時或完全失敗。斷路器可以幫助緩解這些問題,spring cloud斷路器為您提供了三種流行的選擇:Resilience4J、Sentinel或Hystrix。

2.5 Tracing——追蹤

調試分佈式應用程序可能很複雜,而且需要很長時間。對於任何給定的失敗,您可能需要將來自多個獨立服務的信息跟蹤拼湊在一起。spring cloud sleuth可以以一種可預測和可重複的方式為您的應用程序安裝工具。當與Zipkin結合使用時,您可以將注意力集中在任何可能存在的延遲問題上。

2.6 Testing——測試

在雲計算中,擁有可靠、可信、穩定的api可以獲得額外的分數,但要實現這一目標還需要一段旅程。基於契約的測試是高績效團隊經常使用的一種技術。它有助於規範化api的內容,並圍繞它們構建測試,以確保代碼始終處於檢查狀態。
spring cloud contract通過使用Groovy、Java或Kotlin編寫的契約,為REST和基於消息傳遞的api提供基於契約的測試支持。

3 流數據

spring cloud stream使得使用和生成事件變得非常容易,無論您選擇哪個消息傳遞平臺。spring cloud stream只需幾行代碼就可以將您的微服務與實時消息傳遞連接起來,以幫助您構建高度可伸縮、事件驅動的系統。
Get started with Spring Cloud Stream

4 管理微服務

spring boot的可選儀器框架microller直接將度量發送給Prometheus、Atlas等,以提供有價值的見解。spring cloud的Sleuth和Zipkin項目補充了這一點,它們提供了分佈式跟蹤,以便您能夠實時跟蹤正在發生的事情。
Get started with Micrometer on Spring Boot

5 雲計算

微服務的小型、無狀態特性使其成為水平擴展的理想選擇。像TAS和PKS這樣的平臺可以提供可擴展的基礎設施來匹配,並大大減少您的管理開銷。使用雲連接器,您還可以輕鬆地使用多個後端服務。
Try Pivotal Web Services for free

6 鏈接

Spring Cloud系列

Spring Cloud系列之微服務介紹
[Spring Cloud系列之微服務註冊中心]()
[Spring Cloud系列之微服務統一配置中心]()
[Spring Cloud系列之微服務RPC]()
[Spring Cloud系列之微服務服務監控]()
[Spring Cloud系列之微服務鏈路跟蹤]()
[Spring Cloud系列之微服務授權與認證]()

關於

我是馮文議(Erwin Feng),Java Developer,專注於程序設計與開發。開源項目:JavaLib、api-result。喜歡電影、遊戲、音樂、茶、旅行。
我的個人網站:https://fengwenyi.com
我的Github:https://github.com/fengwenyi

Leave a Reply

Your email address will not be published. Required fields are marked *