Spring cloud--服务注册和服务发现-Eureka 的使用

一、Spring Cloud Netflix

该项目是Spring Cloud的核心子项目,是对Netflix公司一系列开源产品的封装。它为Spring Boot应用提供了自配置的整合,只需要通过一些简单的注解,就可以快速地在Spring Cloud的应用中使用起来。

它主要提供的模块包括:

服务发现注册(Eureka)

客户端负载均衡(Ribbon)

断路器(Hystrix)

智能路由(Zuul)

 

开源地址:

http://netflix.github.io/

https://github.com/Netflix

 

二、服务注册和服务发现

调用关系说明:

1.服务提供者在启动时,向注册中心注册自己提供的服务。

2.服务消费者在启动时,向注册中心订阅自己所需的服务。

3.注册中心返回服务提供者地址给消费者。

4.服务消费者从提供者地址中调用消费者。

    

注意! 下面的服务端指:注册中心,客户端指:提供者和消费者

 

  三、如何使用Eureka进行服务注册和发现

1、服务端添加依赖

2、服务端添加配置

# server (eureka 默认端口为:8761)

# spring

# eureka

# 是否注册到eureka

# 是否从eureka获取注册信息

# eureka服务器的地址(注意:地址最后面的 /eureka/ 这个是固定值)

3、服务端添加注解

4、客户端添加依赖

5、客户端添加配置

提供者

# server

# spring

# eureka

消费者

# server

# spring

# eureka

6、客户端添加注解

注意:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

分析:是由于Eureka进入了保护模式。

在保护模式下,Eureka Server将会尝试保护其服务注册表中的信息,暂时不会注销服务注册表中的服务。

四、基本流程:

1、  最左边的client(即服务提供者)发起us-east-1c注册请求;

2、  Eureka Server集群中的其他两个node(us-east-1d和us-east-1e进行Replicate复制);

3、  图下放的两个client(即服务消费者)分别向三个server获取注册信息及Get Registry。

五、和Zookeeper的对比

1、分布式系统的CAP理论:

一致性(C):所有的节点上的数据时刻保持同步。

可用性(A):每个请求都能接受到一个响应,无论响应成功或失败。

分区容错性(P):系统应该能持续提供服务,即使系统内部有消息丢失(分区)。

 

由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。

在此Zookeeper保证的是CP, 而Eureka则是AP。

 

2、Zookeeper保证CP

ZooKeeper是个 CP的,即任何时刻对ZooKeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性、但是它不能保证每次服务请求的可用性(注:也就是在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果)。

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

 

3、Eureka保证AP

Eureka看明白了这一点,因此在设计时就优先保证可用性。我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。

如果Eureka服务节点在短时间里丢失了大量的心跳连接(注:可能发生了网络故障),那么这个 Eureka节点会进入“自我保护模式”,同时保留那些“心跳死亡”的服务注册信息不过期。此时,这个Eureka节点对于新的服务还能提供注册服务,对于“死亡”的仍然保留,以防还有客户端向其发起请求。当网络故障恢复后,这个Eureka节点会退出“自我保护模式”。Eureka的哲学是,同时保留“好数据”与“坏数据”总比丢掉任何数据要更好。

 

4、总结

Eureka作为单纯的服务注册中心来说要比zookeeper更加“专业”,因为注册服务更重要的是可用性,我们可以接受短期内达不到一致性的状况。

当然,这也要看具体的使用场景。

时间: 2024-10-28 17:06:56

Spring cloud--服务注册和服务发现-Eureka 的使用的相关文章

Spring Cloud 接入 EDAS 之服务发现篇

目前 EDAS 已经完全支持 Spring Cloud 应用的部署了,您可以直接将 Spring Cloud 应用部署到 EDAS 中. 同时,为了更好地将阿里中间件的功能以云服务的方式提供给大家,我们也对 Spring Cloud 中的一些组件进行了加强或替换的工作. 让我们先来聊聊服务发现.我们知道原生的 Spring Cloud 支持多种服务注册与发现的方式,Eureka . Consul . Zookeeper 等,目前使用最多最广的就是 Eureka了,那我们就先从一个简单的 Eure

《Spring Cloud与Docker微服务架构实战》配套代码

不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将代码放出. 本次放出的代码: 共计70+个DEMO 覆盖Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Bus.Spring Cloud Sleuth.Docker.Docker Compose等. 1-11章代码地址: ht

Docker Swarm运行Spring Cloud应用(二):Eureka高可用

在上篇文章中介绍了如何如何在Docker Swarm集群中部署Spring Cloud应用.本文章为大家介绍如何实现Eureka的高可用. Docker Swarm运行Spring Cloud应用(一):部署 Docker Swarm运行Spring Cloud应用(二):Eureka高可用(本文) 基础服务独立部署 把所有服务一次性部署好非常方便,但是在生产环境中使用的时候需要考虑这样一些因素: 在生产环境中的基础服务,如Eureka由于更新不频繁,应该和频繁更新应用服务分开部署 作为基础服务

《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置

一.版本的说明 Angel版本对应Spring Boot 1.2.x,可以使用Spring Boot 1.3.x: Brixton版本对应Spring Boot 1.3.x,可以使用Spring Boot 1.4.x: Camden版本对应Spring Boot 1.4.x,可以使用Spring Boot 1.5.x: Dalston版本对应Spring Boot 1.5.x 二.应用进行热部署 添加依赖: <dependency> <groupId>org.springframe

《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群

一. Eureka的服务认证 1. 服务端添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 2. 服务端添加配置 服务认证 security.basic.enabled=true security.user.name=ronco

Kubernetes和Spring Cloud哪个部署微服务更好?

Spring Cloud 和Kubernetes都自称自己是部署和运行微服务的最好环境,但是它们在本质上和解决不同问题上是有很大差异的.在本文中,我们将看到每个平台如何帮助交付基于微服务的架构(MSA),它们擅长哪个领域,并且如何两全其美的使用从而在微服务之旅上获得成功. 背景 最近我读了 A. Lukyanchikov的一篇非常棒的文章(https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do),

使用Spring Cloud和Docker构建微服务

本文讲的是使用Spring Cloud和Docker构建微服务,[编者的话]这是系列博文中的第一篇,本文作者使用Spring Cloud和Docker构建微服务平台,文章的例子浅显易懂. 本系列博文主要向大家介绍如何使用Spring Cloud和Docker构建微服务平台. 什么是Spring Cloud? Spring Cloud 是Pivotal提供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Co

几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程. 本文选自<架构解密:从分布式到微服务>. 本文盘点了四种常用的微服务架构方案,分别是ZeroC IceGrid.Spring Cloud.基于消息队列与Docker Swarm. ZeroC IceGrid微服

硅谷Spring项目组专家教你利用Spring Cloud构建微服务

  在这一系列文章中,我将为您介绍利用Spring Cloud和Docker构建微服务平台的一些基本概念.   什么是Spring Cloud   Spring Cloud是一系列Pivotal云应用开放工具的合称,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式,为构建分布式系统的一些常见模式提供了解决方案.   如果您熟悉构建应用程序的Spring Framework,那么对Spri