亚马逊提供了一个负载均衡工具 Elastic Load Balancer,但针对的是终端用户 Web 流量服务器,而 Eureka 针对的是中间层服务器的负载均衡。AWS 固有的环境,对 IP 地址、主机名等传统的负载均衡支持并不好,并且需要更加复杂的注册/退出机制。Eureka 填补了这一空白。本文在前边几篇博客的基础上,较为系统地介绍一下 Eureka。
        Eureka 是什么
        官方给出的具体定义是"Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.",翻译过来就是:"Eureka 是一个基于 REST 的服务,它主要是用于定位服务,以实现 AWS 云端的负载均衡和中间层服务器的故障转移"。
        Eureka VS ELB
        亚马逊 ELB 针对的是终端用户 Web 流量服务器,Eureka 针对的是中间层服务器。
        Why Eureka?
        AWS 对 IP 地址、主机名等传统的负载均衡支持并不好,并且需要更加复杂的注册/退出机制。AWS 并没有提供一个中间层负载均衡器,Eureka 填补了这一空白。
        Eureka 的适用场景

  • AWS 的环境下有一个中间层服务,但不想将其注册到 ELB,或者不想将其暴露给外部世界
  • 不需要 session 绑定机制,没有粘性会话和在外部缓存(例如 memcached)载入会话数据的需要
  • 自己实现 LB 算法

Eureka 体系架构
        Eureka 的架构图如下所示

从图中我们可以看出,Eureka 组件分为两部分:Eureka 服务器和 Eureka 客户端。而客户端又分为 Application Service 客户端和 Application Client 客户端两种。
        Eureka 的工作机制
        每个 region 都有自己的 Eureka 服务器集群,每个 zone 至少要有一个 Eureka 服务器以应对 zone 瘫痪。
        Application Service 在启动时注册到 Eureka 服务器,之后每 30 秒钟发送心跳以更新自身状态。如果该客户端没能发送心跳更新,它将在 90 秒之后被其注册的 Eureka 服务器剔除。来自任意 zone 的 Application Client 可以查看这些注册信息(每隔 30 秒查看一次)并依此定位自己的侍服 Application Service 实例,进而进行远程调用。
        Q:我的 Application Service 和 Application Client 之间通信会不会受到 Eureka 限制
        A:不会。Eureka 只是帮你找到该次侍服主机实例,并不对你的 Application Service 和 Client 之间的通信协议和方法进行约束。
        Q:看了这些感觉好抽象,有没有可以开始的 demo
        可以查看 Eureka 的 github 以寻求 demo。有些 feature(比如 Eureka 和 Ribbon 的集成)并没有提供 demo,但我们可以从 Eureka 的 github 提供的单元测试代码中获得一些启示。
        另外,笔者也整理了很多 demo,都是自己动手验证通过的,读者可以放心参考:

  • 《Linux 下 Eureka 服务器的部署》
  • 《Eureka 的 Application Service 客户端的注册以及运行示例》
  • 《Eureka 的 Application Client 客户端的运行示例》
  • 《云中间层服务 - 区域感知负载均衡器 Ribbon》
  • 《Ribbon 和 wowza 的集成开发》
  • 《Ribbon 和 Eureka 的集成》

这些 demo 都看完,相信你玩转 Eureka 不在话下。如果还有啥不懂的,可以看 Eureka API。作者建议直接看 Eureka 源码,源码并不多,也就几千行的样子,而且里边注释的很详尽,相比之下,在线  API 有很多方法只提供了一个方法名,并没有详细说明。
        Eureka 部署的测试
        你可以自己写脚本,然后手工将集群节点宕机,以验证 Eureka 部署的弹性效果 - Eureka 使用 servo 来跟踪客户端和服务器端的性能,并进行监控和报警,这些数据可用于 JMX 注册也可以输出给亚马逊的云监控。当然你也可以使用 Netflix 的另一个开源工具 - SimianArmy,这只调皮的小猴子会故意将你的服务节点搞下线以验证你的 Eureka 部署对随机的 Application Service 宕机的处理的弹性。
        Q:有没有一个真实的应用案例
        接下来以一个真实生产环境下的场景,来看一下 Eureka 在实际当中的应用。
        以下是流媒体服务器 Wowza 直播的部署架构图:

        Wowza 服务器侍服外部网络直播流量,但它需要去 CAS 服务器验证用户,还需要去 Relay 服务器读取直播流。CAS 和 Relay 就是两个中间层服务,不需要直接暴露给外界。以下是它们之间的时序交互图:

        参考资料

  • https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
  • http://www.infoq.com/news/2012/09/Eureka

