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

Nacos注冊(cè)中心的幾種調(diào)用方式詳解

 更新時(shí)間:2023年10月30日 10:13:01   作者:Java中文社群  
Spring Cloud Alibaba Nacos 作為近幾年最熱門的注冊(cè)中心和配置中心,也被國內(nèi)無數(shù)公司所使用,本文就來看下 Nacos 作為注冊(cè)中心時(shí),調(diào)用它的接口有幾種方式

1.什么是注冊(cè)中心?

注冊(cè)中心(Registry)是一種用于服務(wù)發(fā)現(xiàn)和服務(wù)注冊(cè)的分布式系統(tǒng)組件。它是在微服務(wù)架構(gòu)中起關(guān)鍵作用的一部分,用于管理和維護(hù)服務(wù)實(shí)例的信息以及它們的狀態(tài)。

它的執(zhí)行流程如下圖所示:

注冊(cè)中心充當(dāng)了服務(wù)之間的中介和協(xié)調(diào)者,它的主要功能有以下這些:

  • 服務(wù)注冊(cè):服務(wù)提供者將自己的服務(wù)實(shí)例信息(例如 IP 地址、端口號(hào)、服務(wù)名稱等)注冊(cè)到注冊(cè)中心。通過注冊(cè)中心,服務(wù)提供者可以將自己的存在告知其他服務(wù)。
  • 服務(wù)發(fā)現(xiàn):服務(wù)消費(fèi)者通過向注冊(cè)中心查詢服務(wù)信息,獲取可用的服務(wù)實(shí)例列表。通過注冊(cè)中心,服務(wù)消費(fèi)者可以找到并連接到需要調(diào)用的服務(wù)。
  • 健康檢查與負(fù)載均衡:注冊(cè)中心可以定期檢查注冊(cè)的服務(wù)實(shí)例的健康狀態(tài),并從可用實(shí)例中進(jìn)行負(fù)載均衡,確保請(qǐng)求可以被正確地轉(zhuǎn)發(fā)到可用的服務(wù)實(shí)例。
  • 動(dòng)態(tài)擴(kuò)容與縮容:在注冊(cè)中心中注冊(cè)的服務(wù)實(shí)例信息可以方便地進(jìn)行動(dòng)態(tài)的增加和減少。當(dāng)有新的服務(wù)實(shí)例上線時(shí),可以自動(dòng)地將其注冊(cè)到注冊(cè)中心。當(dāng)服務(wù)實(shí)例下線時(shí),注冊(cè)中心會(huì)將其從服務(wù)列表中刪除。

使用注冊(cè)中心有以下優(yōu)勢(shì)和好處:

  • 服務(wù)自動(dòng)發(fā)現(xiàn)和負(fù)載均衡:服務(wù)消費(fèi)者無需手動(dòng)配置目標(biāo)服務(wù)的地址,而是通過注冊(cè)中心動(dòng)態(tài)獲取可用的服務(wù)實(shí)例,并通過負(fù)載均衡算法選擇合適的實(shí)例進(jìn)行調(diào)用。
  • 服務(wù)彈性和可擴(kuò)展性:新的服務(wù)實(shí)例可以動(dòng)態(tài)注冊(cè),并在發(fā)生故障或需要擴(kuò)展時(shí)快速提供更多的實(shí)例,從而提供更高的服務(wù)彈性和可擴(kuò)展性。
  • 中心化管理和監(jiān)控:注冊(cè)中心提供了中心化的服務(wù)管理和監(jiān)控功能,可以對(duì)服務(wù)實(shí)例的狀態(tài)、健康狀況和流量等進(jìn)行監(jiān)控和管理。
  • 降低耦合和提高靈活性:服務(wù)間的通信不再直接依賴硬編碼的地址,而是通過注冊(cè)中心進(jìn)行解耦,使得服務(wù)的部署和變更更加靈活和可控。

常見的注冊(cè)中心包括 ZooKeeper、Eureka、Nacos 等。這些注冊(cè)中心可以作為微服務(wù)架構(gòu)中的核心組件,用于實(shí)現(xiàn)服務(wù)的自動(dòng)發(fā)現(xiàn)、負(fù)載均衡和動(dòng)態(tài)擴(kuò)容等功能。

2.方法概述

當(dāng) Nacos 中注冊(cè)了 Restful 接口時(shí)(一種軟件架構(gòu)風(fēng)格,它是基于標(biāo)準(zhǔn)的 HTTP 協(xié)議和 URI 的一組約束和原則),其調(diào)用方式主要有以下兩種:

  • 使用 RestTemplate + Spring Cloud LoadBalancer

