SpringCloud學習之路-Eureka(服務注冊與發現)
1.使用IDEA搭建Maven主工程
首先創建一個主Maven工程,在其pom文件引入依賴,spring Boot版本為2.0.3.RELEASE,Spring Cloud版本為Finchley.RELEASE。這個pom文件作為父pom文件,起到依賴版本控制的作用,其他module工程繼承該pom。
<?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.tzc.ljq</groupId>
<artifactId>eureka-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<modules>
<module>eureka-server</module>
<module>eureka-client</module>
</modules>
<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.RELEASE</spring-cloud.version>
</properties>
<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>
注意:父pom的打包方式為pom,modules里是子項目名
2.創建服務注冊中心Eureka Server
點擊選中主工程名,然后右鍵新建module,新建springboot項目,一直往下,選擇導入eureka-server
eureka-server的pom文件
?
<?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.tzc.ljq</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>com.tzc.ljq</groupId>
<artifactId>eureka-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
?
啟動服務注冊中心
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
其中的@enableEurekaServer注解表示啟動服務注冊中心
然后在application.yml中設置服務端口,應用名,注冊地址等
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: eureka-server
通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server
配置完成后,啟動項目,地址欄輸入 http://localhost:8761/ 服務注冊中心是有界面的
服務中心就算啟動了
可以看到當前沒有服務被發現,那我們就創建一個服務吧
3.創建服務提供者Eureka Client
點擊選中主工程名,然后右鍵新建module,新建springboot項目,一直往下,選擇導入eureka-client
eureka-client的pom文件
<?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.tzc.ljq</groupId>
<artifactId>eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.tzc.ljq</groupId>
<artifactId>eureka-parent</artifactId>
<version>1.0-SNAPSHOT</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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
通過注解@EnableEurekaClient 表明自己是一個eurekaclient.
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
然后在application.yml中設置服務端口,應用名,注冊地址等
server:
port: 8762
spring:
application:
name: service-hi
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring.application.name這個很重要,這在以后的服務與服務之間相互調用一般都是根據這個name
啟動eureka client工程,會自動到服務注冊中心注冊
打開服務注冊中心eureka server的地址 localhost:8761
可以看到我們的服務已經注冊到注冊中心了
當我們在本地調試基于Eureka的程序時,基本都會遇到一個問題,就是服務注冊中心的信息面板中出現類似上面的紅色警告信息,實際上,該警告就是觸發了Eureka的自我保護機制
當服務注冊到Eureka Server之后,會維護一個心跳連接,來維持服務與Eureka之間的連接,Eureka在運行期間,會統計心跳失敗的比例在15分鐘內是否低于85%,如果出現低于的情況,Eureka Server會將當前的實例注冊信息保護起來,讓這些實例不會過期,盡可能的保護這些信息,但是,在這段保護期內實例若出現問題,或我手動關閉,那么客戶端就很容易拿到實際已經不存在的服務實例,會出現調用失敗的情況,所以客戶端必須要有容錯機制,比如可以使用請求重試,斷路器等機制,這些后面會說到
由于本地調試很容易觸發注冊中心的保護機制,這會使得注冊中心維護的服務實例不準確,所以我們在本地開發的時候,可以使用eureka.server.enable-self-preservation=false參數來關閉保護機制,以確保注冊中心可以將不可用的實例正確剔除
下來我們在eureka-server的applicaiton.yml里加上這段代碼
server:
enable-self-preservation: false
重啟erueka-server,在瀏覽器中打開localhost:8761
紅字顯示自動保護機制已經關閉
未完待續。。
智能推薦
SpringCloud(二):服務注冊與發現——Eureka
服務注冊與發現——Eureka 是什么? Eureka架構圖 Eureka兩個組件 Server Client 構建Eureka Server服務 構建Eureka Client 在provider中模擬發現服務 actutor微服務信息完善 Eureka的自我保護 Eureka集群配置 是什么? 是Netflix的一個子模塊,也是核心模塊之一,基于REST的服務 用于云端...
springcloud eureka服務注冊與發現
本節示例只提供服務注冊,消費服務在后面的章節中 Eureka的原理就不介紹了,直接寫代碼。 編寫Eureka Service 新建一個spring boot Maven項目,添加如下依賴 啟動類添加@EnableEurekaServer注解,聲明是一個Eureka Server。 配置文件 eureka.client.registerWithEureka 表示是否將自己注冊到Eureka Serv...
SpringCloud:服務注冊與發現(Eureka)
1、Eureka簡介 Eureka是一個服務注冊與發現組件,主要有兩部分組成:注冊中心(Eureka-Server)和服務提供端(Eureka-Client),Eureka-Server通過一個注冊表維護了所有向Eureka-Server注冊的Eureka-Client的主機地址和端口等信息,同時Eureka-Client可以向Eureka-Server獲取該注冊表,并默認每30s向注冊中心發送一...
springcloud Eureka 服務注冊與發現
1、Eureka是什么 Eureka是Netflix的一個子模塊,也是核心模塊之一。 Eureka是一個基于REST的服務,用于定位服務,以實現云端中間層服務發現和故障轉移。 服務注冊與發現對于微服務架構來說是非常重要的,有了服務發現與注冊,只需要使用服務的標識符,就可以訪問到服務,而不需要修改服務調用的配置文件了。 功能類似于dubbo的注冊中心,比如Zookeeper。 2、Eureka基本架...
SpringCloud_Eureka服務注冊與發現
文章目錄 基礎知識 服務治理 服務注冊于發現 組件 Eureka Server Eureka CLient 單機Eureka構建步驟 Eureka Server構建 Eureka Client構建 集群Eureka構建 修改Eureka Server 集群的yaml 修改Eureka Client 微服務模塊的yaml 如果微服務模塊為集群,通過在eureka上注冊過的微服務名稱調用 使用@Loa...
猜你喜歡
SpringCloud之Eureka服務注冊與發現
SpringCloud之Eureka服務注冊與發現 1、Eureka基礎知識 什么是服務治理 ? Spring Cloud封裝了Netflix公司開發的Eureka模塊來實現服務治理 ? 在傳統的rpc遠程調用框架中,管理每個服務與服務之間依賴關系比較復雜,管理比較復雜,所以需要使用服務治理,管理服務于服務之間依賴關系,可以實現服務調用、負載均衡、容錯等,實現服務發現與注冊。 什么是服務注冊與發現...
SpringCloud: 服務的注冊與發現(Eureka)
一、spring cloud簡介 spring cloud 為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等。它運行環境簡單,可以在開發人員的電腦上跑。另外說明spring cloud是基于springboot的,所以需要開發中對springboot有一定的了解。 二、創建服務注冊中心 在這里,我們需要用的的組件...
SpringCloud之——Eureka服務注冊與發現
SpringCloud之——Eureka服務注冊與發現 Eureka作為SpringCloud全家桶的注冊中心,最常說到的問題就是他與zookeeper的區別是什么,我們都知道ACP(可用性、一致性、分區容錯性),那么P是必須要保證的,而三者又不可能同時滿足,那么在設計的時候就看各自產品的側重點了,Eureka和Zookeeper兩個都能夠作為注冊中心使用,他們的主要區別是...
Springcloud 服務注冊與發現 Eureka
在Springcloud項目中,服務提供者對外提供服務,服務消費者進行消費服務,如果微服務很多,就需要一個服務管理中心去統一管理服務,而消費者在調用服務時就可以去這個管理中心中去查找需要調用的服務進行調用。 Eureka在Springcloud中就作為最常用的服務注冊與發現的組件,下面主要記錄一下Eureka的基本原理與使用方法。 Eureka是什么 Eureka是Netflix的核心模塊之一,它...