Spring cloud--服务注册和服务发现-Eureka 的使用-阿里云开发者社区

开发者社区> 调皮仔3683> 正文

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

简介: 在微服务架构中,Spring Cloud为基于JVM的云应用开发中的服务发现、负载均衡、断路器、智能路由、配置管理、控制总线等等操作提供了一种简单、快捷的开发方式。
+关注继续查看
一、Spring Cloud Netflix

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

它主要提供的模块包括:
服务发现注册(Eureka)
客户端负载均衡(Ribbon)
断路器(Hystrix)
智能路由(Zuul)
 
开源地址:
http://netflix.github.io/
https://github.com/Netflix
 
二、服务注册和服务发现
3797b835444afbd133b5ec09e251949e9ece7f57
调用关系说明:
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将会尝试保护其服务注册表中的信息,暂时不会注销服务注册表中的服务。

四、基本流程:
a31a6ecea99b7418fa387f39ab1077b5417bc893

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更加“专业”,因为注册服务更重要的是可用性,我们可以接受短期内达不到一致性的状况。
当然,这也要看具体的使用场景。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
聊聊微服务的服务注册与发现
一个好的服务注册发现中间件,应该是能完整地满足服务开发和治理的基础功能,然后才是性能和高可用。如果没有想清楚前面的功能,再高的可用性和性能都是浮云。最后,安全也同样重要。下面将从 服务注册、服务发现、容灾和高可用三个大方面来回答这些问题的主流做法。
2896 0
SpringBoot实战(三)之使用RestFul Web服务
一、导入maven依赖 4.0.0 org.springframework gs-consuming-rest 0.1.0 org.springframework.
1764 0
SpringCloud之服务注册与发现Eureka+客户端Feign
SpringCloud之服务注册与发现Eureka+客户端Feign前言  SpringCloud 是微服务中的翘楚,最佳的落地方案。   Eureka 作为注册中心,是 SpringCloud 体系中最重要最核心的组件之一。
2654 0
spring-boot | 集成短信验证码服务
目前,手机号对于我们的日常生活有着非常重要的作用,特别是手机号码实名认证以后,手机号如同你的身份证一样记录着我们的各种信息。所以短信验证码作为手机号的验证方式也显得尤为重要。因此,很多公司或网站用短信验证码来验证我们的身份信息。
4219 0
Spring Cloud配置服务器
Spring Cloud配置服务器 分布式配置 分布式配置架构 Spring Cloud配置服务器 服务端Environment仓储 Spring Cloud配置客户端 传统架构 Spring Cloud Config架构 Spring Cloud Config Server Spring C.
1550 0
基于日志服务构建业务可观测性系统
根据海恩法则(Heinrich‘s Law),每一起严重事故背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。如果提前处理那些不那么严重的问题,其实是可以避免后续的严重事故的,也就避免了其带来的巨大压力和损失。
244 0
Nacos配置中心和服务的注册发现
在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用。Nacos既可以做配置中心,也可以做注册中心。我们先来看看在项目中如何使用Nacos做配置中心。
235 0
SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务
一、导入依赖 4.0.0 org.springframework gs-actuator-service 0.1.0 org.springframework.
1524 0
《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置
在微服务架构中,Spring Cloud为基于JVM的云应用开发中的服务发现、负载均衡、断路器、智能路由、配置管理、控制总线等等操作提供了一种简单、快捷的开发方式。
4925 0
+关注
调皮仔3683
来自广州的开发仔一枚,从事互联网金融系统和电子商务系统的技术研发
115
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载