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-provider
  cloud:
    nacos:
      server-addr: centos9-server:8848
      username: nacos
      password: nacos
      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}

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.0
          env: 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.0
          env: 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();

    @Autowired
    private 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);

        // 获取该实例的端口号和ip
        String 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: "*"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值