国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn)

這篇具有很好參考價值的文章主要介紹了【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

在微服務架構中,服務的注冊與發(fā)現(xiàn)是至關重要的一環(huán)。為了實現(xiàn)這一目標,Eureka 注冊中心應運而生。在本篇文章中,我們將深入理解 Eureka 注冊中心的原理,以及探討服務的注冊與發(fā)現(xiàn)機制。

在微服務的協(xié)作中,服務之間的遠程調(diào)用是常見的需求。然而,使用傳統(tǒng)的 RestTemplate 遠程調(diào)用方式存在一些問題,例如耦合度高、維護困難等。為了解決這些問題,我們將探討如何利用 Eureka 注冊中心來優(yōu)雅地進行服務的注冊與發(fā)現(xiàn),從而更好地構建微服務架構。

接下來,我們將逐步深入探討 Eureka 注冊中心的原理、搭建 Eureka 服務、服務的注冊與發(fā)現(xiàn)等關鍵內(nèi)容。希望通過閱讀本文,可以幫助我們更全面地理解微服務架構中 Eureka 的作用以及如何靈活運用它來構建高效可靠的分布式系統(tǒng)。

一、微服務調(diào)用出現(xiàn)的問題

在微服務架構中,服務之間的遠程調(diào)用是常見的需求。然而,隨著系統(tǒng)的復雜性增加,服務調(diào)用也帶來了一些問題和挑戰(zhàn)。

1.1 服務消費者如何獲取服務提供者的地址信息?

在微服務架構中,服務提供者的地址信息通常是動態(tài)的,可能隨時發(fā)生變化,例如服務的擴容、縮容、遷移等情況。因此,服務消費者需要一種機制來獲取服務提供者的地址信息,以確保能夠正確地發(fā)起遠程調(diào)用。

解決方案:服務注冊與發(fā)現(xiàn)

  • 服務提供者在啟動時將自己的地址信息注冊到服務注冊中心,包括主機名、端口號等信息。
  • 服務消費者通過查詢服務注冊中心來獲取服務提供者的地址信息,從而可以動態(tài)地發(fā)起調(diào)用。

1.2 如果有多個服務提供者,消費者該如何選擇?

在實際應用中,可能會存在多個提供相同服務的服務提供者,這時服務消費者需要選擇一個合適的提供者來發(fā)起調(diào)用。選擇的依據(jù)可以包括負載均衡、性能指標、健康狀態(tài)等因素。

解決方案:負載均衡

  • 負載均衡是一種策略,用于在多個服務提供者之間分配請求,以達到均衡負載的目的。
  • 常見的負載均衡策略包括輪詢、隨機、加權輪詢、加權隨機等,不同策略適用于不同的場景。

1.3 消費者如何得知服務提供者的健康狀態(tài)?

在微服務架構中,服務提供者的健康狀態(tài)對于服務消費者是非常重要的信息。如果一個服務提供者出現(xiàn)了故障或不可用,服務消費者需要避免向其發(fā)起請求,以確保系統(tǒng)的穩(wěn)定性和可靠性。

解決方案:健康檢查與容錯機制

  • 健康檢查是一種監(jiān)測服務提供者健康狀態(tài)的機制,通常由服務注冊中心來執(zhí)行。
  • 服務消費者可以根據(jù)健康檢查的結果來判斷服務提供者是否可用,從而決定是否發(fā)起調(diào)用。
  • 容錯機制可以幫助服務消費者處理遠程調(diào)用時可能出現(xiàn)的故障,例如超時、重試、降級等。

其中,Eureka 就是是一種服務注冊與發(fā)現(xiàn)的解決方案,它通過服務注冊中心來解決了微服務調(diào)用中的一些關鍵問題。

二、什么是 Eureka

Eureka 是 Netflix 提供的一款開源的服務注冊與發(fā)現(xiàn)框架,用于構建基于微服務架構的分布式系統(tǒng)。它解決了在微服務架構中,服務的動態(tài)注冊、發(fā)現(xiàn)和負載均衡的問題,是構建可伸縮和高可用性微服務的重要工具之一。

2.1 Eureka 的核心概念

  • 服務注冊

在微服務架構中,服務提供者在啟動時將自己的信息注冊到 Eureka 注冊中心,包括服務名稱、網(wǎng)絡地址等。這樣,Eureka 注冊中心就知道了系統(tǒng)中有哪些服務是可用的。

  • 服務發(fā)現(xiàn)

