【第5章】Spring Cloud之Nacos服务注册和服务发现

news2024/9/22 7:35:26

文章目录

  • 前言
  • 一、提供者
    • 1. 引入依赖
    • 2.配置 Nacos Server 地址
    • 3. 开启服务注册
  • 二、消费者
    • 1. 引入依赖
    • 2.配置 Nacos Server 地址
    • 3. 开启服务注册
  • 三、服务列表
  • 四、服务发现
    • 1. 获取服务列表
    • 2. 测试
      • 2.1 获取所有服务
      • 2.2 根据服务名获取服务信息
  • 五、更多配置项
  • 总结


前言

本节通过实现一个简单的 echo service 演示如何在您的 Spring Cloud 项目中启用 Nacos 的服务注册和发现功能,如下图示:
在这里插入图片描述


一、提供者

1. 引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置 Nacos Server 地址

${NACOS_SERVER_ADDR}是配置的环境变量

server:
  port: 9002
spring:
  application:
    name: provider-service
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR}
        username: nacos
        password: nacos

在使用 Nacos 服务发现和配置功能时,一定要配置 username 和 password 属性,否则会出现用户未找到异常!

3. 开启服务注册

package org.example.nacos.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryProviderApplication {

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

}

二、消费者

1. 引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置 Nacos Server 地址

server:
  port: 9000
spring:
  application:
    name: consumer-service
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR}
        username: nacos
        password: nacos

3. 开启服务注册

package org.example.nacos.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryConsumerApplication {

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

}

三、服务列表

在这里插入图片描述

四、服务发现

1. 获取服务列表

我们在消费者项目中获取nacos中的服务列表,并打印出来。

package org.example.nacos.consumer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

/**
 * Create by zjg on 2024/7/15
 */
@RequestMapping("/nacos/")
@RestController
public class NacosDiscoveryController {
    @Autowired
    DiscoveryClient discoveryClient;
    @RequestMapping("discovery")
    public void discovery(){
        List<String> services = discoveryClient.getServices();
        services.forEach(System.out::println);
    }
    @RequestMapping("discovery/instance")
    public void discovery(@RequestParam("serviceId") String serviceId){
        List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);
        instances.forEach(instance->{
            System.out.println(instance.getHost()+":"+instance.getPort());
        });
    }
}

新版本的@RequestParam(“serviceId”),用法略有改动,更加规范了,但是没那么灵活对开发者不是很友好!

2. 测试

2.1 获取所有服务

http://localhost:9000/nacos/discovery

consumer-service
provider-service

2.2 根据服务名获取服务信息

http://localhost:9000/nacos/discovery/instance?serviceId=provider-service

192.168.0.103:9002

五、更多配置项

配置项key默认值说明
服务端地址spring.cloud.nacos.discovery.server-addr
服务名spring.cloud.nacos.discovery.service${spring.application.name}注册到Nacos上的服务名称,默认值为应用名称
权重spring.cloud.nacos.discovery.weight1取值范围 1 到 100,数值越大,权重越大
网卡名spring.cloud.nacos.discovery.network-interface当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
注册的IP地址spring.cloud.nacos.discovery.ip优先级最高
注册的IP地址类型spring.cloud.nacos.discovery.ip-type双栈地址可以配置IPv4和IPv6两种类型,如果网卡同类型IP地址存在多个,希望制定特定网段地址,可使用spring.cloud.inetutils.preferred-networks配置筛选地址
注册的端口spring.cloud.nacos.discovery.port-1默认情况下不用配置,会自动探测
命名空间spring.cloud.nacos.discovery.namespace常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
AccessKeyspring.cloud.nacos.discovery.access-key
SecretKeyspring.cloud.nacos.discovery.secret-key
Metadataspring.cloud.nacos.discovery.metadata使用Map格式配置
日志文件名spring.cloud.nacos.discovery.log-name
集群spring.cloud.nacos.discovery.cluster-nameDEFAULT Nacos集群名称
接入点spring.cloud.nacos.discovery.endpoint地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否集成LoadBalancerspring.cloud.loadbalancer.nacos.enabledfalse
是否开启Nacos Watchspring.cloud.nacos.discovery.watch.enabledfalse可以设置成true来开启 watch
是否启用Nacosspring.cloud.nacos.discovery.enabledtrue默认启动,设置为false时会关闭自动向Nacos注册的功能
用户名spring.cloud.nacos.discovery.usernamenacos
密码spring.cloud.nacos.discovery.passwordnacos

总结

回到顶部
中文文档
官方案例

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql对数据库的增删改

目录 DML语句&#xff1a; 增加数据&#xff08;insert语句&#xff09; 增加数据&#xff08;insert into select&#xff09; 修改数据&#xff08;update语句&#xff09; 【where 子句条件】 删除数据&#xff08;delete语句&#xff09; 删除数据&#xff08;trunca…

内网隧道——Earthworm(EW)

文章目录 一、EW介绍二、一层网络2.1 一层正向代理2.2 一层反向代理 三、两层网络3.1 二层正向代理3.2 二层反向代理 一、EW介绍 下载地址&#xff1a;EW 常用的命令格式&#xff1a; 参数作用Ssocksd正向代理Rcsock反向代理客户端Rssocks反向代理服务端Lcx_slave一侧通过反弹…

基于SpringBoot的矩形范围面时空分析-以震中附近历史地震为例

目录 前言 1、分析的必要性 2、分析的紧迫性 一、数据库物理模型及空间分析实现 1、数据库物理模型 2、空间数据库中的空间查询分析 二、Java后台程序开发 1、模型层设计 2、业务层的设计与实现 三、WebGIS功能设计与实现 1、同时展示4幅地图 2、初始化地图 3、展示…

