一、簡介: Eureka是由Netflix公司開源的一款提供服務注冊和發現的產品,因此,在添加依賴時,會有NetFlix, 該組件管理各種的服務功能:注冊、 發現、熔斷、負載、降級等, Eureka采用的是基于C/S的設計架構, Eureka由兩部分組成(Server/Client):Eureka服務器和Eureka客戶端,其中服務器可以用作服務注冊服務器,而客戶端是一個Java客戶端,用來簡化與服務器的互動、作為輪詢負載均衡器,并提供服務的故障切換支持,
由上圖我們可以簡單的看到Eureka組件的架構圖,主要由三部分組成: Eureka Server:提供服務注冊和發現 Service Provider:服務提供方、將自身服務注冊到Eureka,從而使消費者可以找到 Service Consumer: 服務消費方 從Eureka獲取注冊服務串列,從而能夠消費服務, 下面演示入門案例 第一個案例: 1.創建module:注意創建的方式為:Spring Initializr創建springBoot專案(快速入門創建,也可以使用maven格式)
可以通過官網下載,也可以通過自定義的路徑(阿里云https://start.aliyun.com)下載
Group:可以是組織域名的倒寫 Artifact:專案名稱 Type:我們選擇使用maven專案 Lanagure:選用Java語言進行開發 Packaging:打包方式,可以是jar包也可以是war包 Java Version:Java版本 注意此時的專案中的報名需要修改 點擊next--選擇需要添加的依賴,首先是WEb-->spring web --> spring cloud discovery-->Eureka-->Eureka Server 中間右上角的SpringBoot版本號選擇合適的,我選擇的是2.7.13(之后還會修改)
2.修改src-->main-->resources-->application.properties:
server.port=9100
spring.application.name=eureka-server
#設定注冊中心得地址
eureka.instance.hostname=localhost
#配置自己不能想自己注冊
eureka.client.register-with-eureka=false
#不需要檢索服務 主要是維護服務
eureka.client.fetch-registry=false
#注冊中心地址
#eureka.client.service-url.defaultZone = http:${eureka.instance.hostname}:${server.port}/eureka
eureka.client.service-url.defaultZone=http://127.0.0.1:9100/eureka
3.修改啟動類Application.java
@SpringBootApplication
@EnableEurekaServer//啟用Eureka
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
添加注解開啟Eureka服務
此時便可以運行,訪問http://localhost:9100得到結果如下圖:
4.以相同的步驟創建服務提供者 spring-cloudeureka-provider的module 但在選擇依賴時的點擊next--選擇需要添加的依賴,首先是WEb-->spring web spring cloud discovery-->Eureka Discovery Client 4.1修改pom檔案,修改版本: 4.2 修改組態檔:
server.port=8083
#應用名 之后也會是注冊的服務名
spring.application.name=eureka-provider
#注冊服務的地址
server.servlet.context-path=/02-spring-cloud-provider
#配置注冊中心地址 此時為客戶端
eureka.client.service-url.defaultZone=http://localhost:9100/eureka
4.3創建控制器,模擬接收
@RestController
public class TestController {
@RequestMapping("/test")
public String test(){
return "這是demo2得provider 埠號是8083";
}
}
4.4修改啟動類,添加注解,允許啟動、
@SpringBootApplication
@EnableEurekaClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.5測驗啟動:
訪問:http://localhost:9100
創建服務成功, 訪問:localhost:8083/02-spring-cloud-provider/test 也可以正常顯示 5.創建消費者module:spring-cloud-eureka-consumer: 5.1與provider創建型別相同, 5.2修改pom檔案 5.3修改組態檔:
#埠號
server.port=8084
spring.application.name=server-consumer
server.servlet.context-path=/02-spring-cloud-consumer
#配置注冊中心地址
eureka.client.service-url.defaultZone=http://localhost:9100/eureka
5.4添加config.RestTemplateConfig類:
RestTemplate主要是說明spring支持的Http請求,符合restful風格的,他可以接收常見的Rest請求方法的模板,
使用該模板,我們能就可以訪問到其請求體資訊,
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
5.5添加controller.TestController控制器來測驗:
@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/test")
public String test(){
ResponseEntity<String> result=restTemplate.getForEntity("http://SERVER-PROVIDER/test",String.class);
return result.getBody();
}
}
5.6修改啟動類:
@SpringBootApplication
@EnableEurekaClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
5.7啟動:
5.8測驗:
訪問:http://localhost:9100
訪問:http://localhost:8084/test
第二個案例:集群: 在分布式系統中通常需要多臺server來進行服務的注冊,這樣才能保證在大容量下可以進行正常的服務,在第一個案例的基礎上繼續進行展示: 6,創建server 埠號為9200, 使用集群可能需要修改系統的組態檔:C:\Windows\System32\drivers\etc\host
6.1修改9100的組態檔(也就是第一個案例中的Server)
server.port=9100
eureka.instance.hostname=eureka9100
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka9200:9200/eureka
#禁用自我保護機制
# eureka.server.enable-self-preservation=false
6.2創建9200的module
修改其組態檔:
server.port=9200
eureka.instance.hostname=eureka9200
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka9100:9100/eureka
訪問即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/557185.html
標籤:其他
上一篇:Python中實作定時任務
下一篇:返回列表