服務消費者可以通過查詢 Eureka 注冊中心獲取可用服務的信息,從而決定向哪些服務發(fā)起調(diào)用。Eureka 注冊中心維護了一個服務實例列表,包括每個服務的網(wǎng)絡地址。

  • 心跳與健康檢查

Eureka 注冊中心會定期向服務提供者發(fā)送心跳請求,以檢測服務是否仍然可用。如果一個服務在一定時間內(nèi)未發(fā)送心跳,Eureka 將其標記為不可用。這就實現(xiàn)了對服務健康狀態(tài)的監(jiān)控。

  • 負載均衡

Eureka 客戶端集成了 Ribbon 負載均衡器,可以在多個服務提供者之間實現(xiàn)負載均衡。通過使用 Ribbon,服務消費者可以選擇一個合適的服務提供者來發(fā)起調(diào)用。

Eureka 的優(yōu)勢

  1. 簡化了服務調(diào)用: Eureka 提供了簡潔的 API,使得服務的注冊、發(fā)現(xiàn)和調(diào)用變得非常容易。

  2. 高可用性: Eureka 支持服務注冊中心的集群部署,通過相互注冊來保證注冊中心的高可用性。

  3. 負載均衡: 集成了 Ribbon 負載均衡器,可實現(xiàn)對多個服務提供者的請求分配,提高系統(tǒng)的性能和穩(wěn)定性。

  4. 動態(tài)擴展: Eureka 支持服務的動態(tài)注冊和注銷,適應服務實例的動態(tài)變化。

  5. 健康檢查: 通過心跳和健康檢查,Eureka 能夠及時發(fā)現(xiàn)不可用的服務實例,確保服務的高可用性。

總體而言,Eureka 是一個功能強大的服務注冊與發(fā)現(xiàn)框架,為構建微服務架構提供了可靠的基礎設施支持。

2.2 Eureka 的解決微服務調(diào)用問題的方案

  1. 服務消費者如何獲取服務提供者的地址信息?

    • Eureka 注冊中心: 服務提供者在啟動時將自己的地址信息注冊到 Eureka 注冊中心。服務消費者可以通過查詢 Eureka 注冊中心獲取服務提供者的地址信息。
  2. 如果有多個服務提供者,消費者該如何選擇?

    • 負載均衡: Eureka 支持負載均衡,服務消費者可以使用負載均衡策略來選擇一個合適的服務提供者。Eureka 客戶端集成了 Ribbon 負載均衡器,可方便地實現(xiàn)負載均衡。
  3. 消費者如何得知服務提供者的健康狀態(tài)?

    • 健康檢查: Eureka 注冊中心會定期對服務提供者進行健康檢查,如果一個服務提供者出現(xiàn)故障,Eureka 將其標記為不可用。服務消費者在查詢服務列表時可以過濾掉不可用的服務提供者,確保只選擇健康的服務。

綜上所述,Eureka 提供了服務注冊與發(fā)現(xiàn)的機制,同時集成了負載均衡和健康檢查等功能,有效地解決了微服務調(diào)用中的關鍵問題。通過使用 Eureka,微服務架構中的服務調(diào)用變得更加靈活、可靠、具有高可用性。

三、Eureka 的原理

Eureka 是一個由 Netflix 提供的服務注冊與發(fā)現(xiàn)框架,通過 eureka-servereureka-client 兩部分協(xié)同工作,實現(xiàn)了微服務架構中服務的動態(tài)注冊、發(fā)現(xiàn)、負載均衡和健康檢查等功能。下面我們將深入了解 Eureka 的工作原理。

3.1 Eureka 的核心組件

3.1.1 eureka-server

  • 服務注冊中心: eureka-server 充當服務的注冊中心,負責接收服務提供者注冊信息并維護注冊表。

  • 服務注冊表: 服務提供者在啟動時向 eureka-server 注冊自己的信息,包括服務名稱、網(wǎng)絡地址等,形成服務注冊表。

  • 健康檢查: eureka-server 定期向服務提供者發(fā)送心跳,通過健康檢查來維護服務的健康狀態(tài)。

