当前位置: 首页 > ai >正文

spring cloud alibaba nacos 服务注册

版本选择:链接

1. 下载安装

nacos下载:链接

1. 配置nacos的数据库

nacos-server-2.3.2.zip解压后,进入conf目录

  1. 创建nacos的数据库
    数据库文件: /nacos/conf/mysql-schema.sql
  2. 修改application.properties文件,创建数据库的名字,用户,密码修改配置文件
# nacos 使用的数据库配置
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
spring.datasource.platform=mysql
spring.sql.init.platform=mysql### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=123456

2. 启动nacos

进入nacos的bin目录

// 启动nacos
[root@centos9 bin]# ./startup.sh
// 关闭nacos
[root@centos9 bin]# ./shutdown.sh
// 查看nacos的运行情况
[root@centos9 bin]# cat /opt/springcloud/nacos/logs/start.out

当显示nacos图标时,nacos启动成功:

[root@centos9 bin]# cat /opt/springcloud/nacos/logs/start.out
/www/server/java/jdk-17.0.8/bin/java   -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/opt/springcloud/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/opt/springcloud/nacos/plugins,/opt/springcloud/nacos/plugins/health,/opt/springcloud/nacos/plugins/cmdb,/opt/springcloud/nacos/plugins/selector -Dnacos.home=/opt/springcloud/nacos -jar /opt/springcloud/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/opt/springcloud/nacos/conf/ --logging.config=/opt/springcloud/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288,--.,--.'|,--,:  : |                                           Nacos 2.3.2
,`--.'`|  ' :                       ,---.               Running in stand alone mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8848
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 1391567
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://192.168.3.234:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'

3. 登录配置中心

IP:8848/nacos

页面:
在这里插入图片描述

4. 关于鉴权,查看官网文档

官网关于鉴权的网页链接,查看网页中的服务端如何开启鉴权部分

2. 注册服务

参考 spring cloud alibaba 官网 ( 链接 )中 接入 Nacos 服务注册与发现 部分

1. 创建一个maven工程

不直接创建springboot项目,引入springbootweb的依赖,创建一个web工程

  • 截取部分pom
    <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.version>3.2.4</spring-boot.version><spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos 的服务注册依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.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></dependencies></dependencyManagement>

2. yml配置

server:port: 8001
spring:application:name: nacos-providercloud:nacos:server-addr: centos9-server:8848username: nacospassword: nacosdiscovery:
#        server-addr: ${spring.cloud.nacos.server-addr} # 默认值: ${spring.cloud.nacos.server-addr}
#        username: ${spring.cloud.nacos.username} # 默认值: ${spring.cloud.nacos.username}
#        password: ${spring.cloud.nacos.password} # 默认值: ${spring.cloud.nacos.password}

3. 启动web项目

启动后会在服务列表中看到
在这里插入图片描述

4. 注册端口9848

配置文件里设置server.port=8848 时,客户端会先通过 8848 端口获取 Nacos 服务器的元信息,其中就包含了 gRPC 端口信息,之后再使用 gRPC 端口 9848 来进行后续的服务注册与发现操作。

3. 服务配置

1. 命名空间

  1. 在nacos中创建命名空间
    在这里插入图片描述
  2. 在yml中指定命名空间,默认为public
    注意:namespace的值是命名空间ID
      discovery:
#        server-addr: ${spring.cloud.nacos.server-addr} # 默认值: ${spring.cloud.nacos.server-addr}
#        username: ${spring.cloud.nacos.username} # 默认值: ${spring.cloud.nacos.username}
#        password: ${spring.cloud.nacos.password} # 默认值: ${spring.cloud.nacos.password}namespace: 7749e5ab-e65b-4a5c-a36c-4978fadcfef3
  1. 启动项目
    会在相应的命名空间中看到注册的服务
    在这里插入图片描述

2. 分组名称

配置:group。 默认分组:DEFAULT_GROUP

  cloud:nacos:discovery:......service: provider-3-change-name # 服务名 默认值: ${spring.application.name}group: A-group  # 分组名称metadata: # 自定义元数据version: 1.0.0env: test

