自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何用Spring Boot和Cloud實(shí)現(xiàn)微服務(wù)

譯文
開(kāi)發(fā) 架構(gòu)
本文將向您介紹如何使用Spring Boot和Cloud來(lái)實(shí)現(xiàn)微服務(wù)的基本部署和相互通信。

【51CTO.com快譯】近年來(lái),憑借著其架構(gòu)中的各項(xiàng)優(yōu)勢(shì),微服務(wù)體系架構(gòu)已經(jīng)成為了應(yīng)用程序開(kāi)發(fā)的首選項(xiàng)。但是不可否認(rèn)的是,每一種架構(gòu)都有自身的短板,微服務(wù)架構(gòu)也不例外。例如:在微服務(wù)架構(gòu)中,我們可以部署許多被獨(dú)立開(kāi)發(fā)出來(lái)的服務(wù),以提供在某些特定場(chǎng)景下的功能。不過(guò),它們需要通過(guò)不同的API或事件,來(lái)實(shí)現(xiàn)彼此之間的通信。有時(shí),它們甚至需要與某些外部系統(tǒng)進(jìn)行通信,以實(shí)現(xiàn)完整的系統(tǒng)功能。

雖然我們?cè)陂_(kāi)發(fā)的過(guò)程中,需要最小化某個(gè)微服務(wù)對(duì)于其他微服務(wù)的直接依賴(lài)性。但是在某些情況下,這是不可避免的。因此,我們需要在開(kāi)發(fā)和部署微服務(wù)時(shí),全面考慮并管理好諸如:服務(wù)發(fā)現(xiàn)(Service Discovery)、斷路器(Circuit Breaker)、分布式跟蹤(Distributed Tracing)、路由、連接器(Connector),配置(Configurations)等關(guān)系。

首先,我為您準(zhǔn)備了如下關(guān)系圖。它向您展示了如何使用Spring Boot去構(gòu)建微服務(wù),以及如何使用Spring Cloud去部署和管理微服務(wù)。

 

