欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Eureka探究細(xì)枝末節(jié)

 更新時(shí)間:2022年09月02日 10:19:37   作者:悠然予夏  
Eureka是Netflix開(kāi)發(fā)的服務(wù)發(fā)現(xiàn)框架,本身是一個(gè)基于REST的服務(wù),主要用于定位運(yùn)行在AWS域中的中間層服務(wù),以達(dá)到負(fù)載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的

1、Eureka元數(shù)據(jù)詳解

Eureka的元數(shù)據(jù)有兩種:標(biāo)準(zhǔn)元數(shù)據(jù)和自定義元數(shù)據(jù)。

標(biāo)準(zhǔn)元數(shù)據(jù):主機(jī)名、IP地址、端口號(hào)等信息,這些信息都會(huì)被發(fā)布在服務(wù)注冊(cè)表中,用于服務(wù)之間的調(diào)用。

自定義元數(shù)據(jù):可以使用eureka.instance.metadata-map配置,符合KEY/VALUE的存儲(chǔ)格式。這 些元數(shù)據(jù)可以在遠(yuǎn)程客戶端中訪問(wèn)。

類似于

eureka:

        instance:
                prefer-ip-address: true
                metadata-map:
                # 自定義元數(shù)據(jù)(kv自定義)
                        cluster: cl1
                        region: rn1

我們可以在程序中可以使用DiscoveryClient 獲取指定微服務(wù)的所有元數(shù)據(jù)信息

import com.lagou.edu.AutoDeliverApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
@SpringBootTest(classes = {AutoDeliverApplication.class})
@RunWith(SpringJUnit4ClassRunner.class)
public class AutoDeliverApplicationTest {
    @Autowired
    private DiscoveryClient discoveryClient;
    @Test
    public void testInstanceMetadata() {
        // 從EurekaServer獲取指定微服務(wù)實(shí)例
        List<ServiceInstance> instances = discoveryClient.getInstances("lagou-service-resume");
        // 循環(huán)打印每個(gè)微服務(wù)實(shí)例的元數(shù)據(jù)信息
        for (int i = 0; i < instances.size(); i++) {
            ServiceInstance serviceInstance = instances.get(i);
            System.out.println(serviceInstance);
        }
    }
}

元數(shù)據(jù)查看如下

2、Eureka客戶端詳解

服務(wù)提供者(也是Eureka客戶端)要向EurekaServer注冊(cè)服務(wù),并完成服務(wù)續(xù)約等工作

服務(wù)注冊(cè)詳解(服務(wù)提供者)

  1. 當(dāng)我們導(dǎo)入了eureka-client依賴坐標(biāo),配置Eureka服務(wù)注冊(cè)中心地址
  2. 服務(wù)在啟動(dòng)時(shí)會(huì)向注冊(cè)中心發(fā)起注冊(cè)請(qǐng)求,攜帶服務(wù)元數(shù)據(jù)信息
  3. Eureka注冊(cè)中心會(huì)把服務(wù)的信息保存在Map中

服務(wù)續(xù)約詳解(服務(wù)提供者)

服務(wù)每隔30秒會(huì)向注冊(cè)中心續(xù)約(心跳)一次(也稱為報(bào)活),如果沒(méi)有續(xù)約,租約在90秒后到期,然后服務(wù)會(huì)被失效。每隔30秒的續(xù)約操作我們稱之為心跳檢測(cè)。

往往不需要我們調(diào)整這兩個(gè)配置

# 向Eureka服務(wù)中心集群注冊(cè)服務(wù)
eureka:
        instance:
# 租約續(xù)約間隔時(shí)間,默認(rèn)30秒
                lease-renewal-interval-in-seconds: 30
# 租約到期,服務(wù)時(shí)效時(shí)間,默認(rèn)值90秒,服務(wù)超過(guò)90秒沒(méi)有發(fā)生心跳,EurekaServer會(huì)將服務(wù)從列表移除
                lease-expiration-duration-in-seconds: 90

獲取服務(wù)列表詳解(服務(wù)消費(fèi)者)