3.1.2 eureka-client

  • 服務提供者: 微服務中的各個服務模塊通過 eureka-clienteureka-server 注冊自己的服務。

  • 服務消費者: 微服務中的服務消費者通過 eureka-clienteureka-server 獲取可用服務的信息,實現(xiàn)服務的發(fā)現(xiàn)。

  • 負載均衡: eureka-client 集成了 Ribbon 負載均衡器,可以在多個服務提供者之間實現(xiàn)負載均衡,提高系統(tǒng)的性能和可靠性。

3.2 Eureka 的工作流程

Eureka 的工作流程可用下圖表示:

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring

  1. 服務注冊階段:

    • 服務提供者啟動時,通過 eureka-clienteureka-server 注冊自己的服務信息。

    • 注冊包括服務名稱、網(wǎng)絡地址等,服務提供者成為服務注冊表的一部分。

  2. 服務發(fā)現(xiàn)階段:

    • 服務消費者通過 eureka-clienteureka-server 發(fā)送服務發(fā)現(xiàn)請求。

    • eureka-server 返回可用服務的信息,包括服務名稱和對應的網(wǎng)絡地址。

    • 服務消費者根據(jù)負載均衡策略選擇一個服務提供者。

  3. 健康檢查與維護:

    • eureka-server 定期向服務提供者發(fā)送心跳,檢查服務的健康狀態(tài)。

    • 如果一個服務提供者長時間未發(fā)送心跳,eureka-server 將其標記為不可用。

    • 不可用的服務將在服務注冊表中被移除,保持服務注冊表的準確性。

通過上述流程,Eureka 實現(xiàn)了服務的動態(tài)注冊與發(fā)現(xiàn),保障了微服務架構的高可用性和彈性擴展能力。Eureka 的原理設計使得微服務之間的調(diào)用更加靈活和可靠。

四、搭建 Eureka 服務

在 Spring Cloud Demo 代碼中搭建 Eureka 服務的步驟如下:

  1. 創(chuàng)建項目,引入spring-cloud-starter-netflix-eureka-server的依賴
<!-- eureka 服務端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 編寫啟動類,添加@EnableEurekaServer注解
@EnableEurekaServer // 開啟 EurekaServer 自動裝配
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
  1. 添加application.yml文件,編寫下面的配置
server:
  port: 10086
spring:
  application:
    name: eurekaservice # 服務的名稱
eureka:
  client:
    service-url: # eureka 的地址信息
      defaultZone: http://127.0.0.1:10086/eureka/ # eureka 也是一個微服務,因此啟動的時候也會將自己注冊進 eureka 中(為集群起作用)

完成上述所有的步驟之后就可以運行EurekaApplication 啟動類了,然后就可以訪問地址:http://localhost:10086/。

如果此時出現(xiàn)的頁面如下,就說明搭建 Eureka 服務成功了:
【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring
其中Instances currently registered with Eureka 下顯示的就是當前在 Eureka 中注冊的服務。

五、注冊服務

5.1 注冊 user-service 服務

user-service 服務注冊到 EurekaServer 中的步驟如下:

  1. user-service 項目的pom.xml中引入spring-cloud-starter-netflix-eureka-client依賴
 <!-- eureka 客戶端-->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>
  1. application.yml文件,編寫下面的配置
spring:
  application:
    name: userservice
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka/ 

此時我們發(fā)現(xiàn)這個配置和上面搭建 EurekaServer 時的配置基本相同,其原因就是 Eureka 在啟動的時候也會將自己注冊到 EurekaServer 中,而這個配置的作用就是將指定的服務(通過application name 區(qū)分)注冊到defaultZone 對應地址的 EurekaServer 中。

5.2 注冊 order-service 服務

  1. order-service 項目的pom.xml中引入spring-cloud-starter-netflix-eureka-client依賴
 <!-- eureka 客戶端-->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>
  1. application.yml文件,編寫下面的配置
spring:
  application:
    name: orderservice
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka/ 

此時,啟動user-serviceorder-service 服務,再次訪問http://localhost:10086/就可以發(fā)現(xiàn)成功將服務注冊到 EurekaServer 中了:
【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring

5.3 同一個服務啟動多個實例

另外,在IDEA中,我們可以同時啟動一個服務的多個實例,只需要保證不同實例的端口號不要發(fā)生沖突即可。

