栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spring Cloud Alibaba Nacos服务注册和配置中心

Spring Cloud Alibaba Nacos服务注册和配置中心

1 为什么叫Nacos

英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。

2 是什么

一个更易于构建云原生应用的动态服务实现、配置管理和服务管理平台。
Nacos就是注册中心 + 配置中心的组合 等价于 Nacos = Eureka + Config + Bus

3 window安装Nacos

a. 先从官网下载Nacos
https://github.com/alibaba/nacos/releases
b. 解压安装包,直接运行bin目录下的startup.cmd
./startup.cmd 或 startup.cmd -m standalone
c. 命令运行成功后直接访问http://localhost:8848/nacos
默认账户密码都是nacos
d. 结果页面

4 使用Nacos
4.1) pom
a, 父POM必须引入SpringCloud Alibaba依赖

  
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.6.RELEASE
                pom
                import
            

b. 本模块POM 引入SpringCloud Alibaba Nacos依赖


            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

4.2) 配置

server:
  port: 9001

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

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

4.3 )主启动

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {

    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class, args);
    }
}

4.4 )业务类

@RestController
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

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

启动后可看到这个服务已 注册进nacos

5 Nacos 支持负载均衡

因为阿里的nacos整合得特别好,后面技术都会吸收前面技术的优点,天生一出来就自带负载均衡,何以见得?

nacos-discovery包天生集成了netflix-ribbon包,只要是ribbon的话,一支持负载均衡,二支持RestTemplate(RESTful风格的远程调用)

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

C是所有节点在同一时间看到的数据是一致的;而A的定义是所有请求都会收到响应(可用性)。
何时选择使用何种模式?
一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring Cloud 和 Dubbo 服务,都适用于AP模式,AP模式是为了服务的可用性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须的,K8s服务和DNS服务则适用于CP模式。
CP模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

curl -X PUT ‘$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’

7 使用Nacos作为配置中心
7.1)pom

  
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        

7.2)配置
配置bootstrap.yml和application.yml

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。
springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

a. 配置bootstrap.yml

# nacos配置
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格式的配置
        
#Nacos中DataId要按照以下规则配置
#${spring.application.name}-${spring.profiles.active}-${spring.cloud.nacos.config.file-extension}

b. 配置application.yml

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

c 业务类

@RestController
@RefreshScope // 支持Nacos的动态刷新功能(此时我们修改了配置文件,客户端是可以立即更新的,因为Nacos支持Bus总线,会自动发送命令更新所有客户端)
public class ConfigClientController {

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

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

8 Nacos集群和持久化配置

Nacos支持三种部署模式:
单机:用于测试和单机使用
集群:用于生产环境,保证高可用
多集群:用于多数据中心场景

官网说明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
集群部署架构图:

真实情况:

Nacos默认有自带嵌入式数据库,derby,但是如果做集群模式的话,就不能使用自己的数据库
不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql

默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。
为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

9 Nacos单机版持久化(切换mysql数据库)

1,nacos默认自带了一个sql文件,在nacos安装目录下
将它放到我们的mysql执行
2,修改Nacos安装目录下的安排application.properties,添加:

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=root

3,此时可以重启nacos,那么就会改为使用我们自己的mysql

10 Linux上配置Nacos集群+Mysql数据库

官方架构图:

1,下载安装Nacos的Linux版安装包
2,进入安装目录,现在执行自带的sql文件
进入mysql,执行sql文件
3.修改配置文件,切换为我们的mysql
就是上面windos版要修改的几个属性
4,修改cluster.conf,指定哪几个节点是Nacos集群
这里使用3333,4444,5555作为三个Nacos节点监听的端口

注:IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP
5,我们这里就不配置在不同节点上了,就放在一个节点上
既然要在一个节点上启动不同Nacos实例,就要修改startup.sh,使其根据不同端口启动不同Nacos实例


6,配置Nginx

7,启动Nacos
./startup.sh -p 3333

./startup.sh -p 4444

./startup.sh -p 5555

8,启动nginx

9,将微服务注册到Nacos集群

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号