SpringCloudAlibaba——Nacos服务注册与发现

本文介绍了Nacos作为服务发现和配置管理工具的基本概念和安装步骤。通过实例展示了如何将服务注册到Nacos,以及如何配置和使用Nacos进行动态配置管理。同时提到了Nacos与数据库的集成,并讨论了客户端如何接入配置中心。
摘要由CSDN通过智能技术生成

一:Nacos的认识和安装

1.概念

官方定义:

Nacos致力于帮助您发现,配置和管理微服务。它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理。 Nacos使构建,交付和管理微服务平台变得更容易,更快捷。它是通过微服务或云原生方法支持以服务为中心的现代应用程序体系结构的基础架构。

这里我们看到Nacos不仅是服务发现组件,同时也是一个配置管理组件,也就是说它不仅可以用来取代Eureak作为注册中心, 也可以用来取代Spring Cloud Config 做配置统一管理。本篇文章意在探讨Nacos的服务注册与发现功能。

2.安装

下载地址:Releases · alibaba/nacos · GitHub

启动Nacos:解压后,

  • windows执行bin目录下的startup命令 :startup.cmd -m standalone

  • linux 执行 :sh startup.sh -m standalone

访问Nacos,端口8848:http://127.0.0.1:8848/nacos/index.html ,用户名和密码都是:nacos

3.基于数据库持久化Nacos

找到nacos安装目录config/application.properties 文件,编辑数据库信息,修改内容如下,user和password就看自己怎么设置的

spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

二:项目搭建

我们这里要演示的案例是两个服务的通信,用户服务(service-user)作为服务提供者需要编写接口返回User实体对象,订单服务(service-order)作为消费者需要调用用户服务获取User实体对象,浏览器调用订单服务,订单服务调用用户服务或到User实体后返回给容器,用户和订单都注册到Nacos中,如下:

 注意:这里的订单服务和用户服务都用到了User实体,所以为了让User实体共用,我们为User实体抽取了一个公共的user-common模块,用户服务和订单服务都去依赖这个模块即可使用User实体。

搭建父工程,导入依赖,创建user服务模块,order订单模块,user的公共模块

<!--1.管理 SpringBoot的jar包-->
    <!--SpringBoot-->
    <parent>
        <groupId> org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <!--2.管理 SpringCloud的jar包
    -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--3.这里是所有子项目都可以用的jar包-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--小辣椒-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

将服务注册到Nacos

1.在user服务导入依赖

 <dependency>
     <groupId>com.alibaba.cloud </groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--加入WEB依赖是为了方便后面写Controller-->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>com.lqf</groupId>
  <artifactId>springcloud-alibaba-pojo-user</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

2.配置启动类

创建配置类加上@EnableDiscoveryClient注解开启服务发现功能,代码如下

@SpringBootApplication
@EnableDiscoveryClient //开启服务发现功能
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class);
    }
}

3.配置yml文件

server:
  port: 10010
spring:
  application:
    name: service-user
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848	#注册中心地址

4.启动测试

启动服务提供者,观察Nacos服务列表 , service-user已经注册进去了

5.服务通信

可以使用Ribbon,OpenFeign,甚至Dubbo,使用方式和在SpirngCloudNetflix中没有任何区别。

三:Nacos配置管理

1.Nacos配置中心

第一步:打开Nacos监控面板 - 进入配置列表 -点击 “+” 图标添加配置 如下:

 第二步:填写Data ID,选择YAML,编辑配置文件内容

 配置内容就是后端在application.yml写的内容

Data ID : 非常重要,可以看做是配置的文件的名字,在程序中拉取配置文件的时候需要指定Data ID。

Group : 分组,默认是 DEFAULT_GROUP , 可以针对不同的项目指定不同的配置组。

2.客户端接入配置中心

2.1 在user服务导入依赖
<!-- 配置中心客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
2.2 编写user的controller
@RefreshScope  //刷新配置
@RestController
public class UserController {

    @Value("${temp.notify}")
    private String notify;

    @GetMapping("/user/{id}")
    public User getById(@PathVariable Long id){
      
        return new User(id,"user", "法外狂徒张三:"+notify);
    }
}
2.3 将application.yml删除,创建bootstrap.yml文件
spring:
  profiles:
    active: dev #环境
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 #端口号
        file-extension: yaml  #后缀
        prefix: application-user #前缀
2.4 测试就可以了

启动Nacos,启动 springcloud-alibaba-service-user 工程 , 修改Nacos中的配置文件内容,然后访问 http://localhost:10010/user/1 ,观察控制台打印的 “notify”的值会发生变化。

2.5 注意细节

1.云端配置文件的后缀应该是 yaml而不是yml

2.客户端配置需要指定:spring.profiles.active=dev 环境名

3.客户端配置 :前缀 + 环境名 + 后缀应该和云端配置文件的DataId一致

那就先告一段落了,路漫漫其修远兮,吾将上下而求索,学无止境啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值