云端中间层负载均衡工具 Eureka

        亚马逊提供了一个负载均衡工具 Elastic Load Balancer,但针对的是终端用户 Web 流量server。而 Eureka 针对的是中间层server的负载均衡。

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 云端的负载均衡和中间层server的故障转移"。
        Eureka VS ELB
        亚马逊 ELB 针对的是终端用户 Web 流量server,Eureka 针对的是中间层server。


        Why Eureka?
        AWS 对 IP 地址、主机名等传统的负载均衡支持并不好,而且须要更加复杂的注冊/退出机制。AWS 并没有提供一个中间层负载均衡器,Eureka 填补了这一空白。


        Eureka 的适用场景

  • AWS 的环境下有一个中间层服务。但不想将其注冊到 ELB。或者不想将其暴露给外部世界
  • 不须要 session 绑定机制。没有粘性会话和在外部缓存(比如 memcached)加载会话数据的须要
  • 自己实现 LB 算法
        Eureka 体系架构
        Eureka 的架构图例如以下所看到的
eureka_architecture

        从图中我们能够看出。Eureka 组件分为两部分:Eureka server和 Eureka client。

而client又分为 Application Service client和 Application Client client两种。


        Eureka 的工作机制
        每一个 region 都有自己的 Eureka server集群,每一个 zone 至少要有一个 Eureka server以应对 zone 瘫痪。
        Application Service 在启动时注冊到 Eureka server,之后每 30 秒钟发送心跳以更新自身状态。

假设该client没能发送心跳更新,它将在 90 秒之后被其注冊的 Eureka server剔除。来自随意 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。都是自己动手验证通过的。读者能够放心參考:

        这些 demo 都看完,相信你玩转 Eureka 不在话下。假设还有啥不懂的,能够看 Eureka API。作者建议直接看 Eureka 源代码。源代码并不多,也就几千行的样子,而且里边凝视的非常详尽,相比之下。在线  API 有非常多方法仅仅提供了一个方法名,并没有具体说明。


        Eureka 部署的測试
        你能够自己写脚本。然后手工将集群节点宕机,以验证 Eureka 部署的弹性效果 - Eureka 使用 servo 来跟踪client和server端的性能。并进行监控和报警。这些数据可用于 JMX 注冊也能够输出给亚马逊的云监控。当然你也能够使用 Netflix 的还有一个开源工具 - SimianArmy。这仅仅调皮的小猴子会有益将你的服务节点搞下线以验证你的 Eureka 部署对随机的 Application Service 宕机的处理的弹性。
        Q:有没有一个真实的应用案例
        接下来以一个真实生产环境下的场景。来看一下 Eureka 在实际其中的应用。


        下面是流媒体server Wowza 直播的部署架构图:
rtmp部署架构图
        Wowza server侍服外部网络直播流量,但它须要去 CAS server验证用户,还须要去 Relay server读取直播流。CAS 和 Relay 就是两个中间层服务,不须要直接暴露给外界。下面是它们之间的时序交互图:
sequence-rtmp-live
        參考资料

原文地址:https://www.cnblogs.com/jzssuanfa/p/7280347.html