Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka

本節將總新建一個Maven多模塊項目開始從頭新建一個項目,並完成基於SpringCloud-Eureka的服務註冊與發現基礎的演示,本次演示試用的是IntellJ IDEA開發環境。

使用Maven構建多模塊項目

使用IntellJ IDEA新建一個Maven項目,JDK使用1.8,我比較喜歡手動操作,所以先新建一個空的Maven項目,groupId是net.renfei,artifactId是cloud,version是1.0.0,這三個就使用你自己的公司名字和項目名就可以:


Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka


Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka

然後我們會得到一個pom.xml,這個以後就是我們項目的根pom文件了,下一步改造這個pom文件,先看看目前SpringCloud的最新版本是多少,可以到官網查看:https://spring.io/projects/spring-cloud,截止這篇教程時最新的穩定版是「Hoxton SR1」,這裡需要提一句,SpringCloud和SpringBoot是有版本關係的,不能自己瞎選版本,目前「Hoxton.SR1」版本對應的SpringBoot版本是「

2.2.x」,有的朋友可能沒注意,在SpringCloud官網下面寫了“Release train Spring Boot compatibility”的關係對照表,所以我們的根pom文件應該去繼承SpringBoot最新的的「2.2.4.RELEASE」版本,pom文件這樣寫:

<code><project>    <modelversion>4.0.0/<modelversion>    <groupid>net.renfei/<groupid>    <artifactid>cloud/<artifactid>    <version>1.0.0/<version>    <packaging>pom/<packaging>    <name>SpringCloudDemo/<name>    <description>Demo project for Spring Cloud By RENFEI.NET/<description>    <properties>        <java.version>1.8/<java.version>        <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>        <spring-cloud.version>Hoxton.SR1/<spring-cloud.version>    /<properties>    <parent>        <groupid>org.springframework.boot/<groupid>        <artifactid>spring-boot-starter-parent/<artifactid>        <version>2.2.4.RELEASE/<version>        <relativepath>    /<parent>    <dependencies>        <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>/<project>/<code>

新建一個子模塊:Eureka作為服務發現服務器

我們先刪除新建項目時為我們新建的「src」文件夾,因為我們使用的是多模塊,所以項目根下的這個「src」文件夾就沒用了,刪除以後右擊項目名,選擇新建一個模塊,名字叫eureka的空白Maven項目,這時候你會得到一個新的pom文件,這個是子模塊自己的pom文件,他繼承了我們根pom文件:


Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka


Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka

Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka

服務發現與註冊Eureka-Server服務端

「eureka」子模塊將作為我們服務註冊發現的服務端,我們先修改pom文件,他應該依賴「spring-cloud-starter-netflix-eureka-server」:

<code><project>    <parent>        <artifactid>cloud/<artifactid>        <groupid>net.renfei/<groupid>        <version>1.0.0/<version>    /<parent>    <modelversion>4.0.0/<modelversion>    <groupid>net.renfei/<groupid>    <artifactid>eureka/<artifactid>    <version>1.0.0/<version>    <name>eureka/<name>    <description>springcloud-eureka-server/<description>    <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>    <build>        <plugins>            <plugin>                <groupid>org.springframework.boot/<groupid>                <artifactid>spring-boot-maven-plugin/<artifactid>            /<plugin>        /<plugins>    /<build>/<project>/<code>

新建程序啟動入口EurekaServerApplication和配置文件application.yml

我們在子項目的eureka/src/main/java右擊,新建一個包package:net.renfei.eureka,然後在包裡新建一個class,EurekaServerApplication作為子模塊的啟動入口:

<code>package net.renfei.eureka;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaServerApplication.class, args);    }}/<code>

是不是跟SpringBoot非常像?其實SpringCloud就是一個一個SpringBoot組合起來的,這裡只需要加個@EnableEurekaServer註解就可以了,本教程是入門基礎教程,相關注解先不做討論,放在未來進階教程裡再詳細討論,然後我們在子模塊的resources文件夾裡添加配置文件application.yml:

<code>server:  port: 8761eureka:  instance:    # 設置eureka的主機地址    hostname: localhost  client:    #表示是否將自己註冊到Eureka Server,默認為true。由於當前應用就是Eureka Server,故而設置為false    register-with-eureka: false    #表示是否從Eureka Server獲取註冊信息,默認為true。因為這是一個單點的Eureka Server,不需要同步其他的Eureka Server節點的數據,故而設置為false    fetch-registry: false    service-url:      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/spring:  application:    # 服務模塊名稱    name: eureka/<code>

配置文件裡配置了子模塊監聽的是 8761端口,並給這個模塊起了一個名字在spring.application.name=eureka,並且register-with-eureka: false不向自己註冊自己。

點擊EurekaServerApplication上面的小三角運行,就可以將註冊中心跑起來了,然後使用瀏覽器訪問http://localhost:8761/ 看到有eureka頁面,註冊中心搭建就完成了!


Spring Cloud 微服務入門教程(二):服務註冊與發現-Eureka


分享到:


相關文章: