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

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

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

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

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

1、什么是注册中心?

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

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

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

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

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

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

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

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

2、方法概述

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

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

3、RestTemplate+LoadBalancer调用

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

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

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

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

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

RestTemplate添加LoadBalanced

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

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

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

6、版本说明

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

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

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

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

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

标签:
  • 热门焦点
  • 小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 质感不错!OPPO K11渲染图曝光:旗舰IMX890传感器首次下放

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
Top