一 Nacos 的功能作用

    Nacos 可以快速实现动态服务发现、服务配置、服务元数据及流量管理。 是构建服务为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1. 服务发现和服务健康监测

    Nacos 支持基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent注册 Service 后,服务消费者可以使用HTTP&API查找和发现服务。Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
服务注册发现示例

2. 动态配置服务

    动态配置服务可以动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。并提供了一个简洁易用的控制后台。

3. 服务及其元数据管理

    可以在Nacos后台管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略等。

二 SpringCloud整合Nacos注册中心示例

1. 下载nacos server安装包

   选择安装nacos server版本:v2.4.3。
   可编辑conf/application.properties中的文件配置设置登录账号密码。进入nacos目录,单机模式启动nacos。
Nacos 启动

2. 访问nacos的管理端

   访问地址: http://ip:端口/nacos。
后台

3. SpringCloud整合Nacos

1)创建父模块,引入依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--             springcloud 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>
  1. 创建子项目,引入Nacos依赖
  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--   Nacos服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--   Nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>
  1. 启动类上添加@EnableDiscoveryClient注解
@EnableDiscoveryClient
@SpringBootApplication
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class,args);
    }

}
  1. yml配置文件中配置nacos注册中心地址
server:
  port: 9000
spring:
  profiles:
    active: dev
  application:
    name: user-service
  cloud:
    nacos:
        server-addr: 127.0.0.1:8848
        discovery:
          namespace: ${spring.profiles.active:dev}
        config:
          import-check:
            enabled: true
          namespace: ${spring.profiles.active:dev}
---
spring:
  config:
    import:
      - nacos:user-service.properties?group=user
    activate:
      on-profile: test

5)启动user服务,nacos管理端界面查看user服务是否注册成功
服务列表
6)通过创建配置类,来获取Nacos上的配置信息

@Component
@ConfigurationProperties(prefix = "user")
@Data
public class UserConfig {

    private String role;

    private Integer timeout;
}

7)服务流量权重支持及流量保护
   如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。
权重

更多推荐