每隔30秒服務(wù)會(huì)從注冊(cè)中心中拉取一份服務(wù)列表,這個(gè)時(shí)間可以通過(guò)配置修改。往往不需要我們調(diào)整。

# 向Eureka服務(wù)中心集群注冊(cè)服務(wù)
eureka:
        client:# 每隔多久拉取一次服務(wù)列表
                registry-fetch-interval-seconds: 30

  1. 服務(wù)消費(fèi)者啟動(dòng)時(shí),從 EurekaServer服務(wù)列表獲取只讀備份,緩存到本地
  2. 每隔30秒,會(huì)重新獲取并更新數(shù)據(jù)
  3. 每隔30秒的時(shí)間可以通過(guò)配置eureka.client.registry-fetch-interval-seconds修改

3、Eureka服務(wù)端詳解

服務(wù)下線

  • 當(dāng)服務(wù)正常關(guān)閉操作時(shí),會(huì)發(fā)送服務(wù)下線的REST請(qǐng)求給EurekaServer。
  • 服務(wù)中心接受到請(qǐng)求后,將該服務(wù)置為下線狀態(tài)

失效剔除

Eureka Server會(huì)定時(shí)(間隔值是eureka.server.eviction-interval-timer-in-ms,默認(rèn)60s)進(jìn)行檢查,如果發(fā)現(xiàn)實(shí)例在在一定時(shí)間(此值由客戶端設(shè)置的eureka.instance.lease-expiration-duration-in-seconds定義,默認(rèn)值為90s)內(nèi)沒(méi)有收到心跳,則會(huì)注銷此實(shí)例。

自我保護(hù)

服務(wù)提供者 —> 注冊(cè)中心

定期的續(xù)約(服務(wù)提供者和注冊(cè)中心通信),假如服務(wù)提供者和注冊(cè)中心之間的網(wǎng)絡(luò)有點(diǎn)問(wèn)題,不代表服務(wù)提供者不可用,不代表服務(wù)消費(fèi)者無(wú)法訪問(wèn)服務(wù)提供者。如果在15分鐘內(nèi)超過(guò)85%的客戶端節(jié)點(diǎn)都沒(méi)有正常的心跳,那么Eureka就認(rèn)為客戶端與注冊(cè)中心出現(xiàn)了網(wǎng)絡(luò)故障,Eureka Server自動(dòng)進(jìn)入自我保護(hù)機(jī)制。

為什么會(huì)有自我保護(hù)機(jī)制?

默認(rèn)情況下,如果Eureka Server在一定時(shí)間內(nèi)(默認(rèn)90秒)沒(méi)有接收到某個(gè)微服務(wù)實(shí)例的心跳,Eureka Server將會(huì)移除該實(shí)例。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)?時(shí),微服務(wù)與Eureka Server之間?法正常通信,而微服務(wù)本身是正常運(yùn)行的,此時(shí)不應(yīng)該移除這個(gè)微服務(wù),所以引入了自我保護(hù)機(jī)制。

服務(wù)中心頁(yè)面會(huì)顯示如下提示信息

當(dāng)處于自我保護(hù)模式時(shí)

  • 不會(huì)剔除任何服務(wù)實(shí)例(可能是服務(wù)提供者和EurekaServer之間網(wǎng)絡(luò)問(wèn)題),保證了大多數(shù)服務(wù)依然可用
  • Eureka Server仍然能夠接受新服務(wù)的注冊(cè)和查詢請(qǐng)求,但是不會(huì)被同步到其它節(jié)點(diǎn)上,保證當(dāng)前節(jié)點(diǎn)依然可用,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),當(dāng)前Eureka Server新的注冊(cè)信息會(huì)被同步到其它節(jié)點(diǎn)中。
  • 在Eureka Server工程中通過(guò)eureka.server.enable-self-preservation配置可用關(guān)停自我保護(hù),默認(rèn)值是打開(kāi)

eureka:
        server:
                enable-self-preservation: false # 關(guān)閉自我保護(hù)模式(缺省為打開(kāi))

經(jīng)驗(yàn):建議生產(chǎn)環(huán)境打開(kāi)自我保護(hù)機(jī)制

