• Spring Cloud Alibaba Nacos


    一、介绍

      Nacos:由单词Naming和Cofiguration的前两个字母组成,最后的s代表Service。

    1,作用

    • 替代Eureka做服务注册中心
    • 替代Cloud Config做服务配置中心

    2,地址

      文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

        https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

      下载:https://github.com/alibaba/nacos/tags

    3,各注册中心比较

    比较nacoseurekaconsulzookeeper
    一致性协议 CP + AP 可切换 AP CP CP
    健康检查 TCP/HTTP/MySQL/Client Beat Client Beat TCP/HTTP/gRPC/CMD Client Beat
    负载均衡 权重/DSL/metadata/CMDB Ribbon Fabio
    雪崩保护 支持 支持 不支持 不支持
    自动注销实例 支持 支持 不支持 支持
    访问协议 HTTP/DNS/UDP HTTP HTTP/DNS TCP
    监听支持 支持 支持 支持 支持
    多数据中心 支持 支持 支持 不支持
    跨注册中心 支持 不支持 支持 不支持
    SpringColud集成 支持 支持 支持 不支持
    Dubbo集成 支持 不支持 不支持 支持
    kubernates集成 支持 不支持 支持 不支持

     

    二、nacos安装

    https://github.com/alibaba/nacos/releases/tag/1.1.4

    1,单机版

    直接下载:nacos-server-1.1.4.tar.gz

    a)上传并解压

    tar -xvf nacos-server-1.1.4.tar.gz

    b)将nacos/conf/nacos-mysql.sql导入到mysql的数据库中

    c)在配置文件中添加数据库配置

    vi nacos/conf/application.properties

    #########在文末添加#####################
    spring.datasource.platform=mysql
    
    db.num=1
    db.url.0=jdbc:mysql://hadoop103:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=123456

    d)启动nacos

    nacos/bin/startup.sh -m standalone

    2,集群版

    a)下载解压上传,导入数据,修改application.properties(同上)

    b)修改cluster.conf

    #查看对应的主机
    [root@hadoop103 nacos_cluster]# hostname -i
    192.168.232.103
    #配置集群
    [root@hadoop103 nacos_cluster]# vi conf/cluster.conf
    192.168.232.103:3333
    192.168.232.103:4444
    192.168.232.103:5555

    c)修改startup.sh

    vi bin/startup.sh

         

    d)启动nacos

    bin/startup.sh -p 3333
    bin/startup.sh -p 4444
    bin/startup.sh -p 5555

    e)配置nginx.conf

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        upstream cluster{
            server 127.0.0.1:3333;
            server 127.0.0.1:4444;
            server 127.0.0.1:5555;
        }
        server {
            listen       1111;
            server_name  localhost;
            location / {
                proxy_pass http://cluster;
            }
        }
    }

    f)nginx启动

    ./sbin/nginx -c ./conf/nginx.conf
    #访问路径
    http://hadoop103:1111/nacos

    三、Nacos服务启动

    1,Nacos基础示例

    源码:cloudalibaba-provider-payment9001

      pom文件

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

      yaml文件

    server:
      port: 9001
    
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #配置Nacos地址
    management:
      endpoints:
        web:
          exposure:
            include: '*'

      application

    @EnableDiscoveryClient
    @SpringBootApplication
    public class NacosPaymentMain9001 {
        public static void main(String[] args) {
            SpringApplication.run(NacosPaymentMain9001.class,args);
        }
    }

    2,Nacos作为基础配置中心

    源码:cloudalibaba-config-nacos-client3377

      pom文件

    <!--nacos-config-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!--nacos-discovery-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--web + actuator-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

      yaml文件

    server:
      port: 3377
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #服务注册中心地址
          config:
            server-addr: localhost:8848 #配置中心地址
            file-extension: yaml #指定yaml格式的配置
      profiles:
        active: dev  #${spring.applicaiton.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为nacos的dataId

      applicaiton同上

      controller

    @RestController
    @RefreshScope //动态刷新引用值
    public class ConfigClientController {
        @Value("${config.info}")
        private String configInfo;
        @GetMapping("/config/info")
        public String getConfigInfo() {
            return configInfo;
        }
    }

      nacos中新建配置文件nacos-config-client-dev.yaml

          

    3,集群Nacos的示例

    源码地址:cloudalibaba-config-nacos-cluster3388

      与上一步(2)的配置基本一致

      只有对应的yaml文件不同

    server:
      port: 3388
    spring:
      profiles:
        active: dev  #${spring.applicaiton.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为nacos的dataId
      application:
        name: nacos-config-cluster
      cloud:
        nacos:
          discovery:
            server-addr: hadoop103:1111 #服务注册中心地址
          config:
            server-addr: hadoop103:1111 #配置中心地址
            file-extension: yaml #指定yaml格式的配置

    四、DataId,Group,NameSpace

    源码地址:cloudalibaba-config-nacos-cluster3388

    DataId:${spring.applicaiton.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

    Group:对应Group

    NameSpace:对应命名空间id

    server:
      port: 3388
    spring:
      profiles:
        active: dev  #${spring.applicaiton.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为nacos的dataId
      application:
        name: nacos-config-cluster
      cloud:
        nacos:
          discovery:
            server-addr: hadoop103:1111 #服务注册中心地址
            namespace: a35df75a-6d0e-4e28-9b89-b4d2d8dd87e6 #服务发现所属的命名空间
          config:
            server-addr: hadoop103:1111 #配置中心地址
            file-extension: yaml #指定yaml格式的配置
            group: TEST_GROUP #对应group
            namespace: a35df75a-6d0e-4e28-9b89-b4d2d8dd87e6 #对应myns的命名空间的ID

         

  • 相关阅读:
    第十章 泛型程序设计与C++标准模板库 迭代器
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
  • 原文地址:https://www.cnblogs.com/bbgs-xc/p/13823695.html
Copyright © 2020-2023  润新知