Spring Cloud之路:(二) 服務的註冊與發現(Eureka)
阿新 • • 發佈:2019-01-13
Spring Cloud之路:(二) 服務的註冊與發現(Eureka)
eureka是一個服務註冊和發現模組。
一、建立服務註冊中心 (eureka server)
1、啟動一個服務註冊中心,只需要一個註解@EnableEurekaServer,這個註解需要在springboot工程的啟動application類上加
@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaserverApplication.class, args);
}
}
2、eureka是一個高可用的元件,它沒有後端快取,每一個例項註冊之後需要向註冊中心傳送心跳(因此可以在記憶體中完成),在預設情況下erureka server也是一個eureka client ,必須要指定一個 server。eureka server的配置檔案appication.properties:
server.port = 8761
eureka.instance.hostname = localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client .service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/
通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.
3、eureka server 是有介面的,啟動工程,開啟瀏覽器訪問: http://localhost:8761
二、建立一個服務提供者 (eureka client)
當client向server註冊時,它會提供一些元資料,例如主機和埠,URL,主頁等。Eureka server 從每個client例項接收心跳訊息。 如果心跳超時,則通常將該例項從註冊server中刪除。
1、通過註解@EnableEurekaClient 表明自己是一個eurekaclient.
@SpringBootApplication
@EnableEurekaClient
@RestController
public class EurekaclientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaclientApplication.class, args);
}
@Value("${server.port}")
String port;
@RequestMapping("/hi")
public String home(@RequestParam String name) {
return "hi "+name+",i am from port:" +port;
}
}
2、僅僅@EnableEurekaClient是不夠的,還需要在配置檔案中註明自己的服務註冊中心的地址,application.properties配置檔案如下:
eureka.client.service-url.default-zone=http://localhost:8761/eureka/
server.port=8762
spring.application.name=eurekaclient
需要指明spring.application.name,這個很重要,這在以後的服務與服務之間相互呼叫一般都是根據這個name 。
3、啟動工程,開啟http://localhost:8761 ,即eureka server 的網址:
你會發現一個服務已經註冊在服務中了,服務名為SERVICE-HI ,埠為7862
這時開啟 http://localhost:8762/hi?name=forezp ,你會在瀏覽器上看到 :
hi forezp,i am from port:8762