使用 OpenFeign + Spring Cloud LoadBalancer

3.RestTemplate+LoadBalancer調(diào)用

此方案的實(shí)現(xiàn)有以下 3 個(gè)關(guān)鍵步驟:

  • 添加依賴:nacos + loadbalancer
  • 設(shè)置配置文件
  • 編寫調(diào)用代碼

具體實(shí)現(xiàn)如下。

3.1 添加依賴

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

3.2 設(shè)置配置文件

spring:
  application:
    name: nacos-discovery-business
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        username: nacos
        password: nacos
        register-enabled: false

3.3 編寫調(diào)用代碼

此步驟又分為以下兩步:

  • 給 RestTemplate 增加 LoadBalanced 支持

使用 RestTemplate 調(diào)用接口

3.3.1 RestTemplate添加LoadBalanced

在 Spring Boot 啟動(dòng)類上添加“@EnableDiscoveryClient”注解,并使用“@LoadBalanced”注解替換 IoC 容器中的 RestTemplate,具體實(shí)現(xiàn)代碼如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
public class BusinessApplication {
 @LoadBalanced
 @Bean
 public RestTemplate restTemplate() {
     return new RestTemplate();
 }
 public static void main(String[] args) {
     SpringApplication.run(BusinessApplication.class, args);
 }
}

3.3.2 使用RestTemplate

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/business")
public class BusinessController2 {
 @Autowired
 private RestTemplate restTemplate;
 @RequestMapping("/getnamebyid")
 public String getNameById(Integer id){
     return restTemplate.getForObject("http://nacos-discovery-demo/user/getnamebyid?id="+id,
             String.class);
 }
}

4.OpenFeign+LoadBalancer調(diào)用

此步驟又分為以下 5 步:

  • 添加依賴:nacos + openfeign + loadbalancer
  • 設(shè)置配置文件
  • 開啟 openfeign 支持
  • 編寫 service 代碼
  • 調(diào)用 service 代碼

具體實(shí)現(xiàn)如下。

4.1 添加依賴

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
 <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

4.2 設(shè)置配置文件

spring:
  application:
    name: nacos-discovery-business
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        username: nacos
        password: nacos
        register-enabled: false

4.3 開啟OpenFeign

在 Spring Boot 啟動(dòng)類上添加 @EnableFeignClients 注解。

4.4 編寫Service

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Service
@FeignClient(name = "nacos-producer") // name 為生產(chǎn)者的服務(wù)名
public interface UserService {
    @RequestMapping("/user/getinfo") // 調(diào)用生產(chǎn)者的接口
    String getInfo(@RequestParam String name);
}

4.5 調(diào)用Service

import com.example.consumer.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderController {
    @Autowired
    private UserService userService;
    @RequestMapping("/order")
    public String getOrder(@RequestParam String name){
        return userService.getInfo(name);
    }
}

5.獲取本文源碼

因平臺(tái)不能上傳附件,所以想要獲取本文完整源碼,請(qǐng)聯(lián)系我:gg_stone,備注:Nacos 源碼,不然不予通過。

6.版本說明

本文案例基于以下版本:

  • JDK 17
  • Spring Boot 3.x
  • Spring Cloud Alibaba 2022.0.0.0
  • Nacos 2.2.3

7.小結(jié)

注冊(cè)中心作為微服務(wù)中不可或缺的重要組件,在微服務(wù)中充當(dāng)著中介和協(xié)調(diào)者的作用。而 Nacos 作為近幾年來,國內(nèi)最熱門的注冊(cè)中心,其 Restf 接口調(diào)用有兩種方式:RestTemplate + LoadBalancer 和 OpenFeign + LoadBalancer,開發(fā)者可以根據(jù)自己的實(shí)際需求,選擇相應(yīng)的調(diào)用方式。