云端中间层负载均衡工具 Eureka相关推荐

  1. Spring Cloud Netfilx Ribbon(负载均衡工具)

    一.介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的 ...

  2. 微服务部署HTTP反向代理、负载均衡工具Træfɪk

    from: https://docs.traefik.cn/ Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理.负载均衡工具. 它支持多种后台 (Docker, Swarm, ...

  3. 负载均衡工具 haproxy剖析

    haproxy 进阶 应用场景 只是作为负载均衡的工具,至于是什么应用集群都可以,例如:上面的RabbitMQ集群 下面那redis集群再给大家举个例子: 创建+配置haproxy配置文件 #创建ha ...

  4. 负载均衡工具 haproxy 集群安装部署完整流程

    负载均衡是系统设计最常见的一种方式,Nginx.HAProxy.LVS.F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻 ...

  5. 负载均衡工具 haproxy 单机安装部署完整流程

    负载均衡是系统设计最常见的一种方式,Nginx.HAProxy.LVS.F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻 ...

  6. 数人云|还在为负载均衡操碎心?这里有10大开源负载均衡工具

    关于负载均衡器,小数之前给大家分享了<关于负载均衡和服务发现,Google的经验在这里>数人云工程师手记 | Docker1.12服务发现,负载均衡和Routing Mesh,今天再给大家 ...

  7. 负载均衡工具haproxy安装,配置,使用

    一,什么是haproxy HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点 ...

  8. 基于Spring cloud Ribbon和Eureka实现客户端负载均衡

    前言 本案例将基于Spring cloud Ribbon和Eureka实现客户端负载均衡,其中Ribbon用于实现客户端负载均衡,Eureka主要是用于服务注册及发现: 传统的服务端负载均衡 常见的服 ...

  9. JavaEE进阶知识学习-----SpringCloud(六)Ribbon负载均衡

    Ribbon负载均衡 Ribbon概述 Spring Cloude Ribbon是基于Netfilx Ribbon实现的一套客户端 负载均衡的工具,简单说,Ribbon是Netfilix发布的开源项目 ...

最新文章

  1. LeetCode简单题之用栈操作构建数组
  2. Unity3D NGUI学习(一)血条
  3. C语言入门经典——基础知识(数据类型)(32位与64位系统基本数据类型的字节数)
  4. linux下SVN配置笔记(转)
  5. Java 编程语言中很少被人了解的特性-statement label
  6. Highcharts 中文参考文档
  7. 如何用正确的方法来写出质量好的软件的75条体会
  8. IOS-awakeFromNib和viewDidLoad
  9. 11 所允许的仓储单位类型没有针对仓储类型xxx定义
  10. 【网络】SSH本地/远程/动态端口转发
  11. 理想汽车回应被列入“预摘牌名单”:积极配合审计底稿相关的工作
  12. 伙伴系统二叉树可视化笔记
  13. 孙鑫-MFC笔记一--Windows程序内部运行机制
  14. 二十一天学通JavaScript:cookie的安全性
  15. Carrot2 - Wikipedia, the free encyclopedia
  16. Excel宏批量转置并删除空格
  17. 「 C++ 通讯 」“Socket通信原理(TCP/IP)”研究
  18. MTU、MSS、TCP首部、IP首部
  19. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)
  20. 互联网时代各行业都在快速更替,金融行业为什么即将成为下一个风口?

热门文章

  1. 怎么看电脑的hdmi是输出还是输入_笔记本HDMI不知道是只支持输出还是支持输入...
  2. 自适应二次元可爱萝莉音乐404页面源码
  3. php中乘法函数,excel中乘法函数是哪个
  4. 投资组合的风险因子调整——投资组合分析(EAP.portfolio_analysis)
  5. SSIS Execute SQL Task 用法
  6. HTML5 桌面通知 new Notification
  7. A Scab Grows On Wall Street
  8. 使用Virtuso绘制电路图问题
  9. 父亲节写给父母:电子通信为什么要转行计算机软件
  10. 从一台Linux服务器访问另一台Linux服务器