1.Spring Cloud 服务注册与服务发现之Eureka使用入门

服务注册与服务发现

Spring Cloud中默认支持三种

  • Eureka

    Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。CAP理论中的AP。

  • Consul

    Consul是一个高可用的分布式服务注册中心,由HashiCorp公司推出,Golang实现的开源共享的服务工具。CAP理论中的AC。

  • Zookeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。CAP理论中的CP。

关于CAP理论,在文章末尾添加。

关于服务注册选型,参考文章:分布式架构之服务注册中心选型。这里面讲了Eureka,Consul,Zookeeper,ETCD特点区别。

而我之前做的项目中,是使用的Spring Cloud Alibaba Nacos,后续更新。

本篇主要讲解如何使用Eureka作为注册中心。

Eureka介绍

Eureka包含两个组件。Eureka Server,Eureka Client。其他的不多废话了,直接上码,边操作边补充。

创建Eureka Server
  1. 使用Idea中的Spring Initializr快速创建Spring Boot 项目

  2. 勾选自己需要的依赖。建议勾选,这样文件中会自动添加这些依赖。这里需用到Eureka Server。

  3. 点击finish。

  4. 在配置文件中添加配置

  5. 启动类添加核心注解

  6. 补充

    1. 在浏览器访问的页面中我们看到,provider-server也作为服务,注册到了Eureka中,如何关闭配置文件中添加,。

      这个 错,可以忽略掉,在补充1中也提到过,provider-server也作为服务,注册到了Eureka中。在启动Eureka-server中,provider-server的启动是要比Eureka启动的要快。才会出现了Connection refused: connect。当添加了补充1的配置至配置文件中后,重启项目也不再有这个 错。

    2. 完整yml配置

创建Eureka Client
  1. 使用Idea中的Spring Initializr快速创建Spring Boot 项目

  2. 勾选自己需要的依赖。这里需用到Eureka Discovery Client。注意:这里必须要选中web选项中的Spring Web 选项。(刚在第一次创建时没有选择Spring Web,启动时 错,注册失败)

  3. 业务接口该怎么写还是怎么写。

  4. 补充

    1. eureka-client启动后将会向eureka-server发送心跳默认周期为30秒。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
    2. 关于Eureka的自我保护机制,是否需要关闭,每个人的说法也不一样,如何关闭eureka-server项目的配置文件中添加去关闭。不要在client中去设置。
  5. 启动测试

    1. 先启动eureka-server。在该项目中新增了关闭自我保护配置。打开浏览器访问。

      搜了一下问题,发现pom文件中忘了引入引入后重新启动,会发现注册成功的日志。

创建高可用Eureka

这里偷了个懒,直接去百度里面搜了张图。= =

  • 创建eureka-server。上面有步骤。这里投机,创建一个项目,使用3份配置文件,使用不同环境来模拟了。

    在Idea中添加:

  • 验证
    分别打开三个eureka-server的URL,访问。

  • CAP理论

    CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。– 百度百科

    • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
    • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
    • 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

    CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了 络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足 。

    Eureka名词

    搜了一下名词解释:

    • register:服务注册,向Eureka进行注册等级
    • Renew:服务续约 ,30秒/次 心跳包检查,90秒未收到 则剔除服务
    • Fetch Registried:获得服务注册列表 ,获取其他微服务地址
    • Cancel:服务下线,某个微服务通知注册中心下线
    • Eviction:服务剔除,90秒未续约,从注册服务列表删除

    这里只是讲如何使用,等后续如果真正在项目中,使用,出现问题等再补充。

    文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92163 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年10月15日
    下一篇 2020年10月15日

    相关推荐