到此這篇關(guān)于Java Eureka探究細(xì)枝末節(jié)的文章就介紹到這了,更多相關(guān)Java Eureka內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)對(duì)視頻進(jìn)行截圖的方法【附ffmpeg下載】

    Java實(shí)現(xiàn)對(duì)視頻進(jìn)行截圖的方法【附ffmpeg下載】

    這篇文章主要介紹了Java實(shí)現(xiàn)對(duì)視頻進(jìn)行截圖的方法,結(jié)合實(shí)例形式分析了Java使用ffmpeg針對(duì)視頻進(jìn)行截圖的相關(guān)操作技巧,并附帶ffmpeg.exe文件供讀者下載使用,需要的朋友可以參考下
    2018-01-01
  • Spring?零基礎(chǔ)入門(mén)WebFlux框架體系

    Spring?零基礎(chǔ)入門(mén)WebFlux框架體系

    Spring5發(fā)布有兩年了,隨Spring5一起發(fā)布了一個(gè)和Spring?WebMvc同級(jí)的Spring?WebFlux。這是一個(gè)支持反應(yīng)式編程模型的新框架體系。反應(yīng)式模型區(qū)別于傳統(tǒng)的MVC最大的不同是異步的、事件驅(qū)動(dòng)的、非阻塞的,這使得應(yīng)用程序的并發(fā)性能會(huì)大大提高,單位時(shí)間能夠處理更多的請(qǐng)求
    2022-07-07
  • 詳解Java?token主流框架之JWT

    詳解Java?token主流框架之JWT

    JWT(JSON?Web?Token)是一種基于JSON格式的輕量級(jí)的、用于身份認(rèn)證的開(kāi)放標(biāo)準(zhǔn),它通過(guò)在用戶和服務(wù)器之間傳遞一個(gè)安全的、可靠的、獨(dú)立的JSON對(duì)象來(lái)進(jìn)行身份驗(yàn)證和授權(quán),本文將詳細(xì)給大家介紹Java?token主流框架之JWT,需要的朋友可以參考下
    2023-05-05
  • Java集合框架之Collection接口詳解

    Java集合框架之Collection接口詳解

    這篇文章主要為大家詳細(xì)介紹了Java集合框架之Collection接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間代碼示例

    Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間代碼示例

    這篇文章主要給大家介紹了關(guān)于使用Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間的相關(guān)資料,在日常開(kāi)發(fā)中我們經(jīng)常會(huì)涉及到時(shí)間的大小比較或者是判斷某個(gè)時(shí)間是否在某個(gè)時(shí)間段內(nèi),需要的朋友可以參考下
    2023-07-07
  • Java中try、catch的使用方法

    Java中try、catch的使用方法

    這篇文章主要介紹了Java中try、catch的使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • springboot中restful風(fēng)格請(qǐng)求的使用方法示例

    springboot中restful風(fēng)格請(qǐng)求的使用方法示例

    RESTful是一種web軟件風(fēng)格,它不是標(biāo)準(zhǔn)也不是協(xié)議,它不一定要采用,只是一種風(fēng)格,它倡導(dǎo)的是一個(gè)資源定位(url)及資源操作的風(fēng)格,下面這篇文章主要給大家介紹了關(guān)于springboot中restful風(fēng)格請(qǐng)求的使用方法,需要的朋友可以參考下
    2023-02-02
  • SpringMVC如何正確接收時(shí)間的請(qǐng)求示例分析

    SpringMVC如何正確接收時(shí)間的請(qǐng)求示例分析

    這篇文章主要為大家介紹了SpringMVC如何正確接收時(shí)間的請(qǐng)求示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java中equals方法使用及重寫(xiě)練習(xí)

    Java中equals方法使用及重寫(xiě)練習(xí)

    equals是在object類中的方法,在object中equals是用來(lái)看看兩個(gè)參數(shù)是否引用的是同一個(gè)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于Java中equals方法使用及重寫(xiě)練習(xí)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Java實(shí)現(xiàn)MD5加密的方法

    Java實(shí)現(xiàn)MD5加密的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)MD5加密的方法,實(shí)例分析了基于java實(shí)現(xiàn)md5加密的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評(píng)論