• SpringCloud Nacos 服务注册中心


    Nacos从入门到避坑

    1.学习借鉴

      1.1  整理nacos知识点,让你吃透 Nacos

      1.2  Nacos使用入门

           1.3 nacos介绍及使用

      1.4 什么是Nacos?Nacos注册配置中心介绍

      1.5  Ribbon和OpenFeign  openFeign/ restTemplate+ribbon

       1.6 Ribbon与OpenFeign

     

     2.Nacos简介

      2.1 为什么叫Nacos

        前四个字母分别为name和config的前两个字母,最后的sService

      2.2 主要功能 配置中心 + 注册中心

    3.docker 安装 nacos 

      3.1 Alibaba  2.2.0.RELEASE 版本对应的 nacos 1.1.4

        docker pull nacos/nacos-server:1.1.4

      3.2 执行命令

     # 创建文件夹
    
       mkdir -p /usr/local/nacos/logs/
       mkdir -p /usr/local/nacos/init.d/
    
     # 运行nacos

    docker run --name nacos1.1.4
    -d
    -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /usr/local/nacos/logs:/home/nacos/logs -v /usr/local/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties nacos/nacos-server:1.1.4

          --name 容器名称  ;-p 宿主主机端口:容器端口 映射;  -e 环境变量配置; -v 路径映射  ;–restart 重启策略

      3.3 初始密码 nacos/nacos

        http://IP:8848/nacos/index.html

      3.3 创建mysql 并持久化nacos的配置信息  持久化没有启动成功!存在问题

        # mysql新建nacos的数据库,并执行脚本 sql脚本地址如下:

          https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

        # 修改配置文件

           vim /usr/local/nacos/init.d/custom.properties 

    server.contextPath=/nacos
    server.servlet.contextPath=/nacos
    server.port=8848
     
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://ip:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=tsbx8888
     
    nacos.cmdb.dumpTaskInterval=3600
    nacos.cmdb.eventTaskInterval=10
    nacos.cmdb.labelTaskInterval=300
    nacos.cmdb.loadDataAtStart=false
    management.metrics.export.elastic.enabled=false
    management.metrics.export.influx.enabled=false
    server.tomcat.accesslog.enabled=true
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
    nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
    nacos.naming.distro.taskDispatchThreadCount=1
    nacos.naming.distro.taskDispatchPeriod=200
    nacos.naming.distro.batchSyncKeyCount=1000
    nacos.naming.distro.initDataRatio=0.9
    nacos.naming.distro.syncRetryDelay=5000
    nacos.naming.data.warmup=true
    nacos.naming.expireInstance=true

            # docker cp 复制:

          docker cp 8b9d:/home/nacos/init.d/custom.properties /usr/local/nacos/init.d/custom.properties 

        # 重启容器

        dockers restart 容器id

    4.服务注册到 nacos

      4.1 父工程引入依赖并指定版本;子模版引入依赖不需要指定版本

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

      4.2 子模块引入依赖

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

      4.3 yml文件

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

      4.4 主启动类添加注解 @EnableDiscoveryClient

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

      4.4 通过idea 工具 参照8001 新建8002 直接拷贝虚拟端口映射

        2021 idea 设置多启动类管理 (2019版 的 Run Dashboard)  add -- springboot

    如   

    -DServer.port=8002

       4.5 为什么nacos 支持负载均衡

    5.服务之间的调用 

      1. RestTemplate  服务接口调用 

        +Ribbon实现负载均衡

      2.OpenFeign服务接口调用

        - openFeign 内置了 ribbon 实现负载均衡

        -  Nacos 内置了 ribbon可以实现负载均衡 

        - Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用。

    6.引入 spring-cloud-starter-alibaba-nacos-discovery 警告

       No URLs will be polled as dynamic configuration sources.

      产生原因:分析可知道由于Nacos/openFeign包内Ribben引入了netflix-archaius包,默认需要加载配置源,无法加载配置元导致系统警告。  netflix-archaius与spring-config和apollo等配置组建类似。

        openFeign、Nacos 都内置了Ribben ;

       解决方案:1. maven依赖中 排除netflix-archaius引入

      

      <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-cloud-netflix-archaius</artifactId>
                        <groupId>org.springframework.cloud</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-cloud-netflix-archaius</artifactId>
                        <groupId>org.springframework.cloud</groupId>
                    </exclusion>
                </exclusions>
            </dependency>

      方案2:

        在resources目录下创建一个空的config.properties文件。

    7. Endpoint ID 'nacos-discovery' contains invalid characters, please migrate to a valid format.

      端点 ID 'nacos-discovery' 包含无效字符,请迁移到有效格式。

      根据报错信息找到源代码,发现-和. 都会包这个问题;忽略

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

     
  • 相关阅读:
    Freezable 对象(WPF)
    排序算法
    属性,构造函数,枚举
    .net 4.0新特性CountDownEvent
    WPF的动画(1)基本动画
    MEF(Managed Extensibility Framework)学习笔记
    WPF依赖属性(续)(4)依赖属性与数据绑定
    [你必须知道的.NET] 第六回:深入浅出关键字base和this
    [你必须知道的.NET] 第三回:历史纠葛:特性和属性
    用命令行部分解决 CNNIC 证书问题
  • 原文地址:https://www.cnblogs.com/nextgg/p/16128591.html
Copyright © 2020-2023  润新知