例如,此時我還想增加兩個user-service 服務的實例,步驟如下:

  1. 右鍵點擊 UserApplication ,然后選擇 Copy Configuration 進行復制
    【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring

  2. 然后進行如下設置
    【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring
    -Dserver.port=8082表明為這個配置重新設置端口號為 8082,可以按照相同的方式,再復制一個配置。

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring

啟動這兩個實例,然后再次訪問http://localhost:10086/

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring
此時就可以發(fā)現(xiàn)user-service 新增的兩個實例的服務也成功注冊到了 EurekaServer 中。

六、服務的發(fā)現(xiàn)

把服務注冊到 EurekaServer 之后,要做的就是實現(xiàn)服務的拉取了,EurekaServer 中服務的拉取是基于服務名稱來獲取服務的列表,然后再對服務列表做負載均衡選擇出一個服務。

此時我們想要 order-service 能夠拉取到 EurekaServer 中注冊的 user-service 服務,需要進行以下操作:

  1. 修改 order-service 的代碼,修改訪問的 url 路徑,用服務名代替 IP和端口
public Order queryOrderById(Long orderId) {
    // 1. 查詢訂單
    Order order = orderMapper.findById(orderId);

    // 2. 查詢用戶
    // 2.1 構建查詢用戶的 url
    String url = "http://userservice/user/" + order.getUserId();

    // 2.2 使用 RestTemplate 遠程調(diào)用查詢用戶
    User user = restTemplate.getForObject(url, User.class);

    // 3. 封裝 user 信息
    order.setUser(user);

    // 4.返回
    return order;
}

此處就使用 userservice 服務名來代替 user-service 服務的 IP 和端口號了。

  1. order-service 服務的啟動類OrderApplication中的 RestTemplate 添加@LoadBalanced負載均衡注解
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    /**
     * 創(chuàng)建 RestTemplate 并注冊到 Spring 容器
     */
    @LoadBalanced // 負載均衡
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

至此,重新啟動 order-service 服務,便能成功從 EurekaServer 中訪問到 user-service 提供的服務了。

此時清空三個 user-service服務實例的日志記錄,然后在瀏覽器中連續(xù)查詢?nèi)斡唵涡畔ⅲ?/p>

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring
【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring

【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn),微服務,spring cloud,eureka,spring
由此可得知,三個實例各種承擔了一次服務的請求,說明此時負載均衡所采用的策略是輪詢的方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-720844.html

