精华内容
参与话题
问答
  • Nacos做服务注册中心使用案例

    万次阅读 2020-09-21 04:27:51
    关于环境搭建部分请借鉴:nacos做配置中心和服务注册中心 的完整使用案例 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-...

    关于环境搭建部分请借鉴:nacos做配置中心和服务注册中心 的完整使用案例

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    server.port=8070
    spring.application.name=server-provider
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    

    主启动类示例代码

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosProviderApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(NacosProviderApplication.class, args);
    	}
    
    	@RestController
    	class EchoController {
    		@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
    		public String echo(@PathVariable String string) {
    			return "Hello Nacos Discovery " + string;
    		}
    	}
    }
    

    然后启动该主启动类,注意:主启动类至少有一个restful风格的请求资源,不然容易失败,因为是一个空服务

    启动项目后,如下在服务列表中能找到说明成功!
    在这里插入图片描述

    Springboot的示例代码

    在这里插入图片描述

    展开全文
  • nacos和eureka注册中心对比 and CAP定律理解

    万次阅读 多人点赞 2019-05-14 11:16:06
    1. CP 和 AP不可能同时满足 2.P代表分区容错, 在整个分布式系统中某个节点服务挂掉了,并不影响整个系统的运作和使用, ... 注册中心集群中: leader的作用, 所有的写操作都依赖于leader来完成,为了保证数...

    1. CP 和 AP不可能同时满足

    2.P代表分区容错, 在整个分布式系统中某个节点服务挂掉了,并不影响整个系统的运作和使用,

                               因为他可以在稍后或者通过切换可用节点立即恢复使用
     

    3.C:  写操作之后的读操作,必须返回该值。

             注册中心集群中: leader的作用, 所有的写操作都依赖于leader来完成,为了保证数据的一致性,  leader只有一个

             假如: 没有leader,首先加入我们新加入一台数据处理服务,就会向注册中心1进行注册,注册中心1写入数据处理服务的ip

                      等等基本信息,并且准备同步给其他注册中心节点, 结果这个在还没发生同步的过程中,注册中心1挂掉了,

                      然后客户端准备调用数据中心写入,这个时候就因为注册中心1挂掉了,就直接切到了注册中心2,但是注册中心2没有

                      收到数据处理服务的添加请求,所以没有这个服务,这个时候就对客户端显示不可用了.

      4. A:   没有leader,可以很容易的切换到可用的注册中心,对于客户端的调用总是及时反应, 在上述C操作的例子中,

                 对于向服务注册,获取服务注册的基本信息,比如ip来说,基本不会存在,因为像Eureka来说,我们的服务可以

                 向所有的注册中心节点发起注册请求,  这样就不会存在注册中心节点服务列表不一致的情况

     

       阿里的nacos : 性能最好

         他同时支持AP和CP模式,他根据服务注册选择临时和永久来决定走AP模式还是CP模式,

        他这里支持CP模式对于我的理解来说,应该是为了配置中心集群,因为nacos可以同时作为注册中心和配置中心,

        因为他的配置中心信息是保存在nacos里面的,假如因为nacos其中一台挂掉后,还没有同步配置信息,

        就可能发生配置不一致的情况., 配置中心的配置变更是服务端有监听器,配置中心发生配置变化,

        然后服务端会监听到配置发生变化,从而做出改变

        

     eureka+spring cloud config: 

       性能也不差,对于服务数量小于上千台来说,性能没有问题

       eureka: 可以做注册中心,完全AP,支持注册中心之间的节点复制,同时支持服务端同时注册多个注册中心节点,

                      所以不存节点信息不一致的情况

      config: 单独服务,是从git仓库拉取配置信息,然后服务端从config服务里面拉取配置信息缓存到本地仓库

                  这里配置的变更比较麻烦,他需要结合bus组件,同时约束了只能用rabbitmq和kafka来进行通知服务端进行配置变更

                  但是保证了数据的一致性,因为他的配置信息在git仓库上,git仓库只有一个,就会数据一致          

     

    阿里nacos异常情况 leader挂了

       1.不影响服务之间互相调用

        2.不影响服务注册

        3.不影响服务正常启动拉取配置文件

        4.选举新leader差不多4,5秒钟

    展开全文
  • 参见(SpringCloud+Nacos 配置中心与注册中心应用) 2. 启动服务 3. API文档访问 4. 动态路由 只需要修改对应的配置文件即可,nacos会发起刷新 附录 网关配置 TIMEOUT.IN.MILLISECONDS: 60000 hystrix: command: ...

    SpringCloudGateway+Nacos 集成应用

    1. 应用集成(配置中心+应用中心)

    参见(SpringCloud+Nacos 配置中心与注册中心应用)

    2. 启动服务

    在这里插入图片描述

    3. API文档访问
    4. 动态路由

    只需要修改对应的配置文件即可,nacos会发起刷新

    附录
    • 网关配置
    TIMEOUT.IN.MILLISECONDS: 60000
    hystrix:
      command:
        fallbackcmd:
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: ${TIMEOUT.IN.MILLISECONDS}
              strategy: SEMAPHORE
              semaphore:
                maxConcurrentRequests: 1000
        default:
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: ${TIMEOUT.IN.MILLISECONDS}
              strategy: SEMAPHORE
              semaphore:
                maxConcurrentRequests: 1000
    spring:
      profiles: dev
    # 链路追踪
      zipkin:
        # 可使用服务名称
        base-url: http://localhost:9411/
        # 没有注册到注册中心,不需要开启
        discovery-client-enabled: false
        service:
          name: ${spring.application.name}
        sender:
          type: web
      sleuth:
        sampler:
          probability: 1.0
      redis:
        password: ****
        sentinel:
          master: mymaster
          nodes: ip:26379,ip:26380
        lettuce:
          pool:
            max-active: 8
            max-idle: 8
            max-wait: -1ms
            min-idle: 0
      cloud:
        gateway:
          discovery:
            locator:
              enabled: true
              lower-case-service-id: true
          routes:
            - id: nacos-demo-test
              uri: lb://nacos-demo-test
              predicates:
              - Path= /api/t/**
              filters:
              - StripPrefix= 2
            - id: nacos-demo-local
              uri: lb://nacos-demo-local
              predicates:
              - Path= /api/local/**
              filters:
              - StripPrefix= 2
            - id: nacos-demo-non
              uri: lb://nacos-demo-non
              predicates:
              - Path= /api/non/**
              filters:
              - StripPrefix= 2
    
    
    sonic:
      platform:
        mybatis:
          mapper-locations: classpath:/mappers/*Mapper.xml
        datasource:
          jdbc-url: jdbc:mysql://****:3306/zipkin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true
          username: ****
          password: ****
          driver-class: com.mysql.cj.jdbc.Driver
          min-idle: 5
          max-active: 10
          initial-size: 5
        gateway:
          services:
            nacos-demo-local: Nacos_Local服务
            nacos-demo-test: Nacos_Test服务
            nacos-demo-non: Nacos_不存在的服务
    
    • 应用中配置
    # 此处为自定义,配置中心和注册中心共同属性,下文引入即可
    nacos:
      group: demo
      # 配置中心地址
      server-addr: http://127.0.0.1:9948
      # 命名空间
      namespace: dev
    service.port: 9999
    
    spring:
      profiles:
        active: dev
      application:
        name: nacos-demo-gateway
      cloud:
        nacos:
          server-addr: ${nacos.server-addr}
          config:
          # nacos 配置中心服务地址 nginx 代理的地址
          # 默认  ${spring.cloud.nacos.server-addr}
          #  server-addr:
            file-extension: yaml
            prefix: ${spring.application.name}
          # dataID  ${prefix}-${spring.profiles.active}.${file-extension}
          # 命名空间 默认 public
            namespace: ${nacos.namespace}
          # 配置组  默认 DEFAULT_GROUP
            group: ${nacos.group}
          # 共享配置(公共配置)
            shared-configs:
              - data-id: nacos-demo.yaml
                # 可自定义
                group: ${nacos.group}
                refresh: true
    
    
    
    展开全文
  • SpringCloud+Nacos 配置中心与注册中心应用 1. 版本说明 序号 名称 版本号 1 spring-boot 2.1.1.RELEASE 2 spring-cloud Greenwich.RELEASE 3 spring-cloud-alibaba 2.1.2.RELEASE 引入pom ...... &...

    SpringCloud+Nacos 配置中心与注册中心应用

    1. 版本说明
    序号 名称 版本号
    1 spring-boot 2.1.1.RELEASE
    2 spring-cloud Greenwich.RELEASE
    3 spring-cloud-alibaba 2.1.2.RELEASE

    引入pom

    ......
    
    	<parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.1.RELEASE</version>
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
            <spring-cloud-alibaba.version>2.1.2.RELEASE</spring-cloud-alibaba.version>
        </properties>
    
    ......
    
        <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-dependencies</artifactId>
                        <version>${spring-cloud.version}</version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                    <!-- 引入SpringCloud alibaba -->
                    <dependency>
                        <groupId>com.alibaba.cloud</groupId>
                        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                        <version>${spring-cloud-alibaba.version}</version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                </dependencies>
            </dependencyManagement>
    ......
    
    2. Nacos配置中心
    2.1 引入pom
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
    
    2.2 修改bootsrap.yml
    # 此处为自定义,配置中心和注册中心共同属性,下文引入即可
    nacos:
      group: demo
      # 配置中心地址
      # nacos 服务地址 nginx 代理的地址
      server-addr: http://10.100.124.240:9948
      # 命名空间
      namespace: dev
    
    spring:
      profiles:
        active: dev
      application:
        name: nacos-demo-test
      cloud:
        nacos:
          server-addr: ${nacos.server-addr}
          config:
          # 默认  ${spring.cloud.nacos.server-addr}
          #  server-addr:
            file-extension: yaml
            prefix: ${spring.application.name}
          # dataID  ${prefix}-${spring.profiles.active}.${file-extension}
          # 命名空间 默认 public
            namespace: ${nacos.namespace}
          # 配置组  默认 DEFAULT_GROUP
            group: ${nacos.group}
          # 共享配置(公共配置)
            shared-configs:
              - data-id: nacos-demo.yaml
                # 可自定义
                group: ${nacos.group}
                refresh: true
                
    
    2.3 重要解释
    • Nacos Config 数据结构

    Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置.

    Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)

    • Spring Cloud 应用获取数据

    dataId,在 Nacos Config Starter 中,dataId 的拼接格式如下

    ${prefix} - ${spring.profiles.active} . ${file-extension}
    
    1. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

    2. spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档

      注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 {prefix}.{file-extension}

    3. file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

    group

    1. group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。
    • 自动注入

    Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。

    在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。

    • 动态刷新

    Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。

    如果需要对 Bean 进行动态刷新,给类添加 @RefreshScope@ConfigurationProperties注解。

    • Endpoint 信息查看

    Springboot支持这一点,Nacos Config也同时可以使用Endpoint来暴露信息。

    在maven 中添加 spring-boot-starter-actuator依赖,并在配置中允许 Endpoints 的访问。

    1. Spring Boot 1.x 中添加配置 management.security.enabled=false
    2. Spring Boot 2.x 中添加配置 management.endpoints.web.exposure.include=*

    Spring Boot 1.x 可以通过访问 http://127.0.0.1:8848/nacos_config 来查看 Nacos Endpoint 的信息。

    Spring Boot 2.x 可以通过访问 http://127.0.0.1:8848/actuator/nacos-config 来访问。

    2.4 更多
    配置项 key 默认值 说明
    服务端地址 spring.cloud.nacos.config.server-addr
    DataId前缀 spring.cloud.nacos.config.prefix spring.application.name
    Group spring.cloud.nacos.config.group DEFAULT_GROUP
    dataID后缀及内容文件格式 spring.cloud.nacos.config.file-extension properties dataId的后缀,同时也是配置内容的文件格式,目前只支持 properties
    配置内容的编码方式 spring.cloud.nacos.config.encode UTF-8 配置的编码
    获取配置的超时时间 spring.cloud.nacos.config.timeout 3000 单位为 ms
    配置的命名空间 spring.cloud.nacos.config.namespace 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源隔离等。
    AccessKey spring.cloud.nacos.config.access-key
    SecretKey spring.cloud.nacos.config.secret-key
    相对路径 spring.cloud.nacos.config.context-path 服务端 API 的相对路径
    接入点 spring.cloud.nacos.config.endpoint UTF-8 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
    是否开启监听和自动刷新 spring.cloud.nacos.config.refresh.enabled true
    2.5 动态刷新

    采用properties注入方式更改,确定配置某一前缀可更改刷新配置,统一管理,统一处理

    @RefreshScope
    @ConfigurationProperties(prefix = "nacos.refresh")
    @Component
    @Data
    public class RefreshConfig {
    
        private String test;
        private String name;
        private int port;
    }
    
    
    	@Autowired
        RefreshConfig refreshConfig;
        @GetMapping(value = "getRefreshConfig")
        @ApiOperation(value = "getRefreshConfig", notes = "Nacos 动态刷新", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public Response getRefreshConfig() {
            return Response.success(TMaps.set("name",refreshConfig.getName())
                    .set("test",refreshConfig.getTest())
                    .set("port",refreshConfig.getPort()));
        }
    
    3. Nacos 注册中心整合
    3.1 引入pom
    		<!--nacos 注册中心-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
    3.2 修改配置

    由于引用了nacos配置中心,配置配置在nacos,只需要添加注册中心相关配置即可

    spring:
      cloud:
        nacos:
          discovery:
            namespace: ${nacos.namespace}
            group: ${nacos.group}
          # 默认  ${spring.cloud.nacos.server-addr}
          #  server-addr: ${spring.cloud.nacos.server-addr} 服务名默认应用名
    
    3.3 项目启动
    • 修改启动类
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableCircuitBreaker
    @EnableFeignClients
    @EnableApiDoc
    public class PlatformServiceApp {
        public static void main(String[] args) {
            SpringApplication.run(PlatformServiceApp.class, args);
        }
    }
    
    java -Dfile.encoding=utf-8 -jar springboot服务
    

    加上编码,否则打包后访问nacos配置文件报错

    • 结果验证

    在这里插入图片描述

    • 启动多个节点

      修改端口号,启动服务

    在这里插入图片描述

    查看详情

    在这里插入图片描述

    4. 服务间调用
    • 参照以上步骤,新建一个服务

    • 用2.5 动态刷新的接口作为服务接口(启动两个服务,同时测试一下负载)

    • 开发客户端

      @FeignClient(value = "nacos-demo-test")
      public interface DemoFeignClient {
          @GetMapping(value = "test/getRefreshConfig")
          Response getRefreshConfig();
      }
      
      
      // controller
       @Autowired
          DemoFeignClient demoFeignClient;
          @PostMapping(value = "feign")
          @ApiOperation(value = "FeignDemo", notes = "Nacos 注册中心测试Feign调用", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
          public Response sendFeign() {
              return demoFeignClient.getRefreshConfig();
          }
      
      
      
    • debug运行,同时测试下负载均衡
      在这里插入图片描述
      之前重写扩展过feign,在此处断点跟踪,已经集成API文档,打开在想文档直接调试
      第一次调用:
      在这里插入图片描述
      第二次调用:
      在这里插入图片描述
      返回结果:
      在这里插入图片描述

    展开全文
  • nacos作为配置中心和服务注册中心 的完整使用案例

    万次阅读 多人点赞 2020-06-26 01:24:45
    第一步、下载并运行起nacos 下载nacos服务器的程序包:https://github.com/alibaba/nacos/releases/ 下载tar.gz或者zip包进行解压,进入bin,双击startup.cmd运行nacos 运行后访问一下 http://127.0.0.1:8848/nacos/...
  • Nacos入门学习

    千次阅读 2019-10-26 11:29:56
    Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态 DNS 服务三大功能。能够无缝对接Springcloud、Spring、Dubbo等流行框架 之前看直播中小马哥一直在推进这个...
  • 服务的生产者和消费者都引入nacos和dubbo的maven依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version&...
  • Nacos

    千次阅读 2020-03-01 15:53:56
    nacos
  • 什么是Nacos Nacos 是阿里巴巴的开源的项目,Nacos致力于帮助您发现、配置和管理微服务。... 将使用Nacos作为微服务架构中的注册中心(替代:eurekba、consul等传统方案)以及配置中心(spring cloud config)来使用。
  • 一、什么是Nacos 英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以...Nacos注册中心分为server与client,se...
  • Nacos注册中心高可用集群搭建及开机启动 参考该博客: Nacos高可用注册中心搭建(Nacos HA)
  • Nacos(二):SpringCloud项目中接入Nacos作为注册中心

    万次阅读 多人点赞 2019-07-09 17:18:01
    通过上一篇文章:Nacos介绍 简单了解了Nacos的发展历程和现状,本文我们开始Nacos试水的第一步: 使用Nacos注册中心 上周末(7.6)Nacos发布了V1.1.0版本,这次更新支持灰度配置、地址服务器模式、配置文件导入...
  • nacos注册中心

    2019-09-06 15:01:23
    nacos服务中心搭建与服务注册 一:下载地址 https://github.com/alibaba/nacos/releases 源码地址:https://github.com/alibaba/nacos 官网地址:https://nacos.io/zh-cn/docs/what-is-nacos.html 1.nacos专注于...
  • 注册中心Nacos

    2020-08-29 17:37:52
    注册中心Nacos Nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 使用环境准备 64 位操作系统,支持 Linux/Unix/Mac/Window JDK 1.8+ Maven 3.2x+ 服务端使用 下载安装包nacos-server-$...
  • Nacos注册中心

    2020-04-18 00:05:48
    在我之前的文章https://blog.csdn.net/GoSaint/article/details/85039317中,讲了使用nacos替换zookeeper作为注册中心,今天我使用nacos集成SpringBoot作为配置中心和注册中心!在这之前我们先来看下nacos都有哪些...
  • 认识 Nacos Nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,是阿里巴巴开源的组件。...Config Service(服务的配置服务) 和 Naming Service(服务注册与发现) 是重要部分 使用 Naco...

空空如也

1 2 3 4 5 ... 20
收藏数 17,560
精华内容 7,024
关键字:

nacos