当前位置:首页 > 科技  > 软件

Nacos注册中心有几种调用方式?

来源: 责编: 时间:2023-10-30 17:24:45 430观看
导读Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式?1、什么是注册中心?注册中心(Registry)是一种用于服务发现和服

r8C28资讯网——每日最新资讯28at.com

Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式?r8C28资讯网——每日最新资讯28at.com

1、什么是注册中心?

注册中心(Registry)是一种用于服务发现和服务注册的分布式系统组件。它是在微服务架构中起关键作用的一部分,用于管理和维护服务实例的信息以及它们的状态。r8C28资讯网——每日最新资讯28at.com

它的执行流程如下图所示:r8C28资讯网——每日最新资讯28at.com

r8C28资讯网——每日最新资讯28at.com

注册中心充当了服务之间的中介和协调者,它的主要功能有以下这些:r8C28资讯网——每日最新资讯28at.com

  • 服务注册:服务提供者将自己的服务实例信息(例如 IP 地址、端口号、服务名称等)注册到注册中心。通过注册中心,服务提供者可以将自己的存在告知其他服务。
  • 服务发现:服务消费者通过向注册中心查询服务信息,获取可用的服务实例列表。通过注册中心,服务消费者可以找到并连接到需要调用的服务。
  • 健康检查与负载均衡:注册中心可以定期检查注册的服务实例的健康状态,并从可用实例中进行负载均衡,确保请求可以被正确地转发到可用的服务实例。
  • 动态扩容与缩容:在注册中心中注册的服务实例信息可以方便地进行动态的增加和减少。当有新的服务实例上线时,可以自动地将其注册到注册中心。当服务实例下线时,注册中心会将其从服务列表中删除。

使用注册中心有以下优势和好处:r8C28资讯网——每日最新资讯28at.com

  • 服务自动发现和负载均衡:服务消费者无需手动配置目标服务的地址,而是通过注册中心动态获取可用的服务实例,并通过负载均衡算法选择合适的实例进行调用。
  • 服务弹性和可扩展性:新的服务实例可以动态注册,并在发生故障或需要扩展时快速提供更多的实例,从而提供更高的服务弹性和可扩展性。
  • 中心化管理和监控:注册中心提供了中心化的服务管理和监控功能,可以对服务实例的状态、健康状况和流量等进行监控和管理。
  • 降低耦合和提高灵活性:服务间的通信不再直接依赖硬编码的地址,而是通过注册中心进行解耦,使得服务的部署和变更更加灵活和可控。

常见的注册中心包括 ZooKeeper、Eureka、Nacos 等。这些注册中心可以作为微服务架构中的核心组件,用于实现服务的自动发现、负载均衡和动态扩容等功能。r8C28资讯网——每日最新资讯28at.com

2、方法概述

当 Nacos 中注册了 Restful 接口时(一种软件架构风格,它是基于标准的 HTTP 协议和 URI 的一组约束和原则),其调用方式主要有以下两种:r8C28资讯网——每日最新资讯28at.com

  • 使用 RestTemplate + Spring Cloud LoadBalancer。
  • 使用 OpenFeign + Spring Cloud LoadBalancer。

3、RestTemplate+LoadBalancer调用

此方案的实现有以下 3 个关键步骤:r8C28资讯网——每日最新资讯28at.com

  • 添加依赖:nacos + loadbalancer。
  • 设置配置文件。
  • 编写调用代码。

具体实现如下。r8C28资讯网——每日最新资讯28at.com

(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>

(2)设置配置文件

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

(3)编写调用代码

此步骤又分为以下两步:r8C28资讯网——每日最新资讯28at.com

  1. 给 RestTemplate 增加 LoadBalanced 支持。
  2. 使用 RestTemplate 调用接口。

RestTemplate添加LoadBalanced

在 Spring Boot 启动类上添加“@EnableDiscoveryClient”注解,并使用“@LoadBalanced”注解替换 IoC 容器中的 RestTemplate,具体实现代码如下:r8C28资讯网——每日最新资讯28at.com

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@EnableDiscoveryClientpublic class BusinessApplication {    @LoadBalanced    @Bean    public RestTemplate restTemplate() {        return new RestTemplate();    }    public static void main(String[] args) {        SpringApplication.run(BusinessApplication.class, args);    }}

使用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调用

此步骤又分为以下 5 步:r8C28资讯网——每日最新资讯28at.com

  • 添加依赖:nacos + openfeign + loadbalancer
  • 设置配置文件
  • 开启 openfeign 支持
  • 编写 service 代码
  • 调用 service 代码

具体实现如下。r8C28资讯网——每日最新资讯28at.com

(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>

(2)设置配置文件

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

(3)开启OpenFeign

在 Spring Boot 启动类上添加 @EnableFeignClients 注解。r8C28资讯网——每日最新资讯28at.com

(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 为生产者的服务名public interface UserService {    @RequestMapping("/user/getinfo") // 调用生产者的接口    String getInfo(@RequestParam String name);}

(5)调用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;@RestControllerpublic class OrderController {    @Autowired    private UserService userService;    @RequestMapping("/order")    public String getOrder(@RequestParam String name){        return userService.getInfo(name);    }}

5、获取本文源码

因平台不能上传附件,所以想要获取本文完整源码,请联系我:gg_stone,备注:Nacos 源码,不然不予通过。r8C28资讯网——每日最新资讯28at.com

6、版本说明

本文案例基于以下版本:r8C28资讯网——每日最新资讯28at.com

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

7、小结

注册中心作为微服务中不可或缺的重要组件,在微服务中充当着中介和协调者的作用。而 Nacos 作为近几年来,国内最热门的注册中心,其 Restf 接口调用有两种方式:RestTemplate + LoadBalancer 和 OpenFeign + LoadBalancer,开发者可以根据自己的实际需求,选择相应的调用方式。r8C28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-15888-0.htmlNacos注册中心有几种调用方式?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Python 制作微博抓取 GUI 程序

下一篇: 利用Docker容器化构建可移植的分布式应用程序

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • 3699元!iQOO Neo8 Pro顶配版今日首销:1TB UFS 4.0同价位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更是首发搭载了联发科天玑9200+旗舰
  • iQOO Neo8 Pro即将开售:到手价3099元起 安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
Top