亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringCloud集成Eureka并實現(xiàn)負(fù)載均衡的過程詳解

 更新時間:2023年11月16日 09:36:05   作者:懶羊羊.java  
這篇文章主要給大家詳細(xì)介紹了SpringCloud集成Eureka并實現(xiàn)負(fù)載均衡的過程,文章通過代碼示例和圖文講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下

1.Eureka

你問我Eureka是什么,其實就是一個基于SpringBoot的Java程序。解壓Eureka-server的jar包之后,可以清楚看到一個標(biāo)準(zhǔn)的Java目錄結(jié)構(gòu)(還有一些存放前端頁面的static文件):

在這里插入圖片描述

和nacos非常相似,只不過Eureka作為注冊中心默認(rèn)是將實例信息存放在eureka-server內(nèi)存中,這比較適用于開發(fā)環(huán)境與測試環(huán)境,生產(chǎn)環(huán)境中還是建議配置相應(yīng)的數(shù)據(jù)庫表,做好數(shù)據(jù)持久化。在啟動方式上,二者大體相似,shell腳本,maven模塊啟動,docker鏡像…都可以實現(xiàn)。

2.整合Eureka作為注冊中心

給大家提供一個我已經(jīng)整合好的demo(用戶-支付的場景),實現(xiàn)了服務(wù)間的注冊與發(fā)現(xiàn),并且有數(shù)據(jù)庫表的支持,可以進(jìn)行簡單的調(diào)用:https://gitee.com/lazy-sheep-java/cloud-eureka.git
下面采用將Eureka-server作為獨立maven模塊的方式啟動來作為注冊中心,其實本質(zhì)也就是掃描運行Eureka-server的jar包而已,并在此過程中做一些人為配置:

2.1創(chuàng)建maven工程

創(chuàng)建一個父-子結(jié)構(gòu)的maven工程,這個很簡單點點點就好

在這里插入圖片描述

2.2依賴配置(Eureka-Server)

作為獨立的maven模塊啟動Eureka服務(wù),只需要引入核心依賴,配置一個啟動類,并配置相應(yīng)路徑端口即可提供服務(wù):

        <!--eureka服務(wù)端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

在這里插入圖片描述

server:
  port: 10086 # 服務(wù)端口
spring:
  application:
    name: eureka-server # eureka的服務(wù)名稱
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

2.3業(yè)務(wù)配置(Eureka-Client)

在業(yè)務(wù)模塊中,都屬于Eureka的客戶端,其核心依賴為:

        <!--eureka客戶端依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

并在相應(yīng)的模塊中配置服務(wù)端的地址

在這里插入圖片描述

直到這里,當(dāng)啟動eureka-server、user-service模塊之后,登錄http://127.0.0.1:10086就會發(fā)現(xiàn),Eureka-server作為注冊中心已經(jīng)成功注冊了user-service服務(wù),就像這樣:

在這里插入圖片描述

2.4服務(wù)調(diào)用流程

在一個訂單服務(wù)(A)調(diào)用用戶服務(wù)(B)的模型中,A服務(wù)從Eureka-server獲取B服務(wù)的地址。在A服務(wù)中使用RestTemplate通過getForObject()方法發(fā)送HTTP請求到B服務(wù)的地址,并處理返回的響應(yīng)將其封裝為指定的對象。

在這里插入圖片描述

這是一個最簡單的調(diào)用鏈路。用非官方語言描述該過程,即A拿著B的使用說明書向B發(fā)消息并得到了回應(yīng),而Eureka正是那本說明書

當(dāng)然,在生產(chǎn)環(huán)境中一個微服務(wù)不太可能只會有單實例,更多的是一服務(wù)多實例的形式,當(dāng)被調(diào)用方接收到調(diào)用請求,會去做負(fù)載均衡的處理,從而將請求落到合適實例上。以此來實現(xiàn)高可用、高擴(kuò)展、高伸縮…

3.集成負(fù)載均衡

首先給一個服務(wù)多部署幾個實例:

在這里插入圖片描述

效果就像這樣:

在這里插入圖片描述

以前我們拉取的是某個服務(wù)的那個實例,現(xiàn)在則是拉取某個服務(wù)的實例列表。并在此基礎(chǔ)上通過負(fù)載均衡將發(fā)來的請求指定到其中的某一實例上。

那要怎么實現(xiàn)呢?

只需要在服務(wù)調(diào)用方添加一個注解即可,最簡單的方式就是這樣:

    @Bean
    @LoadBalanced //負(fù)載均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

