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

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

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

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

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

1、什么是注册中心?

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

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

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

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

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

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

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

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

2、方法概述

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

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

3、RestTemplate+LoadBalancer调用

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

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

具体实现如下。d7V28资讯网——每日最新资讯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)编写调用代码

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

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

RestTemplate添加LoadBalanced

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

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

具体实现如下。d7V28资讯网——每日最新资讯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 注解。d7V28资讯网——每日最新资讯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 源码,不然不予通过。d7V28资讯网——每日最新资讯28at.com

6、版本说明

本文案例基于以下版本:d7V28资讯网——每日最新资讯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,开发者可以根据自己的实际需求,选择相应的调用方式。d7V28资讯网——每日最新资讯28at.com

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

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

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

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

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为&ldquo;纯欲天花板&rdquo;的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
Top