微服務和分布式已經成了一種極其普遍的技術,為了跟上時代的步伐,最近開始着手學習SpringCloud,就從Eureka開始。他們倆就不做介紹了,網上的說明一堆,隨便打開一個搜索引擎輸入關鍵字都足夠了解了,而且本文主要也是記錄本人按照網上示例搭建eureka注冊中心的一個極其簡單的demo,只做記錄只用,對於學習的指導意義微乎其微,下面直接開始。
一.工具
- IDE : Intellij IDEA 2018.1
- JDK : 1.8
- Maven :3.3.9
二.創建一個maven主工程
①打開IDEA,創建一個新工程
之后選擇Maven項目
這里什么不用勾選,直接下一步
點擊Next
然后點擊Finish,創建完的project如下圖所示
三.創建一個Eureka-server module作為服務注冊中心
① 在創建的project右擊,New->Module
②選擇Spring Initializr,然后點擊Next
③輸入Module相關信息
④選中Cloud Discovery,右邊勾選Eureka Server
⑤然后一路直接到Finish創建完成。創建完后的項目結構如圖所示
項目的pom.xml如下所示
<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.norexis</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <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> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
⑦想要創建服務中心,只需要在項目的啟動類Application.java上添加一個@EnableEurekaServer注解
此外,還需要對eureka server進行一些配置,這里采用yml的形式,刪除resources下的application.properties,創建application.yml
server:
port : 8761
eureka:
instance:
hostname : localhost
client:
registerWithEureka : false
fetchRegistry : false
serviceUrl:
defaultZone : http://${eureka.instance.hostname}:${server.port}/eureka/
然后啟動Application.java即可。
至此,Eureka Server的創建完成,為了驗證效果,可以打開瀏覽器,輸入http://localhost:8761,即可看到eureka的注冊中心界面
可以看到此時Application里那里顯示No instances available,因為此時還沒有服務實例注冊,我們需要創建一個服務實例
三.創建Eureka Client服務實例
①創建Eureka Client的module過程同Eureka Server 的過程完全一樣,就不再說明。
②創建的Eureka Client需要在Application啟動類上添加注解 @EurekaDiscoveryClient
③同Server一樣,創建一個新的yml配置文件,添加如下配置
eureka:
client:
serviceUrl:
defaultZone : http://localhost:8761/eureka/
server:
port: 8762
spring:
application:
name : service-test
④之后啟動application,再次打開Eureka注冊中心,可以看到已經成功注冊服務,顯示service-test
⑤在地址欄輸入Http://localhost:8762/info?name=norexis,可以看到如下信息
到這里,一個簡單的eureka注冊中心和服務實例均已完成