其實,在RestTemplate內(nèi)部繼承了一個攔截器(實現(xiàn)請求的轉(zhuǎn)發(fā),也就是負(fù)載均衡),而@LoadBalance注解則是幫助開啟了該功能

在這里插入圖片描述

注解本身是沒有實現(xiàn)相關(guān)功能的(后面分析實現(xiàn)原理):

在這里插入圖片描述

言歸正傳

現(xiàn)在我們的user服務(wù)已經(jīng)有三個實例,并且已經(jīng)進(jìn)入到了負(fù)載均衡的列表

在這里插入圖片描述

我們用aop做一個切面,來把負(fù)載均衡分發(fā)到服務(wù)實例上的信息以日志的形式打印到控制臺,以便更直觀地看到均衡的效果:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

注入Eureka客戶端,通過提供的api來查詢服務(wù)的客戶端分發(fā)到的實例信息:

@Aspect
@Component
@Slf4j
public class RequestAspect {
    @Resource
    EurekaClient eurekaClient;

    @Before(value = "execution(* com.yu7.user.web.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        String methodName = joinPoint.getSignature().getName();
        String className = joinPoint.getTarget().getClass().getName();
        log.debug("調(diào)用方法:{} ", className + "." + methodName);
        InstanceInfo instanceInfo = eurekaClient.getApplicationInfoManager().getInfo();
        log.debug("負(fù)載均衡到的實例信息為:{}",instanceInfo.getInstanceId());
    }
}

當(dāng)調(diào)用方再次發(fā)起請求,觀察控制臺的信息,可以直接看到請求被分發(fā)到了端口為8084的實例上:

在這里插入圖片描述

負(fù)載均衡成功實現(xiàn)

以上就是SpringCloud集成Eureka并實現(xiàn)負(fù)載均衡的過程詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud集成Eureka的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java編程獲取當(dāng)前屏幕分辨率的方法示例

    Java編程獲取當(dāng)前屏幕分辨率的方法示例

    這篇文章主要介紹了Java編程獲取當(dāng)前屏幕分辨率的方法,涉及java針對系統(tǒng)硬件信息的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Java編程實現(xiàn)基于TCP協(xié)議的Socket聊天室示例

    Java編程實現(xiàn)基于TCP協(xié)議的Socket聊天室示例

    這篇文章主要介紹了Java編程實現(xiàn)基于TCP協(xié)議的Socket聊天室,結(jié)合實例形式詳細(xì)分析了java基于TCP協(xié)議的Socket聊天室客戶端與服務(wù)器端相關(guān)實現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-01-01
  • 詳解Java發(fā)送HTTP請求

    詳解Java發(fā)送HTTP請求

    這篇文章主要介紹了Java發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文詳解SpringBoot使用Kafka如何保證消息不丟失

    一文詳解SpringBoot使用Kafka如何保證消息不丟失

    這篇文章主要為大家詳細(xì)介紹了SpringBoot使用Kafka如何保證消息不丟失的相關(guān)知識,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2025-01-01
  • 通過實例了解java checked和unchecked異常

    通過實例了解java checked和unchecked異常

    這篇文章主要介紹了通過實例了解checked和unchecked異常,Java異常分為兩種類型,checked異常和unchecked異常,另一種叫法是異常和錯誤。下面小編就帶大家來一起學(xué)習(xí)一下吧
    2019-06-06
  • Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    這篇文章主要介紹了Java開發(fā)之Spring連接數(shù)據(jù)庫方法,以實例形式較為詳細(xì)的分析了Java Spring開發(fā)中針對數(shù)據(jù)庫的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    這篇文章主要以圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類,本文主要以Mysql數(shù)據(jù)庫為例,應(yīng)該會對大家有所幫助,如果有錯誤的地方,還望指正
    2023-03-03
  • Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng)

    Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng)

    這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng),對正在工作或者學(xué)習(xí)的你有一定的參考價值,需要的朋友可以參考一下
    2022-01-01
  • 多用多學(xué)之Java中的Set,List,Map詳解

    多用多學(xué)之Java中的Set,List,Map詳解

    下面小編就為大家?guī)硪黄嘤枚鄬W(xué)之Java中的Set,List,Map詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • SpringCache 分布式緩存的實現(xiàn)方法(規(guī)避redis解鎖的問題)

    SpringCache 分布式緩存的實現(xiàn)方法(規(guī)避redis解鎖的問題)

    這篇文章主要介紹了SpringCache 分布式緩存的實現(xiàn)方法(規(guī)避redis解鎖的問題),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論