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