算法日记day 18(二叉树的所有路径|左叶子之和)

一、二叉树的所有路径 题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->…

福州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着制造业的转型升级&#xff0c;智能制造已成为行业发展的重要趋势。福州高校大学智能制造实验室作为该领域的重要研究基地&#xff0c;积极响应国家发展战略&#xff0c;不断探索和创新智能制造技术。数字孪生技术作为智能制造领域的前沿技术&#xff0c;通过将物理世界的实…

基于ansible进行运维自动化的研究以及相关的属性

一、ansible-简介 介绍 ansible是新出现的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c; 实现了批量系统配置、批量程序部署、批量运行命令等功能。 无客户端。 …

基于区块链技术的中药饮片代煎配送服务与监管平台

业务背景 近年来&#xff0c;随着公众对中医药青睐有加&#xff0c;中药代煎服务作为中医药现代化的重要一环&#xff0c;在全国各地蓬勃兴起。鉴于传统煎煮方式的繁琐耗时&#xff0c;医疗机构纷纷转向与第三方中药饮片企业合作&#xff0c;采用集中代煎模式。这些第三方煎药中…

【数据结构】链表(单链表实现 + 详解 + 原码)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

uni-app AppStore Connect上传拒绝汇总

1.Guideline 2.3.3 - Performance - Accurate Metadata 问题是图片不对&#xff0c;最好是自己截图&#xff0c;然后用香蕉云编 上传图片合成图片 2.Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing 解决办法&#xff1a;在uniapp manifest.json找到 APP常用其他…

LabVIEW汽车动态信号模拟系统

随着汽车工业的快速发展&#xff0c;对汽车电子控制单元&#xff08;ECU&#xff09;的测试与仿真需求日益增加。开发了一种基于LabVIEW软件开发的汽车动态信号模拟系统&#xff0c;该系统能有效模拟ECU在实车环境下的工作状态&#xff0c;为ECU的开发和测试提供了一个高效、经…

react中如何mock数据

1.需求说明 因为前后端分离开发项目&#xff0c;就会存在前端静态页面写好了&#xff0c;后端数据接口还没写好&#xff1b;这时候前端就需要自己定义数据来使用。 定义数据有三种方式&#xff1a;直接写死数据、使用mock软件、json-server工具 这里讲解通过json-server工具…

C# 匿名函数与Lambda表达式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 1.匿名函数 在 C# 中&#xff0c;匿名函数是一种没有名称的函数&#xff0c;可以直接在代码中定义和使用 匿名函数主要有两种形式&#xff1a;匿名方法和Lambda 表…

Jetpack Compose多页面跳转示例

示例&#xff1a; 使用Jetpack Compose开发android,实现功能&#xff1a;第1个界面有一个文本输入框输入消费金额&#xff0c;下面有个确定按钮&#xff0c;点击确定按钮后跳转到第2个界面&#xff0c;显示你的消费金额是XX,这个金额来自第1个界面的输入。 实操 使用 Jetpack …

C语言实现顺序结构二叉树-堆

文章目录 &#x1f3af;引言&#x1f453;C语言实现顺序结构二叉树-堆1.树的概念与结构1.1概念与结构1.2树的相关术语 2.二叉树2.1概念与结构2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树 3.二叉树的存储结构3.1顺序存储3.2链式存储 4.堆的实现4.1堆的概念与结构4.2向上调增算…

AI+HPC 部署优化面试范围分享

背景 最近几年生成式AI技术和自动驾驶技术发展发展很快&#xff0c;这些行业对于算法的运行效率有很高的要求&#xff0c;尤其一个模型在训练完成后运行到设备上&#xff0c;需要大量的工作&#xff0c;包括模型的剪枝、蒸馏、压缩、量化、算子优化、系统优化等。 对于传统的…

浏览器的最大并发数(http1.1)

HTTP/1.1&#xff1a;每个资源请求通常需要单独的TCP连接&#xff0c;尽管支持Keep-Alive机制&#xff0c;允许在同一个TCP连接上连续发送多个请求。但通常浏览器限制并发TCP连接数&#xff08;例如&#xff0c;每个域名最多6个并发连接&#xff09;。 HTTP/2&#xff1a;引入…

C++:函数对象和函数调用运算符(函数、函数指针、lambda函数对象、bind创建的对象、重载了函数调用符的类对象)

函数对象和函数调用运算符 A.What&#xff08;函数对象&#xff09; 如果类定义了函数调用运算符&#xff0c;则该类的对象称为函数对象 其中重载的运算符operator()被称为函数调用运算符 B.Which&#xff08;有哪些可调用函数对象&#xff09; 函数&#xff1a;一般函数&…

UE4-打包游戏,游戏模式,默认关卡

一.打包游戏 注意windows系统无法打包苹果系统的执行包&#xff0c;只能使用苹果系统打包。 打包完之后是一个.exe文件。 打包要点&#xff1a; 1.确定好要操控的角色和生成位置。 2.设置默认加载的关卡和游戏模式。 在这个界面可以配置游戏的默认地图和游戏的模式&#xff0c;…

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…

C#知识|账号管理系统:实现修改管理员登录密码

哈喽,你好啊,我是雷工! 本节主要记录实现修改管理员登录密码的后端逻辑及相关功能,以下为学习笔记。 01 实现逻辑 ①:首先输入原密码,验证,验证通过然后可以输入新密码进行修改; ②:新密码修改为了避免输入失误导致输入的密码与自己以为修改的密码不符的情况,增加了…