Eureka 心跳机制

2 篇文章 0 订阅
1 篇文章 0 订阅

基本阐述


  1. 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。
  2. 心跳机制是每隔几分钟发送一个固定信息给服务端,服务端手收到后回复一个固定的信息。如果服务端几分钟内没有收到客户端消息则视客户端断开。
  3. 发送方可以是客户端或服务端,根据实际情况,一般是客户端;因为一个服务端可能有很多客户端,服务端作为发送方的比较耗费性能。
  4. 应用场景:判断长连接是否真正存活。当长连接没有流量时,无法判断是通信异常引起还是通信正常但没有业务流量引起时,通过心跳包进行判断。
  5. 实现技术
  • 方式一:应用层实现心跳机制(推荐)
  • 优点:实现策略灵活,能及时检测到连接状态;
  • 缺点:每个应用都需要有一套,无法底层共用;
  • 方式二:利用TCP的KeepAlive机制
  • TCP协议本身提供了心跳机制,需要通过SO_KEEPALIVE开启。默认情况下,当连接空闲2小时后,每隔75s发送一次心跳包,如果连续9次没有收到响应则关闭连接。
  • 优点:不需要二次开发,简单配置参数即可;
  • 缺点:网络环境的复杂性使得KeepAlive机制容易失效;

 

在现实中应用


  1. Eureka + 心跳机制
  2.  代码举例 Eureka 配置
  3. Eureka 的 心跳机制 还有概念 叫续租。心跳续租。

什么是Eureka?

  1. Eueka是Netflix(网飞公司)开发的服务发现组件,本身是一个基于REST的服务。Spring Cloud将他集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。
  2. 这里有些概念来源于亚马逊AWS(Amazon Web Service)云服务的。即区域region、可用区available zone = AZ。
  3. AWS的每个区域region一般由多个可用区(AZ)组成,而一个可用区一般是由多个数据中心组成。
  4. 在非AWS环境下,可以简单地将region理解为Eureka集群,zone理解成机房。一个Eureka集群被部署在了zone1机房和zone2机房中。
  5. 每个可用区:都是一个Eueka Server 和 多个 Eueka Client组成。
  6. 其中 Eueka Client 相对于应用程序角色又分:应用程序Server Eueka Client;应用程序Client EuekaClient
  7. 然后 应用程序Server 可能对应 多个 应用程序Client,这里解释了zone可以理解成机房,因为应用程序Server一般要部署在一个服务器上,不同应用程序Client提供不同的微服务,视情况,分布式部署到多台机器上。这些机器放在一块,由一个机房统一管理。
  8. 最后发现这些应用程序Client,并不是常理解的手机客户端,电脑客户端等终端。而是相对于这些终端的服务提供者。终端是服务消费者。
  9. Eureka就是一个服务中心,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。服务中心这么重要的组件一旦挂掉将会影响全部服务,因此需要搭建Eureka集群来保持高可用性,生产中建议最少两台。
  10. Eueka Server是怎么在现实中集成的?实际上在应用程序Server Eueka Client所在项目通过依赖集成的 如下
  11. EuekaClient 是怎么在现实中集成的?实际上在应用程序Client Eueka Client所在项目通过依赖集成的 如下
    1. spring-cloud-starter-parent 具备spring-boot-starter-parent同样功能并附加Spring Cloud的依赖 
    2. spring-cloud-starter-config 默认的配置服务依赖,快速自动引入服务的方式,端口8888 
    3. spring-cloud-config-server/client 用户自定义配置服务的服务端/客户端依赖 
    4. spring-cloud-starter-eureka-server 服务发现的Eureka Server依赖 
    5. spring-cloud-starter-eureka 服务发现的Eureka客户端依赖 
    6. spring-cloud-starter-hystrix/zuul/feign/ribbon 断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon)的依赖
    7. angular-ui-router 页面分发路由依赖
  12. Eueka依赖包过期问题
    1. 使用最新的 spring-cloud-starter-netflix-eureka-server,而spring-cloud-starter-eureka-server已经过期
    2. 使用最新的 spring-cloud-starter-netflix-eureka-client ,而spring-cloud-starter-eureka 已经过期
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值