Eureka服务注册与发现

spring cloud是很多技术的合集,比如Spring-Cloud Euraka是Spring Cloud集合中一个组件,它是对Euraka的集成,用于服务注册和发现。

Spring Cloud封装了Netlix 公司开发的Eureka模块来实现服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

Eureka是Netflix中的一个开源框架。
它和 zookeeper、Consul一样,都是用于服务注册管理的,同样,Spring-Cloud 也集成了Zookeeper和Consul。
在项目中使用Spring Cloud Euraka的原因是它可以利用Spring Cloud Netfilix中其他的组件,如zull等,因为Euraka是属于Netfilix的。

服务注册与发现

eureka在微服务的体系中,主要的功能是实现服务治理,服务注册与发现

  • 我们知道,微服务就是将项目中的模块按照业务来拆分,每个业务模块就是一个单独的服务,可以根据需要把某个服务部署多个,然后服务之间还会相互调用。
    • 但是,A服务想调用B服务,而B服务部署了多个,那么A怎么知道B服务1和B服务2的地址?如果临时又增加了B3,那么怎么告诉A,B3的地址?
    • 又或者B服务1宕机了,这时候A服务不知道,依然选择使用B1,就会服务调用失败。那么怎么把B1宕机的消息及时告诉其他服务?

解决方式就是:引入服务管理者,也就是服务治理

服务治理的管理者叫做注册中心

服务注册:每个服务在启动的时候,告诉注册中心自己的位置信息

服务发现:A服务想调用B服务,就得先去注册中心拿到所有服务的位置信息,然后找到B的地址,发起调用

心跳机制:服务启动之后,每过30秒向注册中心发一个消息,告诉注册中心自己还存活。
如果注册中心长时间没有收到某个服务的心跳,那么就会认为该服务宕机,然后把该服务从注册列表中删除。
默认是3个心跳周期,也就是90秒

Eureka 组件

在Eureka的架构中,分为 Eureka Server 和 Eureka client。

Eureka 注册中心 Eureka Server

  • Eureka Server 作为服务注册功能的服务器,也是服务注册中心。

  • 提供服务注册服务,在各节点启动之后,会在Eureka Server 中进行注册。
    这样Eureka Server 中的服务注册表中将会存储所有可用服务节点的信息,
    服务节点的信息可以在界面中直接看到(监控页面)

  • 系统中的其他微服务,使用eureka的客户端连接到eureka server并维持心跳连接。
    这样系统的维护人员就可以通过eureka server来监控那个系统中各个微服务是否正常运行。

Eureka 客户端 Eureka Client

  • eureka client是一个Java客户端,用于简化eureka server的交互

  • 客户端也具备一个内置的,使用轮询负载算法的负载均衡器

    • 在应用启动后,会向eureka server发送心跳(默认周期30秒
    • 如果eureka server在多个心跳周期(默认3个心跳周期,90秒)中没有收到某个节点的心跳,就认为它死亡,eureka server就会从服务注册表中把这个服务节点移除
    • eureka client会缓存服务注册表中的信息。
      这种方式可以降低eureka server的压力,
      即使所有的eureka server宕机,服务调用方依然可以完成调用

笔记内容来源:F版本SpringCloud 3—大白话Eureka服务注册与发现 - 知乎

posted @ 2021-04-19 17:52  张三丰学Java  阅读(135)  评论(0编辑  收藏  举报