springcloud微服務(wù)之Eureka配置詳解
Eureka注冊中心/服務(wù)發(fā)現(xiàn)框架
Eureka是Netflix開發(fā)的服務(wù)發(fā)現(xiàn)框架,本身是一個基于REST的服務(wù),主要用于定位運行在AWS域中的中間層服務(wù),以達(dá)到負(fù)載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的。SpringCloud將它集成在其子項目spring-cloud-netflix中,以實現(xiàn)SpringCloud的服務(wù)發(fā)現(xiàn)功能。
Eureka包含兩個組件:Eureka Server和Eureka Client。
Eureka Server提供服務(wù)注冊服務(wù),各個節(jié)點啟動后,會在Eureka Server中進(jìn)行注冊,這樣EurekaServer中的服務(wù)注冊表中將會存儲所有可用服務(wù)節(jié)點的信息,服務(wù)節(jié)點的信息可以在界面中直觀的看到。
Eureka Client是一個java客戶端,用于簡化與Eureka Server的交互,客戶端同時也就是一個內(nèi)置的、使用輪詢(round-robin)負(fù)載算法的負(fù)載均衡器。
在應(yīng)用啟動后,將會向Eureka Server發(fā)送心跳,默認(rèn)周期為30秒,如果Eureka Server在多個心跳周期內(nèi)沒有接收到某個節(jié)點的心跳,Eureka Server將會從服務(wù)注冊表中把這個服務(wù)節(jié)點移除(默認(rèn)90秒)。
Eureka Server之間通過復(fù)制的方式完成數(shù)據(jù)的同步,Eureka還提供了客戶端緩存機(jī)制,即使所有的Eureka Server都掛掉,客戶端依然可以利用緩存中的信息消費其他服務(wù)的API。綜上,Eureka通過心跳檢查、客戶端緩存等機(jī)制,確保了系統(tǒng)的高可用性、靈活性和可伸縮性。
如何使用構(gòu)建 Eureka Server ?
加入依賴(此處以Maven為例)
<!-- 1. 繼承 spring-boot-starter-parent ,如果是聚合工程可以寫到父工程中-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 2.加入Eureka 服務(wù)端依賴 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
創(chuàng)建Eureka Server 主運行類
package com.liang.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer // 加上啟用Eureka服務(wù)注解(標(biāo)記其為Eureka服務(wù))
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
Eureka Server 會帶有一個Web主頁,默認(rèn)訪問地址:http://localhost:8761/。
Eureka服務(wù) 沒有后臺存儲,但是注冊表中的所有服務(wù)實例都必須發(fā)送心跳信號以使其注冊保持最新(因此可以在內(nèi)存中完成)??蛻舳诉€具有Eureka注冊的內(nèi)存緩存(因此,對于每個對服務(wù)的請求,它們都不必進(jìn)入注冊表)。
默認(rèn)情況下,每個Eureka服務(wù)端也是有Eureka客戶端,并且需要(至少一個)服務(wù)URL來定位。如果您不提供該服務(wù),則該服務(wù)將不斷運行,所輸出的錯誤日志,也許對你有所干擾(如果你端口不是8761并且配置了另外的serviceUrl則會不斷產(chǎn)生這樣的錯誤日志,如果按默認(rèn)配置只會報一次這樣的錯誤,隨后待自身啟動后便可連接自身成功)。
單機(jī)配置
application.yml(單個Eureka服務(wù)配置),如下:
server:
port: 8761 # 端口
spring:
application:
name: eureka-server # 應(yīng)用名稱,會在Eureka中顯示
eureka:
client:
register-with-eureka: false # 是否注冊自己的信息到EurekaServer,默認(rèn)是true
fetch-registry: false # 是否拉取其它服務(wù)的信息,默認(rèn)是true
service-url: # EurekaServer的地址,現(xiàn)在是自己的地址,如果是集群,需要加上其它Server的地址。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
請注意serviceUrl,指向與本地實例相同的主機(jī)。
集群配置
application.yml(兩個Eureka服務(wù)配置),如下
--- server: port: 6001 spring: profiles: eureka6001 eureka: instance: hostname: eureka6001.com client: register-with-eureka: false # 是否注冊自己的信息到EurekaServer,默認(rèn)是true fetch-registry: false # 是否拉取其它服務(wù)的信息,默認(rèn)是true service-url: # EurekaServer的地址,現(xiàn)在是自己的地址,如果是集群,需要加上其它Server的地址。 defaultZone: http://eureka6002:6002/eureka --- server: port: 6002 spring: profiles: eureka6002 eureka: instance: hostname: eureka6002.com client: register-with-eureka: false # 是否注冊自己的信息到EurekaServer,默認(rèn)是true fetch-registry: false # 是否拉取其它服務(wù)的信息,默認(rèn)是true service-url: # EurekaServer的地址,現(xiàn)在是自己的地址,如果是集群,需要加上其它Server的地址。 defaultZone: http://eureka6001:6001/eureka
在前面的示例中,我們有一個YAML文件,通過在不同的Spring配置文件中運行該服務(wù)器,可以在兩個主機(jī)(eureka6001和eureka6002)上運行同一Eureka服務(wù)。您可以使用此配置通過操作/etc/hosts解析主機(jī)名來測試單個主機(jī)上的對等感知(在生產(chǎn)環(huán)境中這樣做沒有太大價值)。實際上,eureka.instance.hostname如果您在知道其主機(jī)名的計算機(jī)上運行(默認(rèn)情況下,使用的是該機(jī)器的主機(jī)名)。Eureka springcloud 應(yīng)用實例 www.1b23.com
您可以將多個Eureka服務(wù)添加到集群,并且只要它們均通訊的連接,它們就可以在彼此之間同步注冊。如果在物理上分開(在一個數(shù)據(jù)中心內(nèi)或在多個數(shù)據(jù)中心之間),只要它們都直接相互連接,它們就可以在彼此之間同步注冊。
Eureka Client 連接Eureka Server 集群配置
application.yml(兩個Eureka服務(wù)連接地址都需要加進(jìn)來,英文逗號分隔),如下
eureka: client: serviceUrl: defaultZone: http://eureka6001.com/eureka/,http://eureka6002.com
到此這篇關(guān)于springcloud微服務(wù)之Eureka配置詳解的文章就介紹到這了,更多相關(guān)springcloud Eureka配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java HttpClient傳輸json格式的參數(shù)實例講解
這篇文章主要介紹了java HttpClient傳輸json格式的參數(shù)實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
JSP 開發(fā)之 releaseSession的實例詳解
這篇文章主要介紹了JSP 開發(fā)之 releaseSession的實例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07
SpringBoot實現(xiàn)elasticsearch索引操作的代碼示例
這篇文章主要給大家介紹了SpringBoot如何實現(xiàn)elasticsearch 索引操作,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以參考閱讀下2023-07-07
easycode配置成mybatis-plus模板的實現(xiàn)方法
本文主要介紹了easycode配置成mybatis-plus模板的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Spring常用注解 使用注解來構(gòu)造IoC容器的方法
下面小編就為大家分享一篇Spring常用注解 使用注解來構(gòu)造IoC容器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
基于RecyclerChart的KLine的繪制Scale詳解
這篇文章主要為大家詳細(xì)介紹了基于RecyclerChart實現(xiàn)KLine繪制Scale的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題
當(dāng)進(jìn)行業(yè)務(wù)操作時,訂單發(fā)生異常 ,進(jìn)行了回滾操作,因為在不同的數(shù)據(jù)庫實例中,余額卻扣除成功,此時發(fā)現(xiàn)數(shù)據(jù)不一致問題,本文給大家介紹Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題,感興趣的朋友一起看看吧2023-11-11
springboot整合spring-data-redis遇到的坑
使用springboot整合redis,使用默認(rèn)的序列化配置,然后使用redis-client去查詢時查詢不到相應(yīng)的key.問題出在哪,怎么解決呢?下面小編給大家?guī)砹藄pringboot整合spring-data-redis遇到的坑,需要的的朋友參考下吧2017-04-04

