关于Springcloud Alibaba Nacos服务注册和配置中心的使用 小结

16 篇文章 0 订阅
9 篇文章 0 订阅

目录

 

1. SpringCloud Alibaba概述

2. Nacos概述

2.1 Nacos简介

2.2 Nacos安装配置

3. Nacos作为服务注册中心的案例

3.1 基于Nacos的服务提供者

3.2 基于Nacos的服务消费者

3.3 服务注册中心对比

3.4 Nacos支持AP和CP模式的切换

4. Nacos作为服务配置中心的案例

4.1 服务中心配置

4.2 Nacos匹配规则

4.3 案例测试

4.4 Nacos分类配置


1. SpringCloud Alibaba概述

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

上面的官网链接首页大概讲述了SpringCloud Alibaba的主要功能、组件。以下是我对于SpringCloud Alibaba Nacos使用过程的一些小结。

2. Nacos概述

2.1 Nacos简介

Nacos(Dynamic Naming and Configuration Service),作为一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,简单来说就是Nacos就是注册中心 + 配置中心的组合(Eureka + Config + Bus)。

2.2 Nacos安装配置

前提是已经安装了java8和maven。

1) 下载Nacos的nacos-server-1.1.4.zip。

2) 解压安装包,然后直接运行bin目录下的startup.cmd。

3) 访问Nacos(localhost:8848/nacos)。

3. Nacos作为服务注册中心的案例

以下案例代码的Github地址

三个modules分别是:cloudalibaba-provider-payment9001,cloudalibaba-provider-payment9002,cloudalibaba-consumer-nacos-order83。

3.1 基于Nacos的服务提供者

1) 父pom添加SpringCloud Alibaba依赖。

<!--Spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

2) cloudalibaba-provider-payment9001添加Nacos依赖。

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

3) 配置Nacos。

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

4) 添加接口:

@GetMapping(value = "/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id) {
	return "Hello Nacos Discovery: " + serverPort + "\t id: " + id;
}

5) 同样的操作创建cloudalibaba-provider-payment9002(注意修改application.yml的端口为9002)。

6) 案例测试:

7) 访问Nacos(localhost:8848/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=)。

3.2 基于Nacos的服务消费者

1) cloudalibaba-consumer-nacos-order83添加Nacos依赖。

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

2) 配置Nacos。

server:
  port: 83

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

#消费者将去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3) 添加接口:

@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Integer id) {
	return restTemplate.getForObject(serverURL + "/payment/nacos/" + id,String.class);
}

4) 案例测试(RestTemplate加上了@LoadBalanced,集成了ribbon的负载均衡)。

3.3 服务注册中心对比

3.4 Nacos支持AP和CP模式的切换

一般来说,如果不需要存储服务级别的信息且通过nacos-client注册,并能够保持心跳上报那么就可以选择AP。

如果需要在服务级别编辑或存储配置信息,那么CP是必须的,CP模式下支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例前必须先注册服务,如果服务不存在则会返回错误。

4. Nacos作为服务配置中心的案例

以下案例代码的Github地址

这个modules是:cloudalibaba-config-nacos-client3377。

4.1 服务中心配置

1) 添加Nacos config依赖。

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

2) 配置bootstrap.yml

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式配置

3) 配置application.yml

spring:
  profiles:
    active: dev #表示开发环境

4) 配置动态刷新的接口:

@RestController
@RefreshScope // 支持Nacos的动态刷新功能
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

4.2 Nacos匹配规则

1) Nacos界面配置信息。

${spring.application.name}-${spring.profile.active}.${file-extension}

  • prefix默认为spring.application.name的值。
  • spring.profile.active即为当前环境对应的profile,可以通过配置项 spring.profile.active来配置。
  • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。

2)进入Nacos控制台新建配置(nacos-config-client-dev.yaml)。

  • nacos-config-client-dev.yaml
  • config:
      info: this is my Springcloud config test version 1.0.

注:Data ID 的后缀是yaml

4.3 案例测试

启动前需要在nacos客户端-配置管理-配置管理栏目下有对应的yaml配置文件。

1) 访问接口(localhost:3377/config/info)。

2) 修改config信息(version改成2.0)。

3) 访问接口,信配置息已经刷新了。

4.4 Nacos分类配置

最外面的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。

默认情况下,Namespace=public ,Group=DEFAULT_GROUP。

1) DataID的案例(指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置)。

  • 新建DataID。
  • nacos-config-client-test.yaml
  • config:
      info: this is my Springcloud config(nacos-config-client-test.yaml) test version 1.0.
  • 通过spring.profile.active属性就能进行多环境下配置文件的读取。

2) Group的案例(通过Group实现环境区别)。

  • 新建DataID:nacos-config-client-info.yaml(Group=DEV_GROUP),nacos-config-client-info.yaml(Group=TEST_GROUP)
  • 在config下增加一条group的配置即可,可配置为DEV_GROUP或TEST_GROUP。

3) Namespace的案例。

  • 新建dev/test的Namespace。
  • 在dev的namespace下创建配置信息。
  • 修改bootstrap.yml添加namespace配置。

1) 要部署Nacos集群可以参考:Nacos集群部署

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值