相似zookeeper,Eureka也是一個服務註冊和發現組件,是SpringCloud的一個優秀子項目,不過比較坑的是,Eureka2版本已經中止更新了。可是Eureka1版本仍是很穩定,功能足夠用,因此仍是有必要學習下。java
這裏有幾個經常使用的服務註冊與發現組件比對;算法
服務註冊與發現原理。spring
前面說過eureka是c/s模式的 server服務端就是服務註冊中心,其餘的都是client客戶端,服務端用來管理全部服務,客戶端經過註冊中心,來調用具體的服務;apache
咱們先來搭建下服務端,也就是服務註冊中心;緩存
新建 module microservice-eureka-server-2001app
pom.xml文件:負載均衡
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <parent> 6 <artifactId>wfd360-station</artifactId> 7 <groupId>com.wfd360.station</groupId> 8 <version>1.0-SNAPSHOT</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>microservice-eureka-server-2001</artifactId> 13 <dependencies> 14 <dependency> 15 <groupId>org.springframework.cloud</groupId> 16 <artifactId>spring-cloud-starter-eureka-server</artifactId> 17 </dependency> 18 <!-- 修改後當即生效,熱部署 --> 19 <dependency> 20 <groupId>org.springframework</groupId> 21 <artifactId>springloaded</artifactId> 22 </dependency> 23 <dependency> 24 <groupId>org.springframework.boot</groupId> 25 <artifactId>spring-boot-devtools</artifactId> 26 </dependency> 27 </dependencies> 28 29 </project>
主要是添加eureka依賴框架
application.yml配置:maven
1 server: 2 port: 2001 3 context-path: / 4 5 eureka: 6 instance: 7 hostname: localhost #eureka註冊中心實例名稱 8 client: 9 register-with-eureka: false #false 因爲該應用爲註冊中心,因此設置爲false,表明不向註冊中心註冊本身。 10 fetch-registry: false #false 因爲註冊中心的職責就是維護服務實例,它並不須要去檢索服務,因此也設置爲false 11 service-url: 12 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka註冊中心交互的地址,查詢服務和註冊服務用到
啓動類:ide
EurekaApplication_2001
1 package com.wfd360; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 7 /** 8 * Created by 姿式帝-博客園 on 2019/3/28. 9 * 歡迎添加筆者wx(851298348)共同探討、學習! 10 */ 11 @SpringBootApplication 12 @EnableEurekaServer 13 public class EurekaApplication_2001 { 14 public static void main(String[] args) { 15 SpringApplication.run(EurekaApplication_2001.class, args); 16 } 17 }
測試:
最基本的Eureka搭建成功!
咱們在原來的服務提供者項目 microservice-ticket-provider-1001 上面直接修改:
首先pom.xml修改,加上eureka客戶端依賴:
1 <!-- eureka 依賴--> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-cloud-starter-eureka</artifactId> 5 </dependency> 6 <dependency> 7 <groupId>org.springframework.cloud</groupId> 8 <artifactId>spring-cloud-starter-config</artifactId> 9 </dependency>
在 microservice-ticket-provider-1001 的 application.yml上加上配置
1 # eureka 註冊中心配置 2 eureka: 3 instance: 4 hostname: localhost #eureka客戶端主機實例名稱 5 appname: microservice-ticket #客戶端服務名 6 instance-id: microservice-ticket:1001 #客戶端實例名稱 7 prefer-ip-address: true #顯示IP 8 client: 9 service-url: 10 defaultZone: http://localhost:2001/eureka #把服務註冊到eureka註冊中心,要和前面服務註冊中心(microservice-eureka-server-2001)的defaultZone暴露地址一致
注意空格
而後在microservice-ticket-provider-1001 的啓動類上添加註解 @EnableEurekaClient
測試,先啓動服務註冊中心,再啓動這個服務提供者;
而後運行:http://localhost:2001/ ,結果以下圖,說明eureka服務端搞定
這裏有個問題點擊實例狀態:
報錯:
這裏報錯的緣由是沒有配置實例的相關信息
首先在服務提供者(microservice-ticket-provider-1001 )項目pom.xml里加入actuator監控依賴:
1 <!-- actuator監控引入 --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-actuator</artifactId> 5 </dependency>
而後再父項目(wfd360-station)pom.xml里加上構建插件配置,主要是爲了再構建的時候掃描子項目配置文件,解析配置用的。
1 <!-- 構建的時候 解析 src/main/resources 下的配置文件 其實就是application.yml 解析以$開頭和結尾的信息 --> 2 <build> 3 <finalName>microservice</finalName> 4 <resources> 5 <resource> 6 <directory>src/main/resources</directory> 7 <filtering>true</filtering> 8 </resource> 9 </resources> 10 <plugins> 11 <plugin> 12 <groupId>org.apache.maven.plugins</groupId> 13 <artifactId>maven-resources-plugin</artifactId> 14 <configuration> 15 <delimiters> 16 <delimit>$</delimit> 17 </delimiters> 18 </configuration> 19 </plugin> 20 </plugins> 21 </build>
在服務提供者(microservice-ticket-provider-1001 )項目application.yml加上info配置
1 # 服務提供者聯繫信息 2 info:5 version: v2 6 負責人: 姿式帝 - 博客園 7 微 信: 851298348
重啓,測試,先啓動註冊中心,在啓動的服務提供者,而後訪問實例狀態,結果以下,則配置完美!