3. 服务名称

配置:service。 默认是spring.application.name的名字

  cloud:nacos:discovery:......service: provider-3-change-name # 服务名 默认值: ${spring.application.name}

在这里插入图片描述

4. 实例数

  • 命名空间、分组名称、服务名称3个都相同的就是相同的实例
  • 相同的实例应提供的服务是相同的
    在这里插入图片描述

5. 服务的元数据

配置:metadata。
metadata是map结构,key和value随意指定

  cloud:nacos:discovery:......metadata: # 自定义元数据version: 1.0.0env: test

在这里插入图片描述

6. 集群配置

相同的服务,分配在不同的机房

discovery:...cluster-name: beijing-lian-tong

在这里插入图片描述
在这里插入图片描述

7. 权重

负载均衡

spring:...discovery:weight: 10

8. 心跳相关

服务向nacos发送心跳设置

spring:discovery:# 心跳设置,单位毫秒heart-beat:enabled: true # 是否开启心跳heart-beat-interval: 5000 # 心跳间隔时间heart-beat-timeout: 10000 # 不发送心跳后,从健康转为不健康的时间ip-delete-timeout: 30000 # 从不健康到实例下线时间

4. 消费服务

只能消费命名空间、分组名称相同的服务

  1. yml配置与服务相同
  2. 代码
@RestController
public class Consumer1Controller {private RestTemplate restTemplate = new RestTemplate();@Autowiredprivate DiscoveryClient  discoveryClient;@GetMapping("/consumer1")public String hello(){// 获取在同一命名空间,同一组中的所有服务的服务名称(结果中也包括自己的名称)List<String> services = discoveryClient.getServices();// 根据服务名获取实例List<ServiceInstance> instances = discoveryClient.getInstances("provider-8001");if (CollectionUtils.isEmpty(instances)) throw new RuntimeException("没有找到服务");// 获取实例列表中的任一实例ServiceInstance serviceInstance = instances.get(0);// 获取该实例的端口号和ipString host = serviceInstance.getHost();int port = serviceInstance.getPort();// 向服务发送请求,并返回结果String url = "http://"+host +":"+ port+"/hello?name=张三";String result = restTemplate.getForObject(url, String.class);return result;}

5. 对外暴漏端点,为监控服务

增加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

yml中配置:

spring:.....
management:endpoints:web:exposure:include: "*"
http://www.xdnf.cn/news/4541.html

相关文章:

  • 远程桌面软件推荐
  • Java 中的 this 关键字完全指南:从原理到实战应用
  • C语言--字符函数
  • 面向智能体开发的声明式语言:可行性分析与未来图景
  • 搭建部署企业级Harbor镜像仓库
  • Docker容器网络架构深度解析与技术实践指南——基于Linux内核特性的企业级容器网络实现
  • 2D横板跳跃游戏笔记(查漏补缺ing...)
  • 可重入锁理解(redission)
  • 5.7线性动态规划1
  • Linux系统基本指令和知识指南
  • 解锁AI绘画新境界!开源文生图解锁AI图像生成无限创意
  • Android 数据持久化之 Room 数据库存储
  • 电子商务商家运营简历模板
  • 协变(Covariance)与逆变(Contravariance)的入门理解
  • STC单片机--仿真调试
  • LLM词编码机制:词映射
  • Git笔记
  • 数据结构、刷leetcode返航版--二分【有序】5/7
  • HPDDM库使用指南与示例
  • 力扣刷题[特殊字符]
  • 力扣-hot100(旋转图像)
  • MCP系列(一)什么是MCP?
  • yolov8n-obb训练rknn模型
  • 解决二分类问题常用的模型以及优缺点和使用场景(二)
  • 重生之我在2024学Fine-tuning
  • 系统 Python 与 Conda 环境的灵活切换
  • 前端面经-VUE3篇(五)--内置组件
  • 【计算机架构】RISC(精简指令集计算机)架构
  • ABAP使用GET_TAX_PERCENTAGE 函数取税率
  • 手写 Vue 源码 === 完善依赖追踪与触发更新