該項目通過自動配置為Spring Boot應(yīng)用程序提供Netflix OSS集成博脑,并綁定到Spring環(huán)境和其他Spring編程模型成語驳糯。通過幾個簡單的注釋届搁,您可以快速啟用和配置應(yīng)用程序中的常見模式,并通過經(jīng)過測試的Netflix組件構(gòu)建大型分布式系統(tǒng)斥扛。提供的模式包括服務(wù)發(fā)現(xiàn)(Eureka)缭黔,斷路器(Hystrix)食茎,智能路由(Zuul)和客戶端負載平衡(Ribbon)。
服務(wù)發(fā)現(xiàn)是基于微服務(wù)架構(gòu)的關(guān)鍵原則之一馏谨。嘗試配置每個客戶端或某種形式的約定可能非常困難董瞻,可以非常脆弱。Netflix服務(wù)發(fā)現(xiàn)服務(wù)器和客戶端是Eureka田巴∧坪可以將服務(wù)器配置和部署為高可用性,每個服務(wù)器將注冊服務(wù)的狀態(tài)復(fù)制到其他服務(wù)器壹哺。
要在您的項目中包含Eureka客戶端抄伍,請使用組org.springframework.cloud和工件IDspring-cloud-starter-eureka的啟動器。有關(guān)使用當(dāng)前的Spring Cloud發(fā)布列表設(shè)置構(gòu)建系統(tǒng)的詳細信息管宵,請參閱Spring Cloud項目頁面截珍。
當(dāng)客戶端注冊Eureka時攀甚,它提供關(guān)于自身的元數(shù)據(jù),例如主機和端口岗喉,健康指示符URL秋度,主頁等。Eureka從屬于服務(wù)的每個實例接收心跳消息钱床。如果心跳失敗超過可配置的時間表荚斯,則通常將該實例從注冊表中刪除。
示例eureka客戶端:
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
(即完全正常的Spring Boot應(yīng)用程序)查牌。在這個例子中事期,我們明確地使用@EnableEurekaClient,但只有Eureka可用纸颜,你也可以使用@EnableDiscoveryClient兽泣。需要配置才能找到Eureka服務(wù)器。例:
application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
其中“defaultZone”是一個魔術(shù)字符串后備值胁孙,為任何不表示首選項的客戶端提供服務(wù)URL(即它是有用的默認值)唠倦。
從Environment獲取的默認應(yīng)用程序名稱(服務(wù)ID),虛擬主機和非安全端口分別為${spring.application.name}涮较,${spring.application.name}和${server.port}牵敷。
@EnableEurekaClient將應(yīng)用程序同時進入一個Eureka“實例”(即注冊自己)和一個“客戶端”(即它可以查詢注冊表以查找其他服務(wù))。實例行為由eureka.instance.*配置鍵驅(qū)動法希,但是如果您確保您的應(yīng)用程序具有spring.application.name(這是Eureka服務(wù)ID或VIP的默認值),那么默認值將是正常的靶瘸。
從現(xiàn)在開始苫亦,我這邊會將近期研發(fā)的springcloud微服務(wù)云架構(gòu)的搭建過程和精髓記錄下來,幫助更多有興趣研發(fā)spring cloud框架的朋友怨咪,希望可以幫助更多的好學(xué)者屋剑。大家來一起探討spring cloud架構(gòu)的搭建過程及如何運用于企業(yè)項目。源碼來源