到了這里,關于【Spring Cloud】深入理解 Eureka 注冊中心的原理、服務的注冊與發(fā)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring Cloud 之注冊中心 Eureka 精講

    Spring Cloud 之注冊中心 Eureka 精講

    ?? 簡介:java系列技術分享(??持續(xù)更新中…??) ?? 初衷:一起學習、一起進步、堅持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評論區(qū)指正?? ?? 希望這篇文章對你有所幫助,歡迎點贊 ?? 收藏 ?留言 ?? ?? 更多文章請點擊 Spring Cloud 官網(wǎng):https://spring.io/proj

    2024年02月12日
    瀏覽(95)
  • 【spring cloud學習】3、Eureka Server注冊中心

    【spring cloud學習】3、Eureka Server注冊中心

    Eureka本身是Netflix開源的一款注冊中心產(chǎn)品,并且Spring Cloud提供了相應的集成封裝。選擇Eureka作為注冊中心實例來講解是出于以下原因: (1)Eureka在業(yè)界的應用十分廣泛,整個框架經(jīng)受住了Netflix嚴酷生產(chǎn)環(huán)境的考驗。 (2)除了Eureka注冊中心外,Netflix的其他服務治理功能也十

    2024年02月11日
    瀏覽(91)
  • 【深入了解Spring Cloud Alibaba Nacos:服務注冊和配置中心】—— 每天一點小知識

    【深入了解Spring Cloud Alibaba Nacos:服務注冊和配置中心】—— 每天一點小知識

    ??????????????????????????????????????????????????????????? ?? 深入了解 S p r i n g C l o u d A l i b a b a N a c o s :服務注冊和配置中心 color{#FF1493}{深入了解Spring Cloud Alibaba Nacos:服務注冊和配置中心} 深入了解 Sp r in g Cl o u d A l ibaba N a cos :服務注

    2024年02月11日
    瀏覽(93)
  • 理解 Spring Cloud 分布式配置中心Eureka

    作者:禪與計算機程序設計藝術 在 Spring Cloud 的世界里,分布式系統(tǒng)經(jīng)歷了開發(fā)、測試、運維三個階段。而在開發(fā)階段,通常采用集中式配置方式,將所有配置文件統(tǒng)一管理在一臺服務器上。隨著業(yè)務系統(tǒng)的不斷擴張,各個微服務模塊都需要配置自己的屬性值。因此,需要一

    2024年02月08日
    瀏覽(98)
  • 客快物流大數(shù)據(jù)項目(一百一十三):注冊中心 Spring Cloud Eureka

    客快物流大數(shù)據(jù)項目(一百一十三):注冊中心 Spring Cloud Eureka

    文章目錄 注冊中心 Spring Cloud Eureka 一、Eureka 簡介 二、架構圖

    2023年04月25日
    瀏覽(91)
  • Spring Cloud - Eureka原理、注冊、搭建、應用(全過程詳解)

    Spring Cloud - Eureka原理、注冊、搭建、應用(全過程詳解)

    目錄 一、Eureka 注冊原理 1.1、為什么要使用 Eureka 1.2、Eureka 的工作流程及原理 1.3、eureka 的作用 二、具體實現(xiàn) 2.1、搭建注冊中心 2.2、服務注冊和部署 2.2.1、user-service 服務注冊 2.2.2、服務部署 2.2.3、order-service 服務注冊 2.2.4、驗證服務 2.3、服務發(fā)現(xiàn) 2.3.1、在order-service完成服務

    2024年02月11日
    瀏覽(294)
  • Spring Cloud Eureka:服務注冊與發(fā)現(xiàn)

    Spring Cloud Eureka:服務注冊與發(fā)現(xiàn)

    ??wei_shuo的個人主頁 ??wei_shuo的學習社區(qū) ??Hello World ! Spring Cloud Eureka是Spring Cloud生態(tài)系統(tǒng)中的一個組件,它是用于實現(xiàn)服務注冊與發(fā)現(xiàn)的服務治理組件。在微服務架構中,服務之間存在復雜的依賴關系,而Spring Cloud Eureka可以幫助解決服務之間相互查找和通信的問題 Eurek

    2024年02月09日
    瀏覽(89)
  • 【Spring Cloud 三】Eureka服務注冊與服務發(fā)現(xiàn)

    【Spring Cloud 三】Eureka服務注冊與服務發(fā)現(xiàn)

    【Spring Cloud一】微服務基本知識 目前公司項目使用的注冊中心主要是Spring Cloud Alibaba的Nacos做的注冊中心和配置中心。之前也是對Nacos的基本原理通過手寫代碼的方式進行了實現(xiàn)。出于對于Eureka的好奇所以就對Spring Cloud Neflix的Eureka進行理論學習和實踐。 Eureka是一個 注冊發(fā)現(xiàn)中

    2024年02月14日
    瀏覽(986)
  • Eureka:Spring Cloud服務注冊與發(fā)現(xiàn)組件

    Eureka:Spring Cloud服務注冊與發(fā)現(xiàn)組件

    Eureka 一詞來源于古希臘詞匯,是“發(fā)現(xiàn)了”的意思。在軟件領域,Eureka 是 Netflix 公司開發(fā)的一款開源的服務注冊與發(fā)現(xiàn)組件。 Spring Cloud 將 Eureka 與 Netflix 中的其他開源服務組件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合進 Spring Cloud Netflix 模塊中,整合后的組件全稱為 Spr

    2024年02月03日
    瀏覽(94)
  • 【spring cloud學習】2、Eureka服務注冊與發(fā)現(xiàn)

    【spring cloud學習】2、Eureka服務注冊與發(fā)現(xiàn)

    一套微服務架構的系統(tǒng)由很多單一職責的服務單元組成,而每個服務單元又有眾多運行實例。由于各服務單元顆粒度較小、數(shù)量眾多,相互之間呈現(xiàn)網(wǎng)狀依賴關系,因此需要服務注冊中心來統(tǒng)一管理微服務實例,維護各服務實例的健康狀態(tài)。 從宏觀角度,微服務架構下的系統(tǒng)

    2024年02月10日
    瀏覽(230)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包