如上圖所示,我用到了Spring Cloud所提供的各種產(chǎn)品。下面我將解釋每個(gè)組件能夠解決的實(shí)際問(wèn)題。

  • Spring Cloud Gateway — 如下圖所示,那些所有來(lái)自互聯(lián)網(wǎng)(Web或OpenAPI)的、對(duì)于微服務(wù)的調(diào)用,都應(yīng)當(dāng)經(jīng)由Gateway,以處理路由和交互(Cross-Cutting)之類(lèi)的問(wèn)題,其中包括:安全性、監(jiān)控、以及魯棒性等方面。有關(guān)如何使用Spring Cloud來(lái)構(gòu)建Gateway的內(nèi)容,請(qǐng)?jiān)L問(wèn)https://spring.io/projects/spring-cloud-gateway。

 

  • 配置服務(wù)器(Config Server) – 如下圖所示,微服務(wù)往往自帶有許多配置,而這些配置對(duì)于系統(tǒng)整合測(cè)試(System Integrate Test,SIT)、用戶驗(yàn)收測(cè)試(User Acceptance Test,UAT)、以及生產(chǎn)環(huán)境(PROD)都有所不同。因此,無(wú)論是在應(yīng)用的外部,還是在其內(nèi)部中心位置,這些配置都應(yīng)該可以被直接管理和維護(hù)。此外,如果配置中有任何需要更改的地方,其應(yīng)用代碼也不應(yīng)被迫做相應(yīng)的修改。Spring Cloud Config就能夠?yàn)榉植际较到y(tǒng)中的各種外部配置,提供服務(wù)器端和客戶端的支持。使用Config Server,您可以在中心位置管理所有當(dāng)前環(huán)境中應(yīng)用程序的外部屬性。如果您想了解更多有關(guān)如何使用Spring Cloud,來(lái)輕松創(chuàng)建Config Server的詳細(xì)內(nèi)容,請(qǐng)參見(jiàn)--https://spring.io/projects/spring-cloud-config。

 

  • 服務(wù)注冊(cè)表(Service Registry) - 各類(lèi)用戶或服務(wù)需要使用不同類(lèi)型的客戶端或服務(wù)器端發(fā)現(xiàn),來(lái)確定向它們發(fā)送請(qǐng)求的服務(wù)實(shí)例的具體位置。可是,問(wèn)題在于:這些服務(wù)的客戶該如何知道那些對(duì)于每個(gè)環(huán)境都不盡相同的,可用的服務(wù)實(shí)例呢?業(yè)界常用的解決方案是實(shí)施Service Registry。它是針對(duì)各種可用服務(wù)、及其實(shí)例與位置的數(shù)據(jù)庫(kù)。畢竟各類(lèi)服務(wù)實(shí)例在啟動(dòng)的時(shí)候,都已經(jīng)在服務(wù)注冊(cè)表中注冊(cè)過(guò)了。在此,Eureka Server能夠幫助我們創(chuàng)建對(duì)應(yīng)的Service Registry服務(wù)器,并將所有其他的服務(wù)都注冊(cè)上去。如果您想創(chuàng)建并啟用自己的注冊(cè)表服務(wù)器,請(qǐng)使用spring-cloud-starter-netflix-eureka-server依賴(lài)項(xiàng),以及@EnableEurekaServer。
  • Eureka Discovery Client – 不同的服務(wù)之間需要互相調(diào)用。如今,大多數(shù)微服務(wù)都是部署在虛擬機(jī)或容器化的環(huán)境之中,而且服務(wù)實(shí)例的數(shù)量、及其位置也是經(jīng)常動(dòng)態(tài)變化的。因此,我們需要實(shí)現(xiàn)一種機(jī)制,以使得服務(wù)客戶端能夠?qū)δ切﹦?dòng)態(tài)更改的服務(wù)實(shí)例集發(fā)出請(qǐng)求。在此,Eureka Discovery Client正好派上用場(chǎng)。它可以幫助我們從Eureka服務(wù)注冊(cè)表中獲取已注冊(cè)的相關(guān)服務(wù)。據(jù)此,Spring Cloud能夠很容易地實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)。如下圖所示,只要Spring Cloud Netflix和Eureka Core在類(lèi)路徑(classpath)上,任何使用@EnableEurekaClient的Spring Boot應(yīng)用,都會(huì)嘗試著用http://localhost:8761(其默認(rèn)值為eureka.client.serviceUrl.defaultZone)與Eureka服務(wù)器聯(lián)系。

 

  • Zipkin Server - 在分布式系統(tǒng)中,僅了解一個(gè)實(shí)例的狀態(tài)是遠(yuǎn)遠(yuǎn)不夠的。我們往往需要匯總服務(wù)中所有實(shí)例的矩陣、日志和跟蹤信息,以洞察到那些特定事務(wù)所采用的路徑。在此,我們需要用到分布式跟蹤(也稱(chēng)為請(qǐng)求跟蹤,請(qǐng)參見(jiàn)--https://opensource.com/article/18/9/distributed-tracing-microservices-world)。它通過(guò)遵循一系列系統(tǒng)內(nèi)部的整體操作,以查明發(fā)生故障的原因,以及性能欠佳的根源。作為一個(gè)分布式跟蹤系統(tǒng),Zipkin(https://zipkin.io/)的功能主要包括數(shù)據(jù)的收集和查找。也就是說(shuō),它能夠協(xié)助收集服務(wù)架構(gòu)中與延遲問(wèn)題有關(guān)的各種時(shí)序數(shù)據(jù)(timing data)。因此,Spring Cloud在其整體方案中添加了zipkin,并據(jù)此推出了Spring Cloud Sleuth(https://spring.io/projects/spring-cloud-sleuth#overview),為分布式跟蹤提供了Spring Boot的自動(dòng)化配置。
  • 斷路器(Circuit Breaker,Hystrix) — 在微服務(wù)架構(gòu)中,如果某個(gè)服務(wù)不可用,那么當(dāng)另一個(gè)服務(wù)同步調(diào)用它時(shí),就可能會(huì)花費(fèi)過(guò)多時(shí)間去等到響應(yīng),同時(shí)讓會(huì)調(diào)用方消耗各種線程之類(lèi)的資源。顯然,如果資源被耗盡,調(diào)用服務(wù)將無(wú)法處理其他類(lèi)型的請(qǐng)求。因此,為了防止此類(lèi)網(wǎng)絡(luò)或服務(wù)的故障,波及到其他服務(wù),我們需要使用斷路器模式,來(lái)構(gòu)建具有容錯(cuò)和魯棒性的系統(tǒng),以保證當(dāng)關(guān)鍵服務(wù)不可用、或出現(xiàn)高延遲時(shí),該系統(tǒng)仍可正常運(yùn)行。在Spring Cloud體系中,我們可以通過(guò)Hystrix(https://spring.io/projects/spring-cloud-circuitbreaker)來(lái)實(shí)現(xiàn)該目的。如果您想具體了解如何在Spring boot應(yīng)用中使用Hystrix,請(qǐng)參見(jiàn)教程--https://dzone.com/articles/microservices-part-4-spring-cloud-circuit-breaker。此外,Spring Cloud還提供了一個(gè)不錯(cuò)的儀表板,來(lái)監(jiān)視Hystrix的各種命令狀態(tài)。您可以使用@EnableHystrixDashboard,這個(gè)主入口類(lèi),并通過(guò)Hystrix Dashboard Starter來(lái)創(chuàng)建一個(gè)Spring Boot應(yīng)用程序。

Spring Feign Client - 在微服務(wù)架構(gòu)中,服務(wù)與服務(wù)之間的通信可謂“家常便飯”,而您往往需要使用某種機(jī)制來(lái)調(diào)用(invoke)另一個(gè)服務(wù)。作為一種聲明性的Rest Client,Spring Feign Client能夠創(chuàng)建一個(gè)用JAX-RS或Spring MVC注釋所修飾的接口。如下圖所示,此類(lèi)的動(dòng)態(tài)實(shí)現(xiàn)非常容易被使用。

 

至此,想必您已經(jīng)能夠通過(guò)上述介紹,了解了如何使用Spring Boot和Cloud來(lái)實(shí)現(xiàn)微服務(wù)的相關(guān)知識(shí)與流程。如果您感興趣的話,可以自己動(dòng)手嘗試著編寫(xiě)一套簡(jiǎn)單的服務(wù)例子。

【原標(biāo)題】Microservices Implementation using (Spring Boot and Cloud) (作者: Nitesh Gupta )

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO
相關(guān)推薦

2024-07-10 10:51:39

SpringEureka數(shù)據(jù)中心

2022-10-10 08:00:00

微服務(wù)Spring Boo容器

2017-09-05 14:05:11

微服務(wù)spring clou路由

2021-12-14 06:59:39

微服務(wù)Kubernetes架構(gòu)

2024-02-06 18:05:54

微服務(wù)SpringCloud

2018-06-01 23:08:01

Spring Clou微服務(wù)服務(wù)器

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)

2024-08-05 10:03:53

2022-02-12 21:08:56

微服務(wù)SpringIstio

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2023-12-19 09:33:40

微服務(wù)監(jiān)控

2018-05-04 15:27:22

Spring Boo Web開(kāi)發(fā)

2018-03-16 09:36:04

微服務(wù)Spring ClouDubbo

2017-09-04 16:15:44

服務(wù)網(wǎng)關(guān)架構(gòu)

2025-02-28 09:40:21

SidecarSCA服務(wù)

2024-11-21 16:09:22

2023-03-20 08:00:00

公共云開(kāi)發(fā)Spring Clo

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)

2021-10-19 14:02:12

服務(wù)器SpringSecurity

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)