最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)庫表的支持,可以進行簡單的調(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)高可用、高擴展、高伸縮…

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)進入到了負(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中new關(guān)鍵字和newInstance方法的區(qū)別分享

    Java中new關(guān)鍵字和newInstance方法的區(qū)別分享

    在初始化一個類,生成一個實例的時候,newInstance()方法和new關(guān)鍵字除了一個是方法一個是關(guān)鍵字外,最主要的區(qū)別是創(chuàng)建對象的方式不同
    2013-07-07
  • SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源配置功能

    SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源配置功能

    本文主要講解springboot?+mybatisplus?+?druid?實現(xiàn)多數(shù)據(jù)源配置功能以及一些必要的準(zhǔn)備及代碼說明,具有一定的參考價值,感興趣的小伙伴可以借鑒一下
    2023-06-06
  • 基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲

    基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲

    眾所周知,JavaSwing是Java中關(guān)于窗口開發(fā)的一個工具包,可以開發(fā)一些窗口程序,然后由于工具包的一些限制,導(dǎo)致Java在窗口開發(fā)商并沒有太多優(yōu)勢,不過,在JavaSwing中關(guān)于事件的監(jiān)聽機制是我們需要重點掌握的內(nèi)容,本文將基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲
    2023-09-09
  • Java數(shù)組的聲明與創(chuàng)建示例詳解

    Java數(shù)組的聲明與創(chuàng)建示例詳解

    這篇文章主要介紹了Java數(shù)組的聲明與創(chuàng)建示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java如何將時間戳格式化為日期字符串

    Java如何將時間戳格式化為日期字符串

    這篇文章主要介紹了Java如何將時間戳格式化為日期字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • SpringBoot 項目如何在tomcat容器中運行的實現(xiàn)方法

    SpringBoot 項目如何在tomcat容器中運行的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot 項目如何在tomcat容器中運行的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • SpringBoot優(yōu)化連接數(shù)的方法詳解

    SpringBoot優(yōu)化連接數(shù)的方法詳解

    SpringBoot開發(fā)最大的好處是簡化配置,內(nèi)置了Tomcat,下面這篇文章主要給大家介紹了關(guān)于SpringBoot優(yōu)化連接數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 深入理解jvm啟動參數(shù)

    深入理解jvm啟動參數(shù)

    JVM的啟動參數(shù)是在啟動JVM時可以設(shè)置的一些命令行參數(shù),本文詳細(xì)的介紹了深入理解jvm啟動參數(shù),具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • java實現(xiàn)俄羅斯方塊

    java實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • RabbitMQ集群實現(xiàn)消息的高可用性和負(fù)載均衡

    RabbitMQ集群實現(xiàn)消息的高可用性和負(fù)載均衡

    文章解釋了RabbitMQ集群的概念及其構(gòu)建目的,詳細(xì)闡述了其底層原理,包括Erlang/OTP的分布式基因、ErlangCookie認(rèn)證和分布式進程管理,感興趣的朋友跟隨小編一起看看吧
    2026-04-04

最新評論

江华| 临安市| 石门县| 疏勒县| 临海市| 驻马店市| 屯留县| 开平市| 谢通门县| 邵东县| 仲巴县| 瑞昌市| 厦门市| 讷河市| 溧阳市| 鹤壁市| 新乡县| 嘉定区| 北宁市| 清苑县| 陆丰市| 岳池县| 漳浦县| 兴隆县| 都江堰市| 循化| 宜兰县| 岳阳市| 财经| 岳普湖县| 谷城县| 宜春市| 轮台县| 平阳县| 钟山县| 晋州市| 南城县| 玉林市| 葵青区| 绥芬河市| 潮州市|