文章目錄
- 一、Eureka Server的安裝與配置
- 1、創建Spring Boot項目
- 2、添加依賴
- 3、配置Eureka Server
- 4、啟用Eureka Server
- 5、啟動并訪問Dashboard
- 二、Eureka Client的配置(服務注冊)
- 1、添加客戶端依賴
- 2、配置客戶端
- 3、啟用服務發現
- 4、啟動服務
- 三、服務發現與調用
- 1、使用RestTemplate調用服務
- 2、使用FeignClient(聲明式調用)
- 四、高可用配置(Eureka集群)
- 1、配置多個Eureka Server節點
- 2、客戶端注冊到集群
- 五、常見問題與調優
- 1、服務無法注冊
- 2、調整心跳與剔除時間
- 3、關閉自我保護模式(開發環境)
- 六、注意事項
Eureka是Netflix開源的服務發現組件,用于微服務架構中的服務注冊與發現。以下是詳細的安裝和使用步驟:
一、Eureka Server的安裝與配置
1、創建Spring Boot項目
- 使用Spring Initializr創建項目,選擇Spring Boot版本(如2.5.x)并添加依賴:
- Spring Web(構建Web應用)
- Eureka Server(服務端支持)
2、添加依賴
<!-- Maven依賴 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3、配置Eureka Server
- 在application.yml中配置:
server:port: 8761 # 默認端口eureka:client:register-with-eureka: false # 不注冊自己fetch-registry: false # 不拉取注冊表service-url:defaultZone: http://localhost:8761/eureka # 服務地址
4、啟用Eureka Server
- 在啟動類添加注解:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}
5、啟動并訪問Dashboard
- 訪問 http://localhost:8761 查看Eureka管理界面。
二、Eureka Client的配置(服務注冊)
1、添加客戶端依賴
<!-- Maven依賴 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、配置客戶端
- 在application.yml中指定Eureka Server地址:
spring:application:name: user-service # 服務名稱eureka:client:service-url:defaultZone: http://localhost:8761/eureka
3、啟用服務發現
- 在啟動類添加注解(可選,Spring Boot自動激活):
@SpringBootApplication
@EnableEurekaClient // 或 @EnableDiscoveryClient
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}
4、啟動服務
- 客戶端啟動后,在Eureka Dashboard中查看注冊狀態。
三、服務發現與調用
1、使用RestTemplate調用服務
- 啟用負載均衡:
@Bean
@LoadBalanced // 通過服務名解析地址
public RestTemplate restTemplate() {return new RestTemplate();
}
- 調用其他服務:
String serviceUrl = "http://user-service/getUser/1";
ResponseEntity<String> response = restTemplate.getForEntity(serviceUrl, String.class);
2、使用FeignClient(聲明式調用)
- 添加依賴:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 啟用Feign:
@EnableFeignClients
@SpringBootApplication
public class OrderServiceApplication { ... }
- 定義接口:
@FeignClient(name = "user-service")
public interface UserServiceClient {@GetMapping("/getUser/{id}")String getUser(@PathVariable("id") Long id);
}
四、高可用配置(Eureka集群)
1、配置多個Eureka Server節點
- 修改每個節點的application.yml,相互注冊:
# 節點1配置
eureka:client:service-url:defaultZone: http://node2:8762/eureka
2、客戶端注冊到集群
- 客戶端配置多個Server地址:
eureka:client:service-url:defaultZone: http://node1:8761/eureka, http://node2:8762/eureka
五、常見問題與調優
1、服務無法注冊
- 檢查客戶端配置的defaultZone是否正確。
- 確保Eureka Server已啟動且網絡可達。
2、調整心跳與剔除時間
eureka:instance:lease-renewal-interval-in-seconds: 30 # 客戶端心跳間隔(默認30秒)lease-expiration-duration-in-seconds: 90 # 服務端剔除時間(默認90秒)
3、關閉自我保護模式(開發環境)
eureka:server:enable-self-preservation: false # 關閉自我保護
六、注意事項
- 版本兼容性:確保Spring Cloud與Spring Boot版本匹配(參考官方版本對照表)。
- 生產環境建議:啟用安全認證、配置集群以提高可用性。
- 替代方案:Eureka已進入維護模式,可考慮Consul、Nacos等現代服務發現工具。
通過以上步驟,您可以在微服務架構中快速集成Eureka,實現服務的注冊、發現與調用。