欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.什么是注冊中心?

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

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

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

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

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

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

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

2.方法概述

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

  • 使用 RestTemplate + Spring Cloud LoadBalancer

使用 OpenFeign + Spring Cloud LoadBalancer

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

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

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

具體實現(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 啟動類上添加“@EnableDiscoveryClient”注解,并使用“@LoadBalanced”注解替換 IoC 容器中的 RestTemplate,具體實現(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 代碼

具體實現(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 啟動類上添加 @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)者的服務名
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.獲取本文源碼

因平臺不能上傳附件,所以想要獲取本文完整源碼,請聯(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é)

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

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

相關(guān)文章

  • 使用jquery 的ajax 與 Java servlet的交互代碼實例

    使用jquery 的ajax 與 Java servlet的交互代碼實例

    這篇文章主要介紹了使用jquery 的ajax 與 Java servlet的交互代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Java求兩集合的交集、并集、差集實例

    Java求兩集合的交集、并集、差集實例

    這篇文章主要介紹了Java求兩集合的交集、并集、差集實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • maven?scope?provided和runtime的例子說明

    maven?scope?provided和runtime的例子說明

    這篇文章主要介紹了maven?scope?provided和runtime的例子說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Maven學習----Maven安裝與環(huán)境變量配置教程

    Maven學習----Maven安裝與環(huán)境變量配置教程

    這篇文章主要給大家介紹了關(guān)于如何利用Maven入手Spring Boot第一個程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • servlet基礎(chǔ)知識_動力節(jié)點Java學院整理

    servlet基礎(chǔ)知識_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了servlet基礎(chǔ)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Struts2實現(xiàn)單文件或多文件上傳功能

    Struts2實現(xiàn)單文件或多文件上傳功能

    這篇文章主要為大家詳細介紹了Struts2實現(xiàn)單文件或多文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • springboot將lib和jar分離的操作方法

    springboot將lib和jar分離的操作方法

    本文介紹了如何通過優(yōu)化pom.xml配置來減小Spring Boot項目的jar包大小,主要通過使用spring-boot-maven-plugin和maven-dependency-plugin插件,將依賴庫打包到j(luò)ar中,并通過指定外部lib路徑的方式運行jar,從而減小jar包體積,感興趣的朋友一起看看吧
    2025-02-02
  • SpringBoot中使用攔截器的配置詳解

    SpringBoot中使用攔截器的配置詳解

    這篇文章主要介紹了SpringBoot中使用攔截器的配置詳解,攔截器是?AOP?的一種實現(xiàn),專門攔截對動態(tài)資源的后臺請求,即攔截對控制層的請?求,使用場景比較多的是判斷用戶是否有權(quán)限請求后臺,需要的朋友可以參考下
    2024-01-01
  • 解決java調(diào)用dll報Unable to load library錯誤的問題

    解決java調(diào)用dll報Unable to load library錯誤的問題

    這篇文章主要介紹了解決java調(diào)用dll報Unable to load library錯誤的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java服務端性能優(yōu)化之JVM垃圾回收策略詳解

    Java服務端性能優(yōu)化之JVM垃圾回收策略詳解

    JVM垃圾回收策略涵蓋了基本原理、常見策略(如SerialGC、ParallelGC、CMS、G1GC)以及優(yōu)化建議,選擇合適的策略和調(diào)整參數(shù),如堆大小和GC日志,可以提高應用性能和響應速度,持續(xù)監(jiān)控和分析是關(guān)鍵步驟
    2025-03-03

最新評論