一、Eureka簡介:
Eureka是由Netflix開源的基於REST的服務發現組件,不過出於某種原因2.x以后的版本就停止開源了。Eureka包括Eureka Server(Eureka服務端)和Eucreka Client(Eureka客戶端)。
詳細的介紹將在提高篇進行說明,本篇主要是幫助大家快速實現Eureka入門案例。
二、Eureka Server搭建(服務注冊中心)
2.1搭建Maven父工程
父級pom.xml文件代碼
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.qxj</groupId> <artifactId>spring-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>springcloud-eureka</name> <description>演示Eureka</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <!-- 子模塊 --> <modules> <module>springcloud-eureka-service</module> <module>consumer-movie</module> <module>provider-user</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- jdk版本 --> <java.version>1.8</java.version> <!-- SpringCloud版本號,官方最新穩定版本 --> <spring-cloud.version>Hoxton.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!--依賴管理,用於管理spring-cloud的依賴 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.2搭建EurekaService子工程,采用SpringBoot項目構建
EurekaService的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>springcloud-eureka-service</artifactId> <packaging>jar</packaging> <parent> <groupId>com.qxj</groupId> <artifactId>spring-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- eureka服務端依賴jar包 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!-- eureka安全組件jar包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies> </project>
啟動主類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
//該注解表明應用為eureka服務,有可以聯合多個服務作為集群,對外提供服務注冊以及發現功能
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
application.yml配置文件
#安全認證配置
spring:
security:
basic:
enabled: true
user:
name: user
password: password123
server:
port: 8761
#eureka客戶端連接配置
eureka:
client:
#是否向服務注冊中心注冊自己
register-with-eureka: false
#是否檢索服務
fetch-registry: false
service-url:
#注冊中心地址
defaultZone: http://user:password123@localhost:8761/eureka
Spring Cloud 2.0 以上的security默認啟用了csrf檢驗,要在eureka server端配置security的csrf檢驗為false。
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; /** * eureka開啟服務無法連接注冊中心 * spring Cloud 2.0 以上 security默認啟用了csrf檢驗,要在eurekaServer端配置security的csrf檢驗為false * @author computer * */ @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); super.configure(http); } }
三、Eureka Client搭建(Eureka客戶端)
pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>consumer-movie</artifactId> <packaging>jar</packaging> <parent> <groupId>com.qxj</groupId> <artifactId>spring-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- eureka客戶端依賴jar包 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> </project>
啟動文件
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
//該注解表明應用既作為eureka實例又為eureka client 可以發現注冊的服務
@EnableEurekaClient
public class SimpleConsumerMovieApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleConsumerMovieApplication.class, args);
}
}
配置文件application.yml:
server:
port: 7901
spring:
application:
name: consumer-movie
#eureka客戶端連接配置
eureka:
client:
service-url:
#注冊中心地址
defaultZone: http://user:password123@localhost:8761/eureka
instance:
#將ip注冊到eureka上
prefer-ip-address: true
#微服務向eureka注冊實例名${spring.cloud.client.ip-address} 表示ip地址 spring2.0以上為ip-address
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
四、項目展示
啟動流程
先啟動
springcloud-eureka-service
再啟動
consumer-movie
效果展示
出現上面的效果表示項目成功完成。
————————————————
版權聲明:本文為CSDN博主「zouhuu」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zouhuu/java/article/details/83617205