新聞中心
Spring cloud中如何進(jìn)行服務(wù)注冊(cè)與發(fā)現(xiàn)Eureka,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、穆棱網(wǎng)站維護(hù)、網(wǎng)站推廣。
Spring Cloud簡(jiǎn)介
Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM的云應(yīng)用開發(fā)中涉及的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競(jìng)選、分布式會(huì)話和集群狀態(tài)管理等操作提供了一種簡(jiǎn)單的開發(fā)方式。
Spring Cloud包含了多個(gè)子項(xiàng)目(針對(duì)分布式系統(tǒng)中涉及的多個(gè)不同開源產(chǎn)品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等項(xiàng)目。
Spring Cloud Eureka
首先,我們來嘗試使用Spring Cloud Eureka來實(shí)現(xiàn)服務(wù)治理。
Spring Cloud Eureka是Spring Cloud Netflix項(xiàng)目下的服務(wù)治理模塊。而Spring Cloud Netflix項(xiàng)目是Spring Cloud的子項(xiàng)目之一,主要內(nèi)容是對(duì)Netflix公司一系列開源產(chǎn)品的包裝,它為Spring Boot應(yīng)用提供了自配置的Netflix OSS整合。通過一些簡(jiǎn)單的注解,開發(fā)者就可以快速的在應(yīng)用中配置一下常用模塊并構(gòu)建龐大的分布式系統(tǒng)。它主要提供的模塊包括:服務(wù)發(fā)現(xiàn)(Eureka),斷路器(Hystrix),智能路由(Zuul),客戶端負(fù)載均衡(Ribbon)等。
下面,就來具體看看如何使用Spring Cloud Eureka實(shí)現(xiàn)服務(wù)治理。
創(chuàng)建“服務(wù)注冊(cè)中心”
創(chuàng)建一個(gè)基礎(chǔ)的Spring Boot工程,命名為eureka-server
,并在pom.xml
中引入需要的依賴內(nèi)容:
org.springframework.boot spring-boot-starter-parent 1.5.4.RELEASE org.springframework.cloud spring-cloud-starter-eureka-server org.springframework.cloud spring-cloud-dependencies Dalston.SR1 pom import
通過@EnableEurekaServer
注解啟動(dòng)一個(gè)服務(wù)注冊(cè)中心提供給其他應(yīng)用進(jìn)行對(duì)話。這一步非常的簡(jiǎn)單,只需要在一個(gè)普通的Spring Boot應(yīng)用中添加這個(gè)注解就能開啟此功能,比如下面的例子:
@EnableEurekaServer@SpringBootApplicationpublic class Application {public static void main(String[] args) {new SpringApplicationBuilder(Application.class).web(true).run(args); } }
在默認(rèn)設(shè)置下,該服務(wù)注冊(cè)中心也會(huì)將自己作為客戶端來嘗試注冊(cè)它自己,所以我們需要禁用它的客戶端注冊(cè)行為,只需要在application.properties
配置文件中增加如下信息:
spring.application.name=eureka-serverserver.port=1001eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
為了與后續(xù)要進(jìn)行注冊(cè)的服務(wù)區(qū)分,這里將服務(wù)注冊(cè)中心的端口通過server.port屬性設(shè)置為1001。啟動(dòng)工程后,訪問:http://localhost:1001/,可以看到下面的頁面,其中還沒有發(fā)現(xiàn)任何服務(wù)。
創(chuàng)建“服務(wù)提供方”
下面我們創(chuàng)建提供服務(wù)的客戶端,并向服務(wù)注冊(cè)中心注冊(cè)自己。本文我們主要介紹服務(wù)的注冊(cè)與發(fā)現(xiàn),所以我們不妨在服務(wù)提供方中嘗試著提供一個(gè)接口來獲取當(dāng)前所有的服務(wù)信息。
首先,創(chuàng)建一個(gè)基本的Spring Boot應(yīng)用。命名為eureka-client
,在pom.xml
中,加入如下配置:
org.springframework.boot spring-boot-starter-parent 1.5.4.RELEASE org.springframework.cloud spring-cloud-starter-eureka org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-dependencies Dalston.SR1 pom import
其次,實(shí)現(xiàn)/dc請(qǐng)求處理接口,通過DiscoveryClient對(duì)象,在日志中打印出服務(wù)實(shí)例的相關(guān)內(nèi)容。
@RestControllerpublic class DcController {@AutowiredDiscoveryClient discoveryClient;@GetMapping("/dc")public String dc() { String services = "Services: " + discoveryClient.getServices(); System.out.println(services);return services; } }
最后在應(yīng)用主類中通過加上@EnableDiscoveryClient
注解,該注解能激活Eureka中的DiscoveryClient實(shí)現(xiàn),這樣才能實(shí)現(xiàn)Controller中對(duì)服務(wù)信息的輸出。
@EnableDiscoveryClient@SpringBootApplicationpublic class Application {public static void main(String[] args) {new SpringApplicationBuilder( ComputeServiceApplication.class).web(true).run(args); } }
我們?cè)谕瓿闪朔?wù)內(nèi)容的實(shí)現(xiàn)之后,再繼續(xù)對(duì)application.properties
做一些配置工作,具體如下
spring.application.name=eureka-clientserver.port=2001eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
通過spring.application.name
屬性,我們可以指定微服務(wù)的名稱后續(xù)在調(diào)用的時(shí)候只需要使用該名稱就可以進(jìn)行服務(wù)的訪問。eureka.client.serviceUrl.defaultZone
屬性對(duì)應(yīng)服務(wù)注冊(cè)中心的配置內(nèi)容,指定服務(wù)注冊(cè)中心的位置。為了在本機(jī)上測(cè)試區(qū)分服務(wù)提供方和服務(wù)注冊(cè)中心,使用server.port
屬性設(shè)置不同的端口。
啟動(dòng)該工程后,再次訪問:http://localhost:1001/??梢匀缦聢D內(nèi)容,我們定義的服務(wù)被成功注冊(cè)了。
當(dāng)然,我們也可以通過直接訪問eureka-client
服務(wù)提供的/dc
接口來獲取當(dāng)前的服務(wù)清單,只需要訪問:http://localhost:2001/dc,我們可以得到如下輸出返回:
Services: [eureka-client]
其中,方括號(hào)中的eureka-client
就是通過Spring Cloud定義的DiscoveryClient
接口在eureka的實(shí)現(xiàn)中獲取到的所有服務(wù)清單。由于Spring Cloud在服務(wù)發(fā)現(xiàn)這一層做了非常好的抽象,所以,對(duì)于上面的程序,我們可以無縫的從eureka的服務(wù)治理體系切換到consul的服務(wù)治理體系中區(qū)。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
當(dāng)前名稱:Springcloud中如何進(jìn)行服務(wù)注冊(cè)與發(fā)現(xiàn)Eureka
當(dāng)前路徑:http://www.dlmjj.cn/article/jhgsos.html