• SpringCloud Alibaba Nacos---服务注册与配置中心


      前言:不断学习就是程序员的宿命

      中文:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

      官网:https://spring.io/projects/spring-cloud-alibaba

      英文版:https://github.com/alibaba/spring-cloud-alibaba

      分支主题:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html

    一、Nacos

      官网:https://nacos.io/zh-cn/

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

      下载地址:https://github.com/alibaba/nacos/releases

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

    二、Nacos作为服务注册中心

      启动Nacos:/bin/startup.cmd启动Nacos,http://localhost:8848/,默认用户名与密码为nacos

    1、Provider注册至Nacos

    1.1、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>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    pom

    1.2、application.yml

    server:
      port: 9001
    
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
    
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    View Code

    1.3、启动类

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

    1.4、测试

      启动模块cloudalibaba-provider-payment9001,查看Nacos,服务已注册至Nacos

    2、Consumer注册至Nacos

    2.1、pom

     <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <dependency>
                <groupId>com.xd.springcloud</groupId>
                <artifactId>cloud-api-common</artifactId>
                <version>${project.version}</version>
            </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>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    </project>
    pom

    2.2、application.yml

    server:
      port: 83
    
    spring:
      application:
        name: nacos-order-consumer
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
    
    #消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
    service-url:
      nacos-user-service: http://nacos-payment-provider
    application.yml

    2.3、测试

    3、Nacos天生支持负载均衡

    4、Nacos服务发现实例模型

    5、Nacos的AP与CP模式切换

      C是所有节点在同一时间看到的数据是一致的;A是所有的请求都会收到响应。何时选择使用何种模式? 

      ①一般来说,如果不需要存储服务级别的信息且服务实例是通过Nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流服务如Dubbo、SpringCloud都适合Ap模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只能注册临时实例

      ②如果需要在服务级别编辑或存储配置信息,那么CP是必须,K8S服务和DNS服务则适用于CP服务,CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

      切换:curl -X PUT `$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

    三、Nacos作为服务配置中心

      官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

    1、Nacos基础配置

    1.1、Nacos中的DataId的组成格式与SpringBoot配置文件中的匹配规则 

     

     1.2、测试

      测试前保证nacos客户端-配置管理-配置管理栏下游对应的yaml配置文件

    2、Nacos分类配置(高级)

    2.1命名空间、分组、DataID之间关系

    Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

    (1)NameSpace

      Nacos默认的命名空间是public、NameSpace主要用来隔离,比如我们现在有3个开发环境:开发、测试、生产环境,我们就可以创建3个NameSpace,不同的NameSpace之间是隔离的。

    (2)Group

      默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。

    (3)Service

      Service就是微服务,一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定的微服务一个虚拟划分。

      比如说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),广州机房微服务集群名称(GZ),还可以尽量让同一个机房的微服务相互调用,以提升性能。

    (4)Instance

      就是微服务实例 

    3、三种方案加载配置

    DataID方案指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置:默认空间+默认分组+新建dev和test两个DataId

      通过spring.profile.active属性就能进行多环境下配置文件的读取

    Group方案:通过Group实现环境区分

    Namespace方案:NameSpace+Group+profile区分

    3.1DataID方案

    3.2Group方案

    3.3NameSpace方案

    四、Nacos集群与持久化配置 

      参考:Linux下Nacos集群与持久化配置

  • 相关阅读:
    庆祝 杀马下载量突破300万!
    智能实验室-杀马(Defendio) 4.26.0.940
    智能实验室-全能优化(Guardio) 4.992.0.900
    智能实验室-杀马(Defendio) 4.17.0.850
    目前为止功能最全的基于silverlight4(beta)的摄像头应用
    Discuz!NT负载均衡方案
    Discuz!NT跨站缓存同步
    Discuz!NT负载均衡解决方案(HA)之LVS(Linux Virtual Server)
    Discuz!NT企业版之Sphinx全文搜索(下)
    Discuz!NT千万级数据量上的两驾马车TokyoCabinet,MongoDB
  • 原文地址:https://www.cnblogs.com/rmxd/p/12588945.html
Copyright © 2020-2023  润新知