02.27 SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建

Eureka概述

服務啟動時會生成服務的基本信息對象InstanceInfo,然後在啟動時會register到服務治理中心。

註冊完成後會從服務治理中心拉取所有的服務信息,緩存在本地。之後服務會被30s(可配置)發送一個心跳信息,續約服務。

如果服務治理中心在90s內沒有收到一個服務的續約,就會認為服務已經掛了,會把服務註冊信息刪掉。

服務停止前,服務會主動發送一個停止請求,服務治理中心會刪除這個服務的信息。

如果Eureka Server收到的心跳包不足正常值的85%(可配置)就會進入自我保護模式,在這種模式下,Eureka Server不會刪除任何服務信息。

Eureka架構圖

SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建

  • Registery:表示服務向註冊中心註冊。
  • Renew:表示服務向註冊中心發送心跳,表示該服務還活著,註冊中心不能刪除改服務。
  • Cancel:表示註冊中心能刪除該服務。
  • Get Registery:表示該服務重新註冊。
  • Replicate:表示註冊中心之間相互註冊。
  • Remote Call:表示遠程調用。

搭建Eureka環境

(1) 創建SpringBoot項目

SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


(2) 刪除多餘的目錄(src等目錄,因為創建maven的聚合工程需要)只剩下pom文件,名字叫做eureka-father作為聚合工程的父級工程,如圖


SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


pom文件的內容如下:


<code><project>        <description>SpringBoot-Eureka環境搭建多模塊構建示例/<description>    <modelversion>4.0.0/<modelversion>    <name>eureka-father/<name>    <packaging>pom/<packaging>        <groupid>com.org.ldc/<groupid>    <artifactid>eureka-father/<artifactid>    <version>1.0.0.RELEASE/<version>        <parent>        <groupid>org.springframework.boot/<groupid>        <artifactid>spring-boot-starter-parent/<artifactid>        <version>2.0.2.RELEASE/<version>    /<parent>        <modules>        <module>eureka3000/<module>    /<modules>        <dependencymanagement>        <dependencies>            <dependency>                <groupid>com.org.ldc/<groupid>                <artifactid>eureka3000/<artifactid>                <version>0.0.1-SNAPSHOT/<version>            /<dependency>        /<dependencies>    /<dependencymanagement>/<project>/<code>

(3) 創建子模塊eureka3000,方法如圖所示

SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


子模塊的pom文件內容如下:


<code><project>    <modelversion>4.0.0/<modelversion>    <groupid>com.org.ldc/<groupid>    <artifactid>eureka3000/<artifactid>    <version>0.0.1-SNAPSHOT/<version>    <name>eureka3000/<name>    <description>Demo project for Spring Boot/<description>    <properties>        <java.version>1.8/<java.version>    /<properties>        <parent>        <groupid>com.org.ldc/<groupid>        <artifactid>eureka-father/<artifactid>        <version>1.0.0.RELEASE/<version>    /<parent>        <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-web/<artifactid>        /<dependency>    /<dependencies>    <dependencymanagement>        <dependencies>            <dependency>                <groupid>org.springframework.cloud/<groupid>                <artifactid>spring-cloud-dependencies/<artifactid>                <version>Finchley.SR2/<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>

子模塊的啟動類如下,這裡需要注意的就是要在類上加上@EnableEurekaServer註解。

<code>package com.org.ldc.eureka3000;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class Eureka3000Application {    public static void main(String[] args) {        SpringApplication.run(Eureka3000Application.class, args);    }}/<code>

子模塊的application.properties文件的內容如下:

<code>server:  port: 3000eureka:  server:    enable-self-preservation: false  #關閉自我保護機制    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)  instance:    hostname: localhost  client:    registerWithEureka: false #不把自己作為一個客戶端註冊到自己身上    fetchRegistry: false  #不需要從服務端獲取註冊信息(因為在這裡自己就是服務端,而且已經禁用自己註冊了)    serviceUrl:      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/<code>

以上創建的表示一個eureka節點,啟動子模塊的啟動類,然後瀏覽器訪問http://localhost:3000,就會出現如下頁面,紅色框內一開始是沒有內容的,因為我這是搭建的有三個節點eureka和有註冊服務的服務工程,所以紅色框內會出現內容,所以搭建不要糾結這個,只要出現這個界面,就說明eureka環境搭建好了,但是使單節點的,不是集群的


SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


(4) 接著創建服務模塊,創建過程和創建子模塊一樣,不再贅述,名字叫做user5000,如圖eureka3001、eureka3001是我創建的另外的兩個註冊中心節點


SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


服務模塊的pom文件內容如下:


<code><project>    <modelversion>4.0.0/<modelversion>    <groupid>com.org.ldc/<groupid>    <artifactid>user5000/<artifactid>    <version>0.0.1-SNAPSHOT/<version>    <name>user5000/<name>    <description>Demo project for Spring Boot/<description>    <properties>        <java.version>1.8/<java.version>    /<properties>        <parent>        <groupid>com.org.ldc/<groupid>        <artifactid>eureka-father/<artifactid>        <version>1.0.0.RELEASE/<version>    /<parent>    <dependencies>        <dependency>            <groupid>org.springframework.cloud/<groupid>            <artifactid>spring-cloud-starter-netflix-eureka-client/<artifactid>        /<dependency>        <dependency>            <groupid>org.springframework.boot/<groupid>            <artifactid>spring-boot-starter-web/<artifactid>        /<dependency>    /<dependencies>    <dependencymanagement>        <dependencies>            <dependency>                <groupid>org.springframework.cloud/<groupid>                <artifactid>spring-cloud-dependencies/<artifactid>                <version>Finchley.SR2/<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>

application.yml文件內容如下:

<code>server:  port: 5000eureka:  client:    serviceUrl:        defaultZone: http://localhost:3000/eureka/  #eureka服務端提供的註冊地址 參考服務端配置的這個路徑  instance:    instance-id: user-1 #此實例註冊到eureka服務端的唯一的實例ID     prefer-ip-address: true #是否顯示IP地址    leaseRenewalIntervalInSeconds: 10 #eureka客戶需要多長時間發送心跳給eureka服務器,表明它仍然活著,默認為30 秒 (與下面配置的單位都是秒)    leaseExpirationDurationInSeconds: 30 #Eureka服務器在接收到實例的最後一次發出的心跳後,需要等待多久才可以將此實例刪除,默認為90秒spring:  application:    name: server-user #此實例註冊到eureka服務端的name /<code>

啟動類如下:需要加上@EnableEurekaClient 註解

<code>package com.org.ldc.user5000;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClient //開啟eureka客戶端public class User5000Application {    public static void main(String[] args) {        SpringApplication.run(User5000Application.class, args);    }}/<code>

(4) 最後測試先啟動註冊中心的啟動類,然後啟動服務模塊的啟動類,最後訪問localhost:3000出現如下圖說明搭建成功。

SpringCloud之Eureka註冊中心環境搭建(單節點),新手都能搭建


END

原文鏈接:https://mp.weixin.qq.com/s/fhnSEAhHLJkiS9vqTloqlg


分享到:


相關文章: