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

发布时间:2024年01月09日

前言

在这里插入图片描述
「作者主页」雪碧有白泡泡
「个人网站」雪碧的个人网站
请添加图片描述

ChatGPT体验地址

请添加图片描述

文章目录

  • 前言
  • 注册中心
    • Nacos 与 Eureka 区别
  • 安装与运行
    • WIN版
    • Docker 版
  • 父工程
  • 注册中心-服务提供方
    • 微服务 pom
    • 启动类
    • yml参考
  • 注册中心-服务调用方
    • 微服务pom
    • yml 参考
    • 配置类
    • 启动类
    • 业务类
  • 项目图
  • 注册中心
  • 测试
  • 配置中心实战
  • 前置
    • 概念
    • 本地准备
    • 1.3 配置中心
  • 测试
  • 送书活动

注册中心

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。
Nacos 就是 注册中心 + 配置中心 的组合 (Eureka + Config + Bus)

中文官网:
home

下载地址:
Spring Cloud Alibaba Reference Documentation

服务注册与发现框架CAP模型控制台管理社区活跃度
EuerkaAP支持
ZKCP不支持
ConsulAP支持
NacosAP/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);
    }
}

项目图

image.png

注册中心

image.png

测试

项目启动起来后,如下测试
http://localhost:83/consumer/payment/nacos/13009

配置中心实战

前置

概念

namespace 命名空间之间是隔离的。
group 分组把不同的微服务划分到同一个组。
dataId 最小的配置划分。

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

本地准备

本地准备两个配置文件,因为 Nacos 在项目初始化时,要保障优先从配置中心进行基础配置拉取,拉取配置后,才能保证项目的正常启动。
在 SpringBoot 项目配置文件的加载顺序是存在优先级的, bootstarp 有限级高于 application.
image.png

  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
image.png

group
image.png

dataId
image.png

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
上图配置的dataId 为:nacos-config-client-dev.yaml

测试

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

送书活动

  • 🎁本次送书1~3本【取决于阅读量,阅读量越多,送的越多】👈
  • ??活动时间:截止到2024-1月13号
  • ??参与方式:关注博主+三连(点赞、收藏、评论)
    购买地址https://item.jd.com/13762165.html

请添加图片描述

文章来源:https://blog.csdn.net/Why_does_it_work/article/details/135468993
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。