以上就是Nacos注冊(cè)中心有幾種調(diào)用方式?的詳細(xì)內(nèi)容,更多關(guān)于Nacos注冊(cè)中調(diào)用方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)戰(zhàn)項(xiàng)目之記賬軟件

    java實(shí)戰(zhàn)項(xiàng)目之記賬軟件

    這篇文章主要介紹了java實(shí)戰(zhàn)項(xiàng)目之記賬軟件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • java實(shí)現(xiàn)在pdf模板的指定位置插入圖片

    java實(shí)現(xiàn)在pdf模板的指定位置插入圖片

    這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)在pdf模板的指定位置插入圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Mybatis-plus通用查詢方法封裝的實(shí)現(xiàn)

    Mybatis-plus通用查詢方法封裝的實(shí)現(xiàn)

    本文主要介紹了Mybatis-plus通用查詢方法封裝的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • JAVA的發(fā)展前景如何好不好自學(xué)

    JAVA的發(fā)展前景如何好不好自學(xué)

    這篇文章主要介紹了JAVA的發(fā)展前景如何好不好自學(xué),很多朋友想自學(xué)java不知道好不好學(xué),能不能學(xué)會(huì),今天小編給大家分享一篇教程關(guān)于java的發(fā)展前景的文章,需要的朋友可以參考下
    2020-06-06
  • java 音頻轉(zhuǎn)換wav格式標(biāo)準(zhǔn)音頻的操作

    java 音頻轉(zhuǎn)換wav格式標(biāo)準(zhǔn)音頻的操作

    這篇文章主要介紹了java 音頻轉(zhuǎn)換wav格式標(biāo)準(zhǔn)音頻的操作,主要是使用ffmpeg命令進(jìn)行轉(zhuǎn)換,該工具類主要是為了將各類音頻轉(zhuǎn)為wav標(biāo)準(zhǔn)格式,其中可以調(diào)節(jié)采樣率、聲道數(shù)等指標(biāo),依賴maven環(huán)境,需要的朋友可以參考下
    2021-10-10
  • java迭代器和for循環(huán)優(yōu)劣詳解

    java迭代器和for循環(huán)優(yōu)劣詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于java迭代器和for循環(huán)優(yōu)劣詳解內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • Java實(shí)現(xiàn)MySQL數(shù)據(jù)實(shí)時(shí)同步至Elasticsearch的方法詳解

    Java實(shí)現(xiàn)MySQL數(shù)據(jù)實(shí)時(shí)同步至Elasticsearch的方法詳解

    MySQL擅長事務(wù)處理,而Elasticsearch(ES)則專注于搜索與分析,將MySQL數(shù)據(jù)實(shí)時(shí)同步到ES,可以充分發(fā)揮兩者的優(yōu)勢(shì),下面我們就來看看如何使用Java實(shí)現(xiàn)這一功能吧
    2025-03-03
  • springboot?sleuth?日志跟蹤問題記錄

    springboot?sleuth?日志跟蹤問題記錄

    Spring?Cloud?Sleuth是一個(gè)在應(yīng)用中實(shí)現(xiàn)日志跟蹤的強(qiáng)有力的工具,使用Sleuth庫可以應(yīng)用于計(jì)劃任務(wù)?、多線程服務(wù)或復(fù)雜的Web請(qǐng)求,尤其是在一個(gè)由多個(gè)服務(wù)組成的系統(tǒng)中,這篇文章主要介紹了springboot?sleuth?日志跟蹤,需要的朋友可以參考下
    2023-07-07
  • java調(diào)用mysql存儲(chǔ)過程實(shí)例分析

    java調(diào)用mysql存儲(chǔ)過程實(shí)例分析

    這篇文章主要介紹了java調(diào)用mysql存儲(chǔ)過程的方法,以實(shí)例形式較為詳細(xì)的分析了mysql數(shù)據(jù)庫的建立和存儲(chǔ)過程的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-06-06
  • 一文帶你全面了解Java?Hashtable

    一文帶你全面了解Java?Hashtable

    HashTable是jdk?1.0中引入的產(chǎn)物,基本上現(xiàn)在很少使用了,但是會(huì)在面試中經(jīng)常被問到。本文就來帶大家一起深入了解一下Hashtable,需要的可以參考一下
    2022-09-09

最新評(píng)論

广州市| 固安县| 东乌| 龙海市| 和平县| 蒲城县| 镇宁| 桃园市| 筠连县| 长顺县| 伊宁县| 新野县| 额济纳旗| 宿州市| 称多县| 苏尼特左旗| 嘉义市| 离岛区| 武宁县| 蒲城县| 隆德县| 健康| 松江区| 云南省| 互助| 望都县| 五大连池市| 屏边| 五寨县| 抚州市| 万安县| 慈溪市| 鹤岗市| 阿拉善左旗| 安达市| 滨州市| 柳河县| 女性| 永福县| 青龙| 上林县|