Nacos实战之配置中心与注册中心详解

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Nacos实战之配置中心与注册中心详解

ChatGPT体验地址


注册中心

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。

Nacos 就是 注册中心 + 配置中心 的组合 (Eureka + Config + Bus)

中文官网:

home

下载地址:

Spring Cloud Alibaba Reference Documentation

服务注册与发现框架 CAP模型 控制台管理 社区活跃度
Euerka AP 支持
ZK CP 不支持
Consul AP 支持
Nacos AP/CP 支持


CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。


Nacos 与 Eureka 区别

Nacos 支持负载均衡,因为其底层继承了 Ribbon 。

Eureka 是 AP 模型 ,Nacos 可以在 AP 与 CP 切换。

安装与运行

WIN版


  1. 先从官网下载Nacos
  2. 解压安装包,直接运行 bin 目录下的 DOS 窗口运行命令: startup.cmd -m standalone
  3. 命令运行成功后直接访问 http://localhost:8848/nacos


Docker 版

拉取镜像

docker pull nacos/nacos-server:1.4.1


启动

docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -e JVM_XMS=512m -e JVM_XMX=512m nacos/nacos-server:1.4.1

父工程

pom

使用 nacos 需要隐入其依赖:

<!--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>

注册中心-服务提供方

微服务 pom

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

启动类

@EnableDiscoveryClient

yml参考

server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider #服务注册名称(会在nacos页面显示的服务名称)
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include: '*'

注册中心-服务调用方

微服务pom

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

yml 参考

server:
  port: 83
spring:
  application:
    name: nacos-order-consumer #服务注册名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册地址
service-url:
  nacos-user-service: http://nacos-payment-provider #服务提供方的服务名称

配置类

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationContextConfig{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
      return new RestTemplate();
    }
}


启动类

@EnableDiscoveryClient

业务类

@RestController
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;
  //  配置早在 yml 文件里的 服务提供者路径
    @Value("${service-url.nacos-user-service}")
    private String serverURL;
    //  服务提供方的接口Api
    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

项目图

注册中心


测试

项目启动起来后,如下测试

http://localhost:83/consumer/payment/nacos/13009

配置中心实战

前置

概念

namespace 命名空间之间是隔离的。

group 分组把不同的微服务划分到同一个组。

dataId 最小的配置划分。

服务最终配置文件的确认是由 namespace + group + gataId 共同确定的。

本地准备

本地准备两个配置文件,因为 Nacos 在项目初始化时,要保障优先从配置中心进行基础配置拉取,拉取配置后,才能保证项目的正常启动。

在 SpringBoot 项目配置文件的加载顺序是存在优先级的, bootstarp 有限级高于 application.


  1. bootstarp.yml
server:
  port: 3377
spring:
  application:
    name: cloud-nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
        namespace: e27326a4-37e7-41ac-89ba-4b9804758632 # 命名空间
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: e27326a4-37e7-41ac-89ba-4b9804758632 # 命名空间
        group: DEV_GROUP # 分组
  1. application.yml
spring:
  profiles:
    active: dev


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


  1. 业务类

业务类上加注解 @RefreshScope

1.3 配置中心

namespace


group


dataId


dataId 命名规则

s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}-spring.application.name−{spring.profile.active}.${spring.cloud.nacos.config.file-extension}

上图配置的dataId 为:nacos-config-client-dev.yaml

测试

完成上面的配置后 启动项目 访问 http://localhost:3377/config/info

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1天前
|
缓存 负载均衡 Java
Nacos 集群部署时性能优化配置
Nacos 集群部署时性能优化配置
|
1天前
|
存储 关系型数据库 MySQL
Nacos 的配置过程
Nacos 的配置过程
|
4天前
|
JavaScript Java Go
Nacos vs. Eureka:微服务注册中心的对比
Nacos vs. Eureka:微服务注册中心的对比
10 0
|
4天前
|
缓存 监控 Java
深入解析Nacos配置中心的动态配置更新技术
深入解析Nacos配置中心的动态配置更新技术
|
5天前
|
关系型数据库 MySQL Nacos
使用 Docker 部署 Nacos 并配置 MySQL 数据源
使用 Docker 部署 Nacos 并配置 MySQL 数据源
16 0
|
5天前
|
Java Nacos 微服务
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
|
6天前
|
SpringCloudAlibaba 负载均衡 Java
SpringCloudAlibaba之nacos的服务注册与发现
如图所示:按照图示搭建一个nacos作为服务注册中心的简单应用.
11 0
|
6天前
|
Nacos 数据安全/隐私保护
springCloud之nacos服务注册与发现、配置中心
springCloud之nacos服务注册与发现、配置中心
13 0
|
18天前
|
Java Nacos 数据格式
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
55 3
|
26天前
|
Java Nacos Maven
Sentinel1.8.6更改配置同步到nacos(项目是Gateway)
Sentinel1.8.6 nacos springcloud springcloud-alibaba gateway