SpringCloud-用nacos做服务注册与调用

步骤1:下载和安装Nacos 首先,你需要从Nacos的官方网站上下载并安装Nacos Server。根据你的操作系统选择合适的版本,并按照官方文档中的说明进行安装和配置。

 步骤2:创建Spring Boot项目 在你喜欢的IDE中创建一个新的Spring Boot项目,命名为"demo-service"。确保将依赖管理方式设置为Maven,并添在父POM加如下的依赖:

<!-- 引入 spring-cloud模块 -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Spring Cloud Alibaba -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring-cloud-alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

步骤3:配置Nacos连接信息 打开"application.properties"或"application.yml"文件,添加以下配置,其中,"server-addr"为Nacos Server的地址和端口号,根据你的安装配置进行修改。

spring.application.name=demo-service
server.port=8080

spring.cloud.nacos.discovery.server-addr=localhost:8848

步骤4:启用服务注册与发现 在Spring Boot应用程序的入口类(通常是带有@SpringBootApplication注解的类)上添加@EnableDiscoveryClient注解,启用Nacos的服务注册与发现功能。

步骤5:注册服务 对于需要注册到Nacos的服务,你可以在相应的Controller类中添加@RestContoller和@RequestMapping注解,创建REST接口

步骤6:启动应用程序 使用IDE或者命令行启动应用程序。应用程序会自动注册到Nacos Server,并将自己的地址和端口信息注册到服务注册表中。

步骤7:查看服务列表 访问Nacos的控制台,在服务列表中应该能看到你注册的服务信息。你可以查看服务的节点信息、健康状态等。 

至此,你已经成功地使用Nacos实现了服务注册与发现。

步骤8:多个服务之间调用,在需要调用已注册的服务的地方,可以使用RestTemplate来发起HTTP请求并调用服务。在Spring Boot中使用RestTemplate非常方便,以下是一个简单的例子: 

@Autowired
private RestTemplate restTemplate;

@GetMapping("/call-demo-service")
public String callDemoService() {
    String demoServiceUrl = "http://demo-service/api/hello"; // 指向已注册服务的REST接口路径
    return restTemplate.getForObject(demoServiceUrl, String.class);
}

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

负载均衡:当在RestTemplate中加上@LoadBalanced注解时,可以实现负载均衡的功能,即在调用多个相同服务提供者的情况下,能够均衡地分配请求到不同的服务实例上。以下是使用@LoadBalanced注解的示例代码:

import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerServiceApplication {

   @Bean
   @LoadBalanced
   public RestTemplate restTemplate() {
       return new RestTemplate();
   }

   @Autowired
   private RestTemplate restTemplate;

   @GetMapping("/call-demo-service")
   public String callDemoService() {
       String demoServiceUrl = "http://demo-service/api/hello";
       return restTemplate.getForObject(demoServiceUrl, String.class);
   }

   public static void main(String[] args) {
       SpringApplication.run(ConsumerServiceApplication.class, args);
   }

}

在上述代码中,通过在RestTemplate的@Bean方法上添加@LoadBalanced注解,使得RestTemplate具备了负载均衡的能力。这样,在调用"demo-service"服务的REST接口时,RestTemplate将会自动选择一个可用的服务实例进行调用,实现了负载均衡的效果。

即:nacos中同一个服务名可以对应多个端口的应用,在调用的时候加上@LoadBalanced注解,他会自己去分配调用哪个端口的应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431800.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

表格制作一对多,多对多

<!-- <tr><td>第1行第1列</td><td>第1行第2列</td></tr><tr><td rowspan"4">第2行第1列</td><td colspan"2">第2行第2列</td><td colspan"3">第2行第2列</td>…

Nodejs 第四十六章(redis持久化)

redis持久化 Redis提供两种持久化方式&#xff1a; RDB&#xff08;Redis Database&#xff09;持久化&#xff1a;RDB是一种快照的形式&#xff0c;它会将内存中的数据定期保存到磁盘上。可以通过配置Redis服务器&#xff0c;设置自动触发RDB快照的条件&#xff0c;比如在指…

消息队列-kafka-服务端处理架构(架构,Topic文件结构,服务端数据的一致性)

服务端处理架构 资料来源于网络 网络线程池&#xff1a; 接受请求&#xff0c;num.network.threads&#xff0c;默认为 3&#xff0c;专门处理客户的发送的请求。 IO 线程池&#xff1a; num.io.threads&#xff0c;默认为 8&#xff0c;专门处理业务请求。也就是它不负责发…

[网鼎杯 2020 半决赛]AliceWebsite --不会编程的崽

网鼎杯某些题还是很简单嘛&#xff0c;比如这题 有交互界面先去交互看看 斯&#xff0c;actionabout.php?有一种可能是存在任意文件读取,试一下/etc/passwd 看来猜想正确&#xff0c;直接读取根目录的flag

001-JS数据类型及判断

JS数据类型及判断 1、数据类型2、数据类型判断方法3、JS的假值 1、数据类型 JavaScript 包含 6 中基本数据类型 和 引用类型&#xff1a; 6种基本类型&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、空&#xff08;Null&#xff09;、未定义…

Nginx使用—http基础知识

web访问流程 当我们在客户端通过浏览器输入网址的时候&#xff0c;这时候是访问不到服务器的&#xff0c; 先会去找到DNS解析服务器&#xff0c;DNS解析服务器返回IP地址&#xff0c; 客户端通过http协议向服务端发送请求&#xff0c;服务器响应请求并返回对应的资源给客户端&a…

RS232串口硬件调试

视频链接&#xff08;1~4&#xff09; RS232串口硬件调试01---串口理论及报文格式_哔哩哔哩_bilibili RS232串口硬件调试02---示波器抓取串口波形_哔哩哔哩_bilibili RS232串口硬件调试03---串口波形解析_哔哩哔哩_bilibili RS232串口硬件调试04---串口bug如何解决_哔哩哔哩…

Cookie和session 及Web相关工具

一 Cookie &#xff08;一&#xff09;介绍 Cookie 又称为"小甜饼”。类型为"小型文本文件”&#xff0c;指某些网站为了辨别用户身份而储存在用户本地终端&#xff08;Client Side&#xff09;上的数据&#xff08;通常经过加密&#xff09;。由网景公司的前雇员…

C++ 创建链表并输出

目录 代码实现 输出结果 代码实现 #include <stdio.h> #include <stdlib.h> //#include <cstdio> //#include <vector> #include<iostream> #include<cstdlib> using namespace std;//定义一个结构体 ListNode的结构 struct ListNode…

保姆教程 Docker 部署微服务项目

大家好&#xff0c;我是奇兵。 文章比较长&#xff0c;请耐心看完&#xff01; 项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了&#xff0c;今天再出一期微服务项目的部署教程&#xff0c;用一种最简单的方法&#xff0c;带…

linux无法启动dhcp服务--Failed to start DHCPv4 Server Daemon.错误

linux dhcp服务搭建详细过程请看 linux系统dhcp服务部署 关于dhcp服务无法启动Failed to start DHCPv4 Server Daemon.错误 解决方法&#xff1a;虚拟网络编辑器中的也就是dhcp所要服务的子网ip地址要与dhcp.conf中的服务网段ip一致&#xff08;与上面subnet 192.168.1.0一致…

记录前端面试的一些笔试题(持续更新......)

文章目录 js相关数组去重数组对象去重 实现数组unshift数组扁平化tree型数据扁平化list数据转tree型数据 对象深拷贝防抖/节流函数柯里化函数管道 随便记录一些&#xff0c;面试或者工作中都会用到&#xff0c;实现的方法很多&#xff0c;这里只是一小部分&#xff0c;有更好的…

鸿蒙Harmony应用开发—ArkTS声明式开发(鼠标事件)

在鼠标的单个动作触发多个事件时&#xff0c;事件的顺序是固定的&#xff0c;鼠标事件默认透传。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。目前仅支持通过外接鼠标触发。 onHover onHover(event: …

BUUCTF-Misc-粽子的来历1

题目链接&#xff1a;BUUCTF在线评测 (buuoj.cn) 下载附件给了四个doc文件 用HXD打开看看 将乱码全部改成yy打开 保存后打开&#xff1a; 发现每行的字间距不相同&#xff0c;把大间距设为1小间距设为0试试 100100100001&#xff0c;flag为md5加密的值 最后得到flag{d473ee3d…

【Java JVM】对象回收判断

Java 对象回收判断是程序设计中至关重要的一环。在面向对象的编程中, 合理的对象回收策略直接影响着程序的性能和内存利用效率。 因此, 深入了解和准确判断 Java 对象的回收时机, 不仅可以优化程序的运行性能, 还能有效避免内存泄漏和资源浪费。 本文将简单的分析一下 JVM 中对…

【Java EE 】认识文件与Java文件操作

目录 &#x1f340;认识文件&#x1f338;树型结构组织 和 目录&#x1f338;文件路径&#xff08;Path&#xff09;&#x1f338;其他知识 &#x1f333;Java 中操作文件&#x1f338;File 概述&#x1f33b;属性&#x1f33b;构造方法&#x1f33b;方法 &#x1f338;代码示例…

stm32学习笔记:I2C通信协议原理和软件I2C读写MPU6050

概述 第一块&#xff1a;介绍协议规则&#xff0c;然后用软件模拟的形式来实现协议。 第二块&#xff1a;介绍STM32的iic外设&#xff0c;然后用硬件来实现协议。 程序一现象&#xff1a;通过软件I2C通信&#xff0c;对MPU6050芯片内部的寄存器进行读写&#xff0c;写入到配…

OJ输入问题+准备

写在之前&#xff1a; 发现题目输入是这样的&#xff1a; 我的问题&#xff1a;如何通过空格分割这些输入的字符串并分别保存&#xff01;&#xff01;&#xff08;C语言scanf好解决一点但我选择C....&#xff09; C引入了ostringstream、istringstream、stringstream这三个类…

【无标题】计算机主要应用于哪些领域

科学计算&#xff08;或称为数值计算&#xff09;、数据处理&#xff08;信息管理&#xff09;、辅助工程、生产自动化、人工智能。1、科学计算&#xff08;或称为数值计算&#xff09;&#xff1a;早期的计算机主要用于科学计算。目前&#xff0c;科学计算仍然是计算机应用的一…

计算机组成原理-累加器实验——沐雨先生

一、实验目的 1.理解累加器的概念和作用 2.连接运算器、存储器和累加器&#xff0c;熟悉计算机的数据通路 3.掌握使用微命令执行各种操作的方法。 二、实验要求 1.做好实验预习&#xff0c;读懂实验电路图&#xff0c;熟悉实验元器件的功能特性和使用方法。在实验之前设计…