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

亚马逊提供了一个负载均衡工具 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,都是自己动手验证通过的,读者可以放心参考:

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

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

        参考资料

转载博客:http://blog.csdn.net/defonds/article/details/38067867

时间: 2024-08-17 23:54:10

云端中间层负载均衡工具 Eureka的相关文章

新反向代理与负载均衡工具 traefik 安装配置部署详解

traefik ## 简介 traefik是一款开源的反向代理与负载均衡工具.软件定位是做负载均衡器,提供好用的负载均衡服务,不要老拿它跟nginx对比.它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置. 目前支持:Docker, Swarm, Mesos/Marathon, Mesos, Kubernetes, Consul, Etcd, Zookeeper, BoltDB, Rest API等等后端模型. #### ME为什么选择traefik? Golang编写,单文件

Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 服务注册和发现对于微服务架构而言,是非常重要的.有了服务发现和注册,只需要使用服务的标识符就可以访问到服务,而不需要修改服务调用的配置文件.该功能类似于 Dubbo 的注册中心,比如 Zookeeper. Eureka

spring-cloud-feign负载均衡组件

Feign简介: Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便.它具有可插拔注释支持,包括Feign注解和JAX-RS注解.Feign还支持可插拔编码器和解码器.Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式.Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端.Fegin对Robbin进

笔记:Spring Cloud Ribbon 客户端负载均衡

Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,基于 Netflix Ribbon 实现,通过Spring Cloud 的封装,可以让我们轻松的将面向服务的REST 模板请求自动转换为客户端负载均衡的服务调用.客户端负载均衡在系统架构中是一个非常重要的,并且是不得不去实施的内容,因为负载均衡是对系统的高可用.网络压力的缓解和处理能力扩容的重要手段,客户端负载均衡需要通过心跳去维护服务端清单的健康性,这个需要服务注册中心配合完成,在Spring Cl

Spring Cloud 客服端负载均衡 Ribbon

一.简介   Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署,但是它几乎存在于每个微服务的基础设施中.包括前面的提供的声明式服务调用也是基于该Ribbon实现的.理解Ribbon对于我们使用Spring Cloud来讲非常的重要,因为负载均衡是对系统的高可用.网络压力的缓解和处理能力扩容的重要手段之一.在上节的例子中,我们采用了声明式的方式来实现负载均衡.实际

干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)

Ribbon是一个基于http和tcp的客户端负载均衡工具 Hystrix具备服务降级.服务熔断.线程和信号隔离.请求缓存.请求合并以及服务监控 为了方便消费者负载均衡效果,复制demo-springcloud-client1并重名为demo-springcloud-client2,修改配置文件和启动类,服务提供者1和2服务名均为spring.application.name=demo-springcloud-client 修改YhqContoller实现,为了方便负载均衡观察效果,demo-s

浅谈SpringCloud (三) Ribbon负载均衡

什么是负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃.为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力. 我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器.如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况. Ribbon

第四章 客户端负载均衡:Spring Cloud Ribbon

Spring Cloud R巾bon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于 NetflixRibbon 实现. 通过 Spring Cloud 的封装, 可以让我们轻松地将面向服务的 REST 模板请求自动转换成客户端负载均衡的服务调用 客户端负载均衡 我们通常所说的负载均衡都指的是服务端负载均衡, 其中分为硬件负载均衡和软件负载均衡. 硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如 F5 等:而软件负载均衡则是通过在服务器上安装一些具有均衡负载功

搞懂分布式技术7:负载均衡概念与主流方案

搞懂分布式技术7:负载均衡概念与主流方案 负载均衡的原理 原创: 刘欣 码农翻身 4月23日 这是1998年一个普通的上午. 一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:"大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? " 还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说: "唉,我昨天检查了一下系统,现在的访问量已经越来越大了,无论是CPU,还是硬盘.内存都不堪重负了,高峰期的响应速度越来越慢." 顿了一下,他试探地问道:"老