柚子快報(bào)激活碼778899分享:云原生 eureka:
柚子快報(bào)激活碼778899分享:云原生 eureka:
基本概念:
eureka是spring自帶的服務(wù)注冊和發(fā)現(xiàn)。每個(gè)服務(wù)都必須在注冊中心注冊才能被其他服務(wù)發(fā)現(xiàn)。
在eureka中,存在三個(gè)角色:一個(gè)是注冊中心,一個(gè)是請求服務(wù),另一個(gè)是被請求服務(wù);其中,注冊中心需要作為一個(gè)單獨(dú)的服務(wù)啟動(dòng);
服務(wù)注冊與發(fā)現(xiàn)的流程:
為什么需要eureka?
在微服務(wù)模式下,我們將一個(gè)單體應(yīng)用切分成多個(gè)獨(dú)立的服務(wù)單元,而每一個(gè)服務(wù)單元又被部署在不同的機(jī)器或端口上。但要完成一個(gè)完整的業(yè)務(wù)請求,需要調(diào)用多個(gè)微服務(wù)的能力來實(shí)現(xiàn),怎么在這樣的模式下找到我們需要調(diào)用的微服務(wù)在哪個(gè)機(jī)器的哪個(gè)端口上就成了eureka解決的問題。你可能會(huì)說,配置IP+端口地址不就好了嗎?但是當(dāng)服務(wù)器宕機(jī)時(shí),服務(wù)被遷移到其他機(jī)器了,難道要重新配置IP和端口嗎?如果某個(gè)服務(wù)的流量很大,需要進(jìn)行緊急擴(kuò)容,這個(gè)時(shí)候又該怎么確定應(yīng)該訪問哪臺(tái)機(jī)器上的服務(wù)呢?沒錯(cuò),eureka還可以自動(dòng)實(shí)現(xiàn)負(fù)載均衡,當(dāng)你的服務(wù)需要訪問其他微服務(wù)的時(shí)候,你只要拿著服務(wù)的名稱到eureka查找,eureka就能夠給你一個(gè)合適的服務(wù)地址,接下來只需要安心地去調(diào)用就行了。
實(shí)踐:
一、創(chuàng)建一個(gè)新的Spring boot項(xiàng)目,添加以下依賴:
? ?
? ?
?
? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ?
二、創(chuàng)建啟動(dòng)類
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
? ?public static void main(String[] args) {
? ? ? ?SpringApplication.run(EurekaServerApplication.class, args);
? }
}
三、在application.yml中配置屬性
server:
port: 8761 #注冊中心啟動(dòng)端口
eureka:
client:
? registerWithEureka: false # 不注冊自己
? fetchRegistry: false
啟動(dòng)項(xiàng)目后,打開瀏覽器訪問 http://localhost:8761,就可以看到 Eureka 面板
四、客戶端注冊到eureka
要讓自己的服務(wù)能夠被發(fā)現(xiàn),那么就需要在項(xiàng)目中添加依賴:
? ?
? ?
在啟動(dòng)類上添加@EnableDiscoveryClient:
@SpringBootApplication
@EnableDiscoveryClient
public class StartMain {
?
? ?public static void main(String[] args) {
? ? ? SpringApplication.run(StartMain.class, args);
? }
?
}
在配置文件中添加注冊中心地址:
spring:
application:
? name: spring-study
server:
port: 0 #任意端口啟動(dòng)
eureka:
client:
? serviceUrl:
? ? defaultZone: ${EUREKA_URI:http://localhost:8080/eureka} #注冊到eureka
instance:
? preferIpAddress: true
? appname: test-register
啟動(dòng)項(xiàng)目,就能看到TEST-REGISTER服務(wù)被注冊到eureka
五、消費(fèi)者發(fā)現(xiàn)服務(wù)
新建一個(gè)spring項(xiàng)目,在pom文件中添加依賴:
? ?
? ? ?
? ? ?
? ?
? ?
? ? ?
? ? ?
? ? ?
? ?
? ?
? ?
? ? ?
? ? ?
? ?
配置文件不注冊到eureka:
spring:
application:
? name: customer
server:
port: 0
eureka:
client:
? serviceUrl:
? ? register-with-eureka: false
? ? defaultZone: ${EUREKA_URI:http://localhost:8080/eureka}
啟動(dòng)類上添加:
@SpringBootApplication
@EnableFeignClients
public class CustomerApplication {
?
? ?public static void main(String[] args) {
? ? ? SpringApplication.run(CustomerApplication.class, args);
? }
?
}
創(chuàng)建feign接口:
@FeignClient(name = "spring-study") //name為注冊到eureka的服務(wù)名稱
public interface TestRegisterFeign {
? ?@GetMapping("/test/hello")//spring-study服務(wù)提供的接口
? ?String getHello();
}
創(chuàng)建測試接口:
@RequestMapping("/test")
@RestController
public class Test {
? ?@Autowired
? ?TestRegisterFeign testRegisterFeign;
?
? ?@GetMapping("/hello")
? ?public String test() {
? ? ? ?return testRegisterFeign.getHello();
? }
}
瀏覽器中訪問接口看到Hello world,成功發(fā)現(xiàn)服務(wù):
柚子快報(bào)激活碼778899分享:云原生 eureka:
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。