服务发现:Eureka

来源:
《微服务架构实战160讲》
https://www.cnblogs.com/xingzc/p/7543764.html

服务发现

1 常见模式

  • 传统集中式代理(常见)
    在这里插入图片描述
    消费者通过dns,找到域名对应的proxy,由proxy发起请求

nginx建议使用集群,以免单点故障

  • 服务注册中心+客户端嵌入式代理(常见)
    在这里插入图片描述
  • 主机独立进程代理(ServiceMesh)
    在这里插入图片描述
    不同的proxy可以进行通信,形成一个服务网格

服务端也可以加上Proxy,形成istio:
在这里插入图片描述

  • 传统集中式代理+服务注册中心+客户端嵌入式代理
    在这里插入图片描述
    这样可以解决传统集中式代理中非自动化的问题

  • 传统集中式代理+服务注册中心+客户端嵌入式代理变体
    在这里插入图片描述
    这样可以解决服务故障的问题

2 架构设计

  • Eureka
    在这里插入图片描述
    不同的Eureka位于不同的机房,之间进行复制,达到最终一致性,保证AP

  • EurekaServer内存概念模型
    在这里插入图片描述
    每一个ApplicationServer对应多个实例

  • Ribbon(客户端负载均衡)
    在这里插入图片描述
    主要有6个组件,如图右侧

左侧为架构,Ribbon会定期向Eureka同步服务列表,Ping则检测服务是否健康(重点/易故障服务才需要,因为SyncServerList这一步就会进行检查,一般不会出问题)

Ribbon可以通过GET方式获取应用的信息:
在这里插入图片描述
四个层面会产生延迟:服务注册到EurekaServer,如报心跳后才成为up的耗时等;Eureka客户端每隔30s才去EurekaServer拉服务列表;EurekaServer收到拉请求后,30s后才处理完毕,进行响应;Eureka客户端收到响应后,隔了30s进行处理,才把服务列表更新完毕;最多可能需要2分钟才能得到最新的服务列表

3 高级功能

  • 自保护模式

自我保护模式是一种应对网络异常的安全保护措施。
它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。
使用自我保护模式,可以让Eureka集群更加的健壮和稳定。

  • 健康检查

Eureka采用报心跳式检查,服务主动定期向EurekaServer报心跳,减少Eureka服务器的压力(PUT方式)

而报心跳上来,检查是否健康,可以通过HealthCheckHandler来定制检查健康逻辑

  • Eureka+健康检查实现蓝绿发布

使用Asgard进行发布,使用putAPI将老实例,即instance2变为outofservice,这样就不会使用了
在这里插入图片描述

  • 通过health端点检查快速发布
    在这里插入图片描述
    instance1需要经过心跳,即30s过后才能变为up,而使用Asgard,从EurekaServer拿到健康检查端点进行检查,如果通过了,就可以发布下一个,而不用等到instance1变为up才发布下一个,加快发布速度

4 持续交付架构

在这里插入图片描述
实现金丝雀和蓝绿部署, 如上2和4,如果新功能测试没问题,则由第7步全量切换,稳定之后发现新服务没问题,则删除老服务,否则切回老服务:
在这里插入图片描述

发布了235 篇原创文章 · 获赞 264 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41594698/article/details/102958690