精华内容
下载资源
问答
  • 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比

    万次阅读 多人点赞 2019-08-22 21:11:09
    服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和...

    前言

    服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。

    CAP理论

    CAP理论是分布式架构中重要理论

    • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
    • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

    关于

    P的理解,我觉得是在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用,

    而可用性是,某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求,CAP 不可能都取,只能取其中2个

    原因是

    如果C是第一需求的话,那么会影响A的性能,因为要数据同步,不然请求结果会有差异,但是数据同步会消耗时间,期间可用性就会降低。

    如果A是第一需求,那么只要有一个服务在,就能正常接受请求,但是对与返回结果变不能保证,原因是,在分布式部署的时候,数据一致的过程不可能想切线路那么快。

    再如果,同事满足一致性和可用性,那么分区容错就很难保证了,也就是单点,也是分布式的基本核心,好了,明白这些理论,就可以在相应的场景选取服务注册与发现了

     

    服务注册中心解决方案

    设计或者选型一个服务注册中心,首先要考虑的就是服务注册与发现机制。纵观当下各种主流的服务注册中心解决方案,大致可归为三类:

    • 应用内:直接集成到应用中,依赖于应用自身完成服务的注册与发现,最典型的是Netflix提供的Eureka

    • 应用外:把应用当成黑盒,通过应用外的某种机制将服务注册到注册中心,最小化对应用的侵入性,比如Airbnb的SmartStack,HashiCorp的Consul

    • DNS:将服务注册为DNS的SRV记录,严格来说,是一种特殊的应用外注册方式,SkyDNS是其中的代表

    注1:对于第一类注册方式,除了Eureka这种一站式解决方案,还可以基于ZooKeeper或者Etcd自行实现一套服务注册机制,这在大公司比较常见,但对于小公司而言显然性价比太低。

    注2:由于DNS固有的缓存缺陷,本文不对第三类注册方式作深入探讨。

    除了基本的服务注册与发现机制,从开发和运维角度,至少还要考虑如下五个方面:

    • 测活:服务注册之后,如何对服务进行测活以保证服务的可用性?

    • 负载均衡:当存在多个服务提供者时,如何均衡各个提供者的负载?

    • 集成:在服务提供端或者调用端,如何集成注册中心?

    • 运行时依赖:引入注册中心之后,对应用的运行时环境有何影响?

    • 可用性:如何保证注册中心本身的可用性,特别是消除单点故障?

     

    主流注册中心产品

    软件产品特性并非一成不变,如果发现功能特性有变更,欢迎评论指正

     NacosEurekaConsulCoreDNSZookeeper
    一致性协议CP+APAPCPCP
    健康检查TCP/HTTP/MYSQL/Client BeatClient BeatTCP/HTTP/gRPC/CmdKeep Alive
    负载均衡策略权重/
    metadata/Selector
    RibbonFabioRoundRobin
    雪崩保护
    自动注销实例支持支持支持不支持支持
    访问协议HTTP/DNSHTTPHTTP/DNSDNSTCP
    监听支持支持支持支持不支持支持
    多数据中心支持支持支持不支持不支持
    跨注册中心同步支持不支持支持不支持不支持
    SpringCloud集成支持支持支持不支持支持
    Dubbo集成支持不支持支持不支持支持
    K8S集成支持不支持支持支持不支持
    • Consul是支持自动注销服务实例, 请见文档: https://www.consul.io/api-docs/agent/service,在check的 DeregisterCriticalServiceAfter 这个参数-- 感谢@超帅的菜鸟博主提供最新信息
    • 新版本的Dubbo也扩展了对 Consul 的支持。 参考: https://github.com/apache/dubbo/tree/master/dubbo-registry

    Apache Zookeeper -> CP


    与 Eureka 有所不同,Apache Zookeeper 在设计时就紧遵CP原则,即任何时候对 Zookeeper 的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是 Zookeeper 不能保证每次服务请求都是可达的。

    从 Zookeeper 的实际应用情况来看,在使用 Zookeeper 获取服务列表时,如果此时的 Zookeeper 集群中的 Leader 宕机了,该集群就要进行 Leader 的选举,又或者 Zookeeper 集群中半数以上服务器节点不可用(例如有三个节点,如果节点一检测到节点三挂了 ,节点二也检测到节点三挂了,那这个节点才算是真的挂了),那么将无法处理该请求。所以说,Zookeeper 不能保证服务可用性。


    当然,在大多数分布式环境中,尤其是涉及到数据存储的场景,数据一致性应该是首先被保证的,这也是 Zookeeper 设计紧遵CP原则的另一个原因。

    但是对于服务发现来说,情况就不太一样了,针对同一个服务,即使注册中心的不同节点保存的服务提供者信息不尽相同,也并不会造成灾难性的后果。

    因为对于服务消费者来说,能消费才是最重要的,消费者虽然拿到可能不正确的服务实例信息后尝试消费一下,也要胜过因为无法获取实例信息而不去消费,导致系统异常要好(淘宝的双十一,京东的618就是紧遵AP的最好参照)。

    当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30~120s,而且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。

    在云部署环境下, 因为网络问题使得zk集群失去master节点是大概率事件,虽然服务能最终恢复,但是漫长的选举事件导致注册长期不可用是不能容忍的。

     

    Spring Cloud Eureka  -> AP

     


    Spring Cloud Netflix 在设计 Eureka 时就紧遵AP原则(尽管现在2.0发布了,但是由于其闭源的原因 ,但是目前 Ereka 1.x 任然是比较活跃的)。

    Eureka Server 也可以运行多个实例来构建集群,解决单点问题,但不同于 ZooKeeper 的选举 leader 的过程,Eureka Server 采用的是Peer to Peer 对等通信。这是一种去中心化的架构,无 master/slave 之分,每一个 Peer 都是对等的。在这种架构风格中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。

    在集群环境中如果某台 Eureka Server 宕机,Eureka Client 的请求会自动切换到新的 Eureka Server 节点上,当宕机的服务器重新恢复后,Eureka 会再次将其纳入到服务器集群管理之中。当节点开始接受客户端请求时,所有的操作都会在节点间进行复制(replicate To Peer)操作,将请求复制到该 Eureka Server 当前所知的其它所有节点中。

    当一个新的 Eureka Server 节点启动后,会首先尝试从邻近节点获取所有注册列表信息,并完成初始化。Eureka Server 通过 getEurekaServiceUrls() 方法获取所有的节点,并且会通过心跳契约的方式定期更新。

    默认情况下,如果 Eureka Server 在一定时间内没有接收到某个服务实例的心跳(默认周期为30秒),Eureka Server 将会注销该实例(默认为90秒, eureka.instance.lease-expiration-duration-in-seconds 进行自定义配置)。

    当 Eureka Server 节点在短时间内丢失过多的心跳时,那么这个节点就会进入自我保护模式。

    Eureka的集群中,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。除此之外,Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

    1. Eureka不再从注册表中移除因为长时间没有收到心跳而过期的服务;
    2. Eureka仍然能够接受新服务注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用);
    3. 当网络稳定时,当前实例新注册的信息会被同步到其它节点中;

    因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使得整个注册服务瘫痪。

    Consul:

    Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X)。

    Consul 内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等),使用起来也较为简单。

    Consul 遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比zookeeper使用的Paxos算法更加简单。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 ;在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。

    默认依赖于SDK

     

     Consul本质上属于应用外的注册方式,但可以通过SDK简化注册流程。而服务发现恰好相反,默认依赖于SDK,但可以通过Consul Template(下文会提到)去除SDK依赖。

    Consul Template

    Consul Template

    Consul,默认服务调用者需要依赖Consul SDK来发现服务,这就无法保证对应用的零侵入性。

    所幸通过Consul Template,可以定时从Consul集群获取最新的服务提供者列表并刷新LB配置(比如nginx的upstream),这样对于服务调用者而言,只需要配置一个统一的服务调用地址即可。

     

    Consul强一致性(C)带来的是:

    1. 服务注册相比Eureka会稍慢一些。因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功
    2. Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。

    Eureka保证高可用(A)和最终一致性:

    1. 服务注册相对要快,因为不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功
    2. 当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性。

    其他方面,eureka就是个servlet程序,跑在servlet容器中; Consul则是go编写而成。

    Nacos:

    Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。

    Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

    一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。
     

    参考链接:

    https://yq.aliyun.com/articles/698930

    https://nacos.io

    展开全文
  • 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秒钟

    展开全文
  • Eureka服务注册中心---SpringCloud

    万次阅读 2021-01-15 15:43:32
    Eureka服务注册中心 5.1 什么是Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移...

    Eureka服务注册中心

    5.1 什么是Eureka

    • Netflix在涉及Eureka时,遵循的就是API原则.
    • Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper.

    原理

    • Eureka基本的架构
      • Springcloud 封装了Netflix公司开发的Eureka模块来实现服务注册与发现 (对比Zookeeper).
      • Eureka采用了C-S的架构设计,EurekaServer作为服务注册功能的服务器,他是服务注册中心.
      • 而系统中的其他微服务,使用Eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员就可以通过EurekaServer来监控系统中各个微服务是否正常运行,Springcloud 的一些其他模块 (比如Zuul) 就可以通过EurekaServer来发现系统中的其他微服务,并执行相关的逻辑.

    在这里插入图片描述

    • 和Dubbo架构对比.

      在这里插入图片描述

    • Eureka 包含两个组件:Eureka ServerEureka Client.

    • Eureka Server 提供服务注册,各个节点启动后,回在EurekaServer中进行注册,这样Eureka Server中的服务注册表中将会储存所有课用服务节点的信息,服务节点的信息可以在界面中直观的看到.

    • Eureka Client 是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会向EurekaServer发送心跳 (默认周期为30秒) 。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除掉 (默认周期为90s).

    • 三大角色

      • Eureka Server:提供服务的注册与发现
      • Service Provider:服务生产方,将自身服务注册到Eureka中,从而使服务消费方能狗找到
      • Service Consumer:服务消费方,从Eureka中获取注册服务列表,从而找到消费服务
    • 目前工程状况

    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2Cf7adP-1610696585775)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210114232936013.png)]

    eureka-server

    1. springcloud-eureka-7001 模块建立

    2. pom.xml 配置

      <!--导包~-->
      <dependencies>
          <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
          <!--导入Eureka Server依赖-->
          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-eureka-server</artifactId>
              <version>1.4.6.RELEASE</version>
          </dependency>
          <!--热部署工具-->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-devtools</artifactId>
          </dependency>
      </dependencies>
      
    3. application.yml

      server:
        port: 7001
      
      # Eureka配置
      eureka:
        instance:
          # Eureka服务端的实例名字
          hostname: 127.0.0.1
        client:
          # 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
          register-with-eureka: false
          # fetch-registry如果为false,则表示自己为注册中心,客户端的化为 ture
          fetch-registry: false
          # Eureka监控页面~
          service-url:
            defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      

    源码中Eureka的默认端口以及访问路径:

    在这里插入图片描述

    1. 主启动类

      /**
       * @Auther: csp1999
       * @Date: 2020/05/18/10:26
       * @Description: 启动之后,访问 http://127.0.0.1:7001/
       */
      @SpringBootApplication
      // @EnableEurekaServer 服务端的启动类,可以接受别人注册进来~
      @EnableEurekaServer
      public class EurekaServer_7001 {
          public static void main(String[] args) {
              SpringApplication.run(EurekaServer_7001.class,args);
          }
      }
      
    2. 启动成功后访问 http://localhost:7001/ 得到以下页面

    在这里插入图片描述

    eureka-client

    调整之前创建的springlouc-provider-dept-8001

    1. 导入Eureca依赖

      <!--Eureka依赖-->
      <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
          <version>1.4.6.RELEASE</version>
      </dependency>
      
      
    2. application中新增Eureca配置

      # Eureka配置:配置服务注册中心地址
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:7001/eureka/
      
    3. 为主启动类添加@EnableEurekaClient注解

      /**
       * @Auther: csp1999
       * @Date: 2020/05/17/22:09
       * @Description: 启动类
       */
      @SpringBootApplication
      // @EnableEurekaClient 开启Eureka客户端注解,在服务启动后自动向注册中心注册服务
      @EnableEurekaClient
      public class DeptProvider_8001 {
          public static void main(String[] args) {
              SpringApplication.run(DeptProvider_8001.class,args);
          }
      }
      
    4. 先启动7001服务端后启动8001客户端进行测试,然后访问监控页http://localhost:7001/ 产看结果如图,成功

    在这里插入图片描述

    1. 修改Eureka上的默认描述信息

      # Eureka配置:配置服务注册中心地址
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:7001/eureka/
        instance:
          instance-id: springcloud-provider-dept-8001 #修改Eureka上的默认描述信息
      
      

      结果如图:
      在这里插入图片描述

      如果此时停掉springcloud-provider-dept-8001 等30s后 监控会开启保护机制:
      在这里插入图片描述

    2. 配置关于服务加载的监控信息

    热部署配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdmsQkHa-1610696585777)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210115003227472.png)]

    完善监控信息(actuator)

    在这里插入图片描述

    pom.xml中添加依赖

    <!--actuator完善监控信息-->
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    

    application.yml中添加配置

    # info配置
    info:
    # 项目的名称
     app.name: haust-springcloud
    # 公司的名称
     company.name: 河南科技大学西苑校区软件学院  
    

    此时刷新监控页,点击进入在这里插入图片描述跳转新页面显示如下内容:

    在这里插入图片描述

    自我保护机制:好死不如赖活着

    一句话总结就是:某时刻某一个微服务不可用,eureka不会立即清理,依旧会对该微服务的信息进行保存!

    • 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last min),当后者(最后一分钟收到的心跳数)小于前者(心跳阈值)的时候,触发保护机制,会出现红色的警告:EMERGENCY!EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEGING EXPIRED JUST TO BE SAFE.从警告中可以看到,eureka认为虽然收不到实例的心跳,但它认为实例还是健康的,eureka会保护这些实例,不会把它们从注册表中删掉。
    • 该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务,如果eureka因网络故障而把微服务误删了,那即使网络恢复了,该微服务也不会重新注册到eureka server了,因为只有在微服务启动的时候才会发起注册请求,后面只会发送心跳和服务列表请求,这样的话,该实例虽然是运行着,但永远不会被其它服务所感知。所以,eureka server在短时间内丢失过多的客户端心跳时,会进入自我保护模式,该模式下,eureka会保护注册表中的信息,不在注销任何微服务,当网络故障恢复后,eureka会自动退出保护模式。自我保护模式可以让集群更加健壮。
    • 但是我们在开发测试阶段,需要频繁地重启发布,如果触发了保护机制,则旧的服务实例没有被删除,这时请求有可能跑到旧的实例中,而该实例已经关闭了,这就导致请求错误,影响开发测试。所以,在开发测试阶段,我们可以把自我保护模式关闭,只需在eureka server配置文件中加上如下配置即可:eureka.server.enable-self-preservation=false【不推荐关闭自我保护机制】

    详细内容可以参考下这篇博客内容:https://blog.csdn.net/wudiyong22/article/details/80827594

    注册进来的微服务,获取一些消息(团队开发会用到)

    DeptController.java新增方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdDAPdyk-1610696585779)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210115004810922.png)]

    /**
     * DiscoveryClient 可以用来获取一些配置的信息,得到具体的微服务!
     */
    @Autowired
    private DiscoveryClient client;
    
    /**
     * 获取一些注册进来的微服务的信息~,
     *
     * @return
     */
    @GetMapping("/dept/discovery")
    public Object discovery() {
        // 获取微服务列表的清单
        List<String> services = client.getServices();
        System.out.println("discovery=>services:" + services);
        // 得到一个具体的微服务信息,通过具体的微服务id,applicaioinName;
        List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
        for (ServiceInstance instance : instances) {
            System.out.println(
                    instance.getHost() + "\t" + // 主机名称
                            instance.getPort() + "\t" + // 端口号
                            instance.getUri() + "\t" + // uri
                            instance.getServiceId() // 服务id
            );
        }
        return this.client;
    }
    

    在这里插入图片描述

    主启动类中加入@EnableDiscoveryClient 注解

    @SpringBootApplication
    // @EnableEurekaClient 开启Eureka客户端注解,在服务启动后自动向注册中心注册服务
    @EnableEurekaClient
    // @EnableEurekaClient 开启服务发现客户端的注解,可以用来获取一些配置的信息,得到具体的微服务
    @EnableDiscoveryClient
    public class DeptProvider_8001 {
        ...
    }
    
    

    结果如图:

    在这里插入图片描述

    在这里插入图片描述

    集群环境配置

    在这里插入图片描述

    1.初始化

    新建springcloud-eureka-7002、springcloud-eureka-7003 模块

    1.为pom.xml添加依赖 (与springcloud-eureka-7001相同)

    <!--导包~-->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--导入Eureka Server依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--热部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
    

    2.application.yml配置(与springcloud-eureka-7001相同)

    server:
      port: 7003
    
    # Eureka配置
    eureka:
      instance:
        hostname: localhost # Eureka服务端的实例名字
      client:
        register-with-eureka: false # 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
        fetch-registry: false # fetch-registry如果为false,则表示自己为注册中心
        service-url: # 监控页面~
          # 重写Eureka的默认端口以及访问路径 --->http://localhost:7001/eureka/
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    

    3.主启动类(与springcloud-eureka-7001相同)

    /**
     * @Auther: csp1999
     * @Date: 2020/05/18/10:26
     * @Description: 启动之后,访问 http://127.0.0.1:7003/
     */
    @SpringBootApplication
    // @EnableEurekaServer 服务端的启动类,可以接受别人注册进来~
    public class EurekaServer_7003 {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServer_7003.class,args);
        }
    }
    
    

    2.集群成员相互关联

    配置一些自定义本机名字,找到本机hosts文件并打开

    在这里插入图片描述

    在hosts文件最后加上,要访问的本机名称,默认是localhost

    在这里插入图片描述

    修改application.yml的配置,如图为springcloud-eureka-7001配置,springcloud-eureka-7002/springcloud-eureka-7003同样分别修改为其对应的名称即可

    在这里插入图片描述

    在集群中使springcloud-eureka-7001关联springcloud-eureka-7002、springcloud-eureka-7003

    完整的springcloud-eureka-7001下的application.yml如下

    server:
      port: 7001
    
    #Eureka配置
    eureka:
      instance:
        hostname: eureka7001.com #Eureka服务端的实例名字
      client:
        register-with-eureka: false #表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
        fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
        service-url: #监控页面~
          #重写Eureka的默认端口以及访问路径 --->http://localhost:7001/eureka/
          # 单机: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
          # 集群(关联):7001关联7002、7003
          defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    
    

    同时在集群中使springcloud-eureka-7002关联springcloud-eureka-7001、springcloud-eureka-7003

    完整的springcloud-eureka-7002下的application.yml如下

    server:
      port: 7002
    
    #Eureka配置
    eureka:
      instance:
        hostname: eureka7002.com #Eureka服务端的实例名字
      client:
        register-with-eureka: false #表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
        fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
        service-url: #监控页面~
          #重写Eureka的默认端口以及访问路径 --->http://localhost:7001/eureka/
          # 单机: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
          # 集群(关联):7002关联7001、7003
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
    

    springcloud-eureka-7003配置方式同理可得.

    通过springcloud-provider-dept-8001下的yml配置文件,修改Eureka配置:配置服务注册中心地址

    # Eureka配置:配置服务注册中心地址
    eureka:
      client:
        service-url:
          # 注册中心地址7001-7003
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
      instance:
        instance-id: springcloud-provider-dept-8001 #修改Eureka上的默认描述信息
    

    这样模拟集群就搭建号了,就可以把一个项目挂载到三个服务器上了

    在这里插入图片描述

    对比和Zookeeper

    1. 回顾CAP原则

    RDBMS (MySQL\Oracle\sqlServer) ===> ACID

    NoSQL (Redis\MongoDB) ===> CAP

    ACID

    • A (Atomicity) 原子性
    • C (Consistency) 一致性
    • I (Isolation) 隔离性
    • D (Durability) 持久性

    CAP

    • C (Consistency) 强一致性
    • A (Availability) 可用性
    • P (Partition tolerance) 分区容错性

    CAP的三进二:CA、AP、CP

    CAP理论的核心

    • 一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
    • 根据CAP原理,将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类
      • CA:单点集群,满足一致性,可用性的系统,通常可扩展性较差
      • CP:满足一致性,分区容错的系统,通常性能不是特别高
      • AP:满足可用性,分区容错的系统,通常可能对一致性要求低一些

    Eureka VS Zookeeper

    著名的CAP理论指出,一个分布式系统不可能同时满足C (一致性) 、A (可用性) 、P (容错性),由于分区容错性P再分布式系统中是必须要保证的,因此我们只能再A和C之间进行权衡。

    • Zookeeper 保证的是 CP —> 满足一致性,分区容错的系统,通常性能不是特别高
    • Eureka 保证的是 AP —> 满足可用性,分区容错的系统,通常可能对一致性要求低一些

    Zookeeper保证的是CP

    当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接收服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但zookeeper会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30-120s,且选举期间整个zookeeper集群是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因为网络问题使得zookeeper集群失去master节点是较大概率发生的事件,虽然服务最终能够恢复,但是,漫长的选举时间导致注册长期不可用,是不可容忍的。

    Eureka保证的是AP

    Eureka看明白了这一点,因此在设计时就优先保证可用性。Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册时,如果发现连接失败,则会自动切换至其他节点,只要有一台Eureka还在,就能保住注册服务的可用性,只不过查到的信息可能不是最新的,除此之外,Eureka还有之中自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

    • Eureka不在从注册列表中移除因为长时间没收到心跳而应该过期的服务
    • Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上 (即保证当前节点依然可用)
    • 当网络稳定时,当前实例新的注册信息会被同步到其他节点中

    因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪

    展开全文
  • server: port: 8001 ... defaultZone: http://127.0.0.1:7001/eureka/ #注意要与服务中心配置的url一致 instance: prefer-ip-address: true #跨域访问 spring: application: name: client-demo
  • Nacos整合SpringCloud(配置中心、注册中心

    万次阅读 多人点赞 2019-06-03 12:14:27
    2.Nacos配置中心整合 2.1 启动 Nacos Server 并添加配置 1.下载地址: 直接下载:Nacos Server 下载页 源码构建:Github 项目页面 2.启动 Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m s...

    1.什么是Nacos?

    Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

    2.Nacos Config整合

    Nacos Config Starter实现Spring Cloud应用程序的外部化配置。

    2.1 启动 Nacos Server 并添加配置

    1.下载地址:

    1. 直接下载:Nacos Server 下载页
    2. 源码构建:Github 项目页面

    2.启动

    1. Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone
    2. Windows 操作系统,执行命令 cmd startup.cmd
    3. 默认账户密码:nacos

    3.在命令行执行如下命令,向 Nacos Server 中添加一条配置,也可在控制台中手动添加。

     curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=user.id=1%0Auser.name=james%0Auser.age=17"
    
    添加的配置的详情如下
    
     dataId 为 nacos-config-example.properties
     group 为 DEFAULT_GROUP
     
     内容如下
     
     	user.id=1
     	user.name=james
     	user.age=17	
    

    在这里插入图片描述

    2.1 引入pom文件
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
    
    2.2 添加bootstrap.properties
    spring.application.name=nacos-config-example
    spring.cloud.nacos.config.server-addr=ip:8848 #服务器ip或本地ip
    
    2.3 获取相应的配置
    @RefreshScope //打开动态刷新功能
     class SampleController {
    
     	@Value("${user.name}")
     	String userName;
    
     	@Value("${user.age}")
     	int age;
     }
    
    2.4 应用启动

    1.添加/application.properties

    server.port=18084
    management.endpoints.web.exposure.include=*
    

    2.App启动
    在这里插入图片描述

    2.5 原理

    1.Nacos Config 数据结构

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

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

    2.Spring Cloud 应用获取数据

    dataId

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

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

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

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

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

    group
    • group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

    3.自动注入

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

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

    4.动态刷新

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

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

    5.Endpoint 信息查看

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

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

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

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

    Spring Boot 2.x 可以通过访问 http://127.0.0.1:18084/actuator/nacos-config 来访问。
    在这里插入图片描述

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

    3.Nacos Discovery 整合

    Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现。

    3.1 添加依赖
    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
    
    3.2 application.properties
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    
    3.3 服务注册和发现
    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
    
     	public static void main(String[] args) {
     		SpringApplication.run(Application.class, args);
     	}
    
     	@RestController
     	class EchoController {
     		@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
     		public String echo(@PathVariable String string) {
     				return string;
     		}
     	}
     }
    
    3.4 启动Nacos服务端
    1. 通过从源代码下载或构建来安装Nacos Server。推荐的最新版本Nacos Server
      1. 下载Nacos Server 下载页面
      2. 从源代码构建:通过git clone git@github.com获取源代码:来自Github Nacos的alibaba / Nacos.git并构建您的代码。有关详细信息,请参阅构建
    2. 运行
      1. Linux / Unix / Mac,执行 sh startup.sh -m standalone
      2. Windows,执行 cmd startup.cmd
    3.5 启动客户端

    1.添加application.properties配置

     spring.application.name=service-provider
     server.port=18082
    
    3.6 查询服务
    http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=service-provider
    

    在这里插入图片描述

    3.7 服务发现

    Nacos Discovery Starter默认集成了Ribbon,因此对于使用Ribbon进行负载平衡的组件,您可以直接使用Nacos服务发现。

    NacosServerList实现com.netflix.loadbalancer.ServerList接口并在@ConditionOnMissingBean下自动注入它。

    使用RestTemplate和FeignClient

    1. 添加@LoadBlanced注释以使Ribbon可以访问RestTemplate

       @Bean
       @LoadBalanced
       public RestTemplate restTemplate() {
           return new RestTemplate();
       }
      
    2. FeignClient默认集成了功能区,显示了如何配置FeignClient。

       @FeignClient(name = "service-provider")
       public interface EchoService {
           @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
           String echo(@PathVariable("str") String str);
       }
      

      使用@FeignClient批注将EchoService接口包装为FeignClient,其属性名称对应于服务名称service-provider

      方法的@RequestMapping注释echo将echo方法与URL对应/echo/{str}@PathVariable注释映射{str}strecho方法的参数的URL路径中。

    3. 完成上述配置后,将它们注入TestController。

       @RestController
       public class TestController {
       
           @Autowired
           private RestTemplate restTemplate;
           @Autowired
           private EchoService echoService;
      
           //RestTemplate
           @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
           public String rest(@PathVariable String str) {
               return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
           }
           //FeignClient
           @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
           public String feign(@PathVariable String str) {
               return echoService.echo(str);
           }
       }
      
    4. 添加application.properties配置

       spring.application.name=service-consumer
       server.port=18083
      
    5. 运行

    验证

    1. http://127.0.0.1:18083/echo-rest/1234在浏览器地址栏中输入并单击转到,我们可以看到浏览器显示nacos-discovery-provider-example返回的消息“hello Nacos Discovery 1234”,以证明服务发现有效。
      在这里插入图片描述
    1. http://127.0.0.1:18083/echo-feign/12345在浏览器地址栏中输入并单击转到,我们可以看到浏览器显示nacos-discovery-provider-example返回的消息“hello Nacos Discovery 12345”,以证明服务发现有效。

    在这里插入图片描述

    3.8 原理

    服务注册

    在Spring云应用程序的启动阶段,将监视WebServerInitializedEvent事件。在初始化Web容器后收到WebServerInitializedEvent事件时,将触发注册操作,并调用ServiceRegistry注册方法以将服务注册到Nacos Server。

    服务发现

    NacosServerList实现com.netflix.loadbalancer.ServerList接口并在@ConditionOnMissingBean下自动注入它。功能区默认为集成。

    端点

    Nacos Discovery Starter还支持Spring Boot执行器端点的实现。

    先决条件:

    将依赖spring-boot-starter-actuator添加到pom.xml文件中,并配置端点安全策略。

    Spring Boot 1.x:添加配置management.security.enabled = false

    Spring Boot 2.x:添加配置management.endpoints.web.exposure.include = *

    要查看端点信息,请访问以下URL:

    Spring Boot1.x:Nacos Discovery端点URL是http://127.0.0.1:18083/nacos_discovery

    Spring Boot2.x:Nacos Discovery端点URL是http://127.0.0.1:18083/actuator/nacos-discovery

    在这里插入图片描述

    3.9 更多
    配置项默认值描述
    服务器地址spring.cloud.nacos.discovery.server-addrnacos注册中心地址
    服务名spring.cloud.nacos.discovery.servicespring.application.name服务名
    权重spring.cloud.nacos.discovery.weight1值从1到100,值越大,重量越大
    IPspring.cloud.nacos.discovery.ipip address to registry,最高优先级
    网络接口spring.cloud.nacos.discovery.network-interface未配置IP时,注册的IP地址为网络接口对应的IP地址。如果未配置此项,则默认采用第一个网络接口的地址。
    端口spring.cloud.nacos.discovery.port-1注册端口,无需配置即可自动检测
    namesapcespring.cloud.nacos.discovery.namespace开发环境(dev、pro等)
    accesskeyspring.cloud.nacos.discovery.access-key
    secretkeyspring.cloud.nacos.discovery.secret-key
    元数据spring.cloud.nacos.discovery.metadata扩展数据,使用Map格式配置
    日志名称spring.cloud.nacos.discovery.log-name
    端点spring.cloud.nacos.discovery.endpoint服务的域名,通过该域名可以动态获取服务器地址。
    集成功能区ribbon.nacos.enabledtrue
    展开全文
  • startup.cmd -m standalone
  • server: port: 7001 eureka: server: enable-self-preservation: false #防止由于Eureka的机制导致Client被错误显示在线 仅在开发环境使用 ... register-with-eureka: false #不显示对server应用的注册
  • Nacos做服务注册中心使用案例

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

    万次阅读 多人点赞 2019-07-08 20:46:32
    在 Spring Cloud 体系中,几乎每个角色都会有两个以上的产品提供选择,比如在注册中心有:Eureka、Consul、zookeeper、etcd 等;网关的产品有 Zuul、Spring Cloud Gateway 等。在注册中心产品中,最常使用的是 ...
  • 04-Nacos服务注册中心最佳实践

    万次阅读 多人点赞 2021-07-22 08:41:40
    Nacos注册中心简介 背景分析 在微服务中,首先需要面对的问题就是如何查找服务(软件即服务),如何在不同的服务之间进行通信?如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带,由此注册...
  • 1 ...Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍。 2 3 4 5 6 7 8
  • eureka: #client: ... # defaultZone: http://127.0.0.1:7001/eureka/ #注意要与服务中心配置的url一致 instance: prefer-ip-address: true #显示ip instance-id: payment8001 #服务名(服务名称+端口)
  • Eureka服务注册中心搭建

    万次阅读 2019-01-18 14:10:58
    单机模式Eureka注册中心搭建 引入Eureka-Server依赖 创建启动类 添加配置 高可用Eureka注册中心搭建 双节点注册中心 修改配置文件 修改hosts文件 启动测试 多节点注册中心 修改配置文件 启动测试 常见...
  • 服务注册中心:Eureka

    千次阅读 多人点赞 2021-01-30 12:46:44
    目录第一章 注册中心介绍1.1、什么是注册中心1.2、为啥用注册中心1.3、常见的注册中心第二章 Eureka介绍2.1、Eureka的介绍2.2、Eureka的三种角色2.3、Eureka的运行流程第三章 Eureka入门案例3.1、创建注册中心3.2、...
  • Nacos(二):SpringCloud项目中接入Nacos作为注册中心

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

    万次阅读 2019-04-23 20:23:24
    Nacos专为 Dubbo 而生的注册中心与配置中心 nacos官方文档 Nacos 有三大主要功能: 服务发现和服务健康监测 Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。 动态配置管理 配置中心化...
  • dubbo注册中心

    万次阅读 2019-06-13 14:17:12
    Dubbo目前支持4种注册中心,(multicast zookeeper redis simple) 推荐使用Zookeeper注册中心, Multicast注册中心 不需要启动任何中心节点,只要广播地址一样,就可以互相发现 组播受网络结构限制,只适合小规模...
  • Nacos注册中心

    千次阅读 2020-11-28 20:33:20
    一 Nacos注册中心 1 常见注册中心 Eureka:Eureka是Spring Cloud Netflix中的重要组件,主要作用就是做服务注册和发现。2.0遇到性能瓶颈,停止维护,现在已经闭源。 Consul:Consul是基于GO语言开发的开源工具,...
  • Dubbo与注册中心Zookeeper的交互过程

    万次阅读 多人点赞 2018-06-09 19:15:13
    Zookeeper作为注册中心在Dubbo框架中的作用过程。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 318,298
精华内容 127,319
关键字:

注册中心