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

微服務eureka和nacos案例詳解

 更新時間:2023年06月16日 09:14:19   作者:bubbleJessica  
這篇文章主要介紹了微服務eureka和nacos,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

服務遠程調(diào)用

/**
     * 創(chuàng)建RestTemplate并注入Spring容器
     * @return
     */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
@Autowired
    private RestTemplate restTemplate;
    public Order queryOrderById(Long orderId) {
        // 1.查詢訂單
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate發(fā)起HTTP請求,查詢用戶
        // 2.1.url路徑
        String url="http://localhost:8081/user/"+order.getUserId();
        // 2.2.發(fā)送HTTP請求,實現(xiàn)遠程調(diào)用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封裝user到order對象
        order.setUser(user);
        // 4.返回
        return order;
    }

搭建eureka服務 

第一步:注入依賴 

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

第二步:使用@EnableEurekaServer 

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

第三步:application.yml文件

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

解釋說明: eureka-server自己也是個微服務,也需要服務名稱,而且還需要配置eureka的地址(疑問:我自己就是eureka,為什么還要配置地址信息)剛才說了eureka-server自己就是微服務,所以eureka-server在啟動的時候自己也注冊到eureka上(這是為了將來eureka集群之間通信去用的,比方說我啟動2個或3個eureka,將來3個eureka之間會互相做注冊,那么這樣他們就可以做數(shù)據(jù)交流)上面defaultZone配置的是eureka集群的地址,有多個的話用逗號隔開,因為這里是單機,所以配置的只有自己(重點來了:這里的服務名稱和地址信息都是做服務的注冊)

服務注冊

第一步:項目user-service引入依賴

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

第二步:配置application.yml文件 

spring:
  application:
    name: userservice # eureka的服務名稱
eureka:
  client:
    service-url: # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

idea創(chuàng)建多個實例,可以在UserApplication右擊出現(xiàn)copy Configuration彈出窗口,環(huán)境配置端口點擊應用就行了

服務發(fā)現(xiàn)(服務注冊基礎(chǔ)上添加額外2個步驟)

第一步:在RestTemplate上添加@LoadBalanced注解

/**
     * 創(chuàng)建RestTemplate并注入Spring容器
     * @return
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

第二步:使用服務名稱來代替原來的ip和端口

@Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;
    public Order queryOrderById(Long orderId) {
        // 1.查詢訂單
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate發(fā)起HTTP請求,查詢用戶
        // 2.1.url路徑
        // String url="http://localhost:8081/user/"+order.getUserId();
        String url="http://userservice/user/"+order.getUserId();
        // 2.2.發(fā)送HTTP請求,實現(xiàn)遠程調(diào)用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封裝user到order對象
        order.setUser(user);
        // 4.返回
        return order;
    }

負載均衡

一:代碼方式:在order-service中的OrderApplication類中,定義一個新的IRule(全局生效) 

@Bean
    public IRule randomRule(){
        return new RandomRule();
    }

二:配置文件方式(局部生效)

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 負載均衡規(guī)則

饑餓加載 

Ribbon默認采用懶加載,即第一次訪問時才會去創(chuàng)建LoadBalanceClient,請求時間會很長,而饑餓加載則會在項目啟動時創(chuàng)建,降低第一次訪問的耗時,通過下面配置饑餓加載

ribbon:
  eager-load:
    enabled: true  # 開啟饑餓加載
    clients:  # 指定饑餓加載的服務名稱 這是一個集合
      - userservice

Nacos啟動命令

-m參數(shù)含義是模式model standalone含義是單機啟動 

startup.cmd -m standalone

服務注冊到Nacos

第一步:在cloud-demo父工程中添加spring-cloud-alibaba的管理依賴

<!--nacos的管理依賴-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

第二步:注釋掉order-service和user-service中pom.xml文件原有的eureka依賴

第三步:添加nacos的客戶端依賴

<!--nacos客戶端依賴包-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

第四步:修改user-service和order-service中的application.yml文件,注釋eureka地址,添加nacos地址

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服務端地址

第五步:啟動OrderApplication、UserApplication1、UserApplication2并測試

nacos服務分級存儲模型

服務跨集群調(diào)用問題

服務調(diào)用盡可能選擇本地集群的服務,跨集群調(diào)用延遲較高,本地集群不可訪問時,再去訪問其它集群

服務集群屬性

修改application.yml,添加以下內(nèi)容

spring:
  cloud:
    nacos:
    server-addr: localhost:8848 # nacos 服務端地址
    discovery:
      cluster-name: HZ # 配置集群名稱,也就是機房位置 HZ杭州 SH上海

一旦停掉本地集群的服務,就會發(fā)生跨集群調(diào)用,出現(xiàn)警告信息,方便運維人員知道

A cross-cluster call occurs,name = userservice, clusterName = HZ, instance = [Instance{instanceId='192.168.31.69#8083#SH#DEFAULT_GROUP@@userservice', ip='192.168.31.69', port=8083, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='SH', serviceName='DEFAULT_GROUP@@userservice', metadata={preserved.register.source=SPRING_CLOUD}}]

根據(jù)權(quán)重負載均衡

編輯修改權(quán)重

環(huán)境隔離

新建命名空間

新增成功會生成一個UUID,需要去idea配置application.yml

spring:
  cloud:
    nacos:
    server-addr: localhost:8848 # nacos 服務端地址
    discovery:
      cluster-name: HZ # 配置集群名稱,也就是機房位置 HZ杭州 SH上海
      namespace: a0c14ea6-b75e-4a73-beb5-94e5f496a744 # dev 開發(fā)環(huán)境

到此這篇關(guān)于微服務eureka和nacos的文章就介紹到這了,更多相關(guān)微服務eureka內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實現(xiàn)馬踏棋盤的算法

    java實現(xiàn)馬踏棋盤的算法

    這篇文章主要為大家詳細介紹了java實現(xiàn)馬踏棋盤的算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MyBatis Plus 入門使用詳細教程

    MyBatis Plus 入門使用詳細教程

    這篇文章主要介紹了MyBatis Plus 入門使用詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • MyBatis中的JdbcType映射使用介紹

    MyBatis中的JdbcType映射使用介紹

    這篇文章主要介紹了MyBatis中的JdbcType映射使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • springBoot集成flowable的流程解析

    springBoot集成flowable的流程解析

    這篇文章主要介紹了springBoot集成flowable的流程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • java字符串轉(zhuǎn)JSON簡單代碼示例

    java字符串轉(zhuǎn)JSON簡單代碼示例

    這篇文章主要給大家介紹了關(guān)于java字符串轉(zhuǎn)JSON的相關(guān)資料,JSON?是一種輕量級的數(shù)據(jù)交換格式,常用于Web應用程序中的數(shù)據(jù)傳輸,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Object.wait()與Object.notify()的用法詳細解析

    Object.wait()與Object.notify()的用法詳細解析

    以下是對java中Object.wait()與Object.notify()的用法進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • 詳解Java如何實現(xiàn)有效的并發(fā)處理

    詳解Java如何實現(xiàn)有效的并發(fā)處理

    隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,現(xiàn)代軟件系統(tǒng)對于并發(fā)性能的要求越來越高,如何學習和掌握并發(fā)編程技術(shù)成為了Java開發(fā)人員必備的技能之一,本文主要介紹了Java并發(fā)編程的相關(guān)概念、原理和實踐技巧,感興趣的可以了解下
    2023-11-11
  • gradle構(gòu)建工具和java不兼容錯誤的解決方案

    gradle構(gòu)建工具和java不兼容錯誤的解決方案

    這篇文章主要介紹了如何解決AS中Gradle和Java版本不兼容的問題,主要解決方案包括升級Gradle版本或降級Java版本,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 淺談Java泛型讓聲明方法返回子類型的方法

    淺談Java泛型讓聲明方法返回子類型的方法

    下面小編就為大家?guī)硪黄獪\談Java泛型讓聲明方法返回子類型的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 使用Java實現(xiàn)簽字功能的示例代碼

    使用Java實現(xiàn)簽字功能的示例代碼

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)簽字功能,同時支持將簽字圖像保存為PNG格式和將簽字添加到PDF文檔中,感興趣的可以了解下
    2024-02-02

最新評論