Netflix发布云中间层服务开源项目Ribbon

标签: netflix 云中 服务 | 发表时间:2013-01-31 19:07 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

1月28日,全球最大的互联网视频提供商Netflix在自己的技术团队博客上 发布文章,对外公布了他们的开源项目Ribbon,其主要功能是将Netflix的中间层服务连接在一起。

文章开头说到Ribbon项目的背景:

Netflix使用了细粒度的SOA架构,这是我们基于云的部署模式的根基。目前,我们运行着上百个细粒度服务,使用诸如Netflix API Services这样的“边缘服务(Edge Service)”,共同负责处理面向客户的请求。轻量级的、基于REST的协议,是在这些服务之间进行内部通信的必然之选。

Netflix Internal Web Service Framework(简称NIWS)构成了该架构的基础。我们之前发布的 Eureka,起到服务发现的作用。与Eureka一起,NIWS提供执行REST调用需要的所有组件。

NIWS由REST客户端和服务器端框架构成,基于Java的 JSR-311RESTful API规范。我们的服务使用多种负载数据序列号格式,比如 Avro、XML、JSON、 Thrift和Google Protocol Buffers。NIWS提供序列号和反序列化机制。

接下来,文章重点介绍Ribbon项目:

Ribbon,简单说,主要提供客户侧的软件负载均衡算法。和其他构成我们NIWS内部进程通信栈的组件一起,该算法在Netflix经历了严峻考验。未来几个月,我们会继续开源其他的NIWS组件。请注意:上面提到的负载均衡器是 内部的客户侧负载均衡器,与Eureka一起使用,Eureka主要用来平衡到中间层服务的请求。我们面向公共的边缘服务,继续使用 Amazon的ELB服务

下面的示意图是Netflix典型的部署架构。

在Netflix,典型的部署架构都是多地区、多区域的部署。Eureka为所有Netflix服务提供服务注册。Ribbon客户端的创建和配置为每个目标服务执行。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:

  • 简单轮询负载均衡
  • 加权响应时间负载均衡
  • 区域感知轮询负载均衡
  • 随机负载均衡

文章重点介绍了Ribbon一个久经考验的功能:区域感知负载均衡器(Zone Aware Load Balancer)。

区域感知负载均衡器内置电路跳闸逻辑,可被配置基于区域同源关系(Zone Affinity,也就是更倾向于选择发出调用的服务所在的托管区域内,这样可用降低延迟,节省成本)选择目标服务实例。它监控每个区域中运行的实例的运维行为,而且能够实时快速丢弃一整个区域。在面对整个区域的故障时,这帮我们提升了弹性,我们之前的博客文章有提及。

在选择服务器时,该负载均衡器会采取如下步骤:

  1. 负载均衡器会检查、计算所有可用区域的状态。如果某个区域中平均每个服务器的活跃请求已经达到配置的阈值,该区域将从活跃服务器列表中排除。如果多于一个区域已经到达阈值,平均每服务器拥有最多活跃请求的区域将被排除。
  2. 最差的区域被排除后,从剩下的区域中,将按照服务器实例数的概率抽样法选择一个区域。
  3. 从选定区域中,将会根据给定负载均衡策略规则返回一个服务器。

Ribbon中还包括以下功能:

  • 易于与服务发现组件(比如Netflix的Eureka)集成
  • 使用 Archaius完成运行时配置
  • 使用JMX暴露运维指标,使用 Servo发布
  • 多种可插拔的序列化选择
  • 异步和批处理操作(即将推出)
  • 自动SLA框架(即将推出)
  • 系统管理/指标控制台(即将推出)

文中还提到:

Netflix,我们会使用Hystrix包装Ribbon发起的REST调用。 Hystrix提供分布式系统中的延迟和容错。

更多关于Ribbon的详细信息,可查看 Github相关页面

Netflix在Github上有 诸多开源项目,下面对上文中提到的一些项目做简单介绍:

  • Eureka:一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。InfoQ中文站 此前有报道
  • Archaius:包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等等功能。
  • Servo:用Java语言,提供暴露、发布应用运行指标的简单接口,主要满足的需求包括:使用JMX、简单、灵活发布。
  • Hystrix:供分布式系统使用,提供延迟和容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。

郑柯 郑柯,实用的理想主义者,相信:每天改变一点点,这个世界会更好。

您可能也会喜欢

相关 [netflix 云中 服务] 推荐:

Netflix发布云中间层服务开源项目Ribbon

- - InfoQ cn
1月28日,全球最大的互联网视频提供商Netflix在自己的技术团队博客上 发布文章,对外公布了他们的开源项目Ribbon,其主要功能是将Netflix的中间层服务连接在一起. 文章开头说到Ribbon项目的背景:. Netflix使用了细粒度的SOA架构,这是我们基于云的部署模式的根基. 目前,我们运行着上百个细粒度服务,使用诸如Netflix API Services这样的“边缘服务(Edge Service)”,共同负责处理面向客户的请求.

Spring Cloud Netflix构建微服务入门实践

- - 简单之美
在使用Spring Cloud Netflix构建微服务之前,我们先了解一下Spring Cloud集成的Netflix OSS的基础组件Eureka,对于Netflix的其他微服务组件,像Hystrix、Zuul、Ribbon等等本文暂不涉及,感兴趣可以参考官网文档. 这里,我们用最基础的Eureka来构建一个最基础的微服务应用,来演示如何构建微服务,了解微服务的基本特点.

聊聊 API Gateway 和 Netflix Zuul

- - ScienJus's Blog
最近参与了公司 API Gateway 的搭建工作,技术选型是 Netflix Zuul,主要聊一聊其中的一些心得和体会. 本文主要是介绍使用 Zuul 且在不强制使用其他 Neflix OSS 组件时,如何搭建生产环境的 Gateway,以及能使用 Gateway 做哪些事. 不打算介绍任何关于如何快速搭建 Zuul,或是一些轻易集成 Eureka 之类的的方法,这些在官方文档上已经介绍的很明确了.

Netflix开源数据流管理器Suro

- - IT经理网
Netflix近日开源了一个叫做Suro的工具,可以收集来自多个应用服务器的事件数据,并实时定向发送到目标数据平台如Hadoop和Elasticsearch. Netfix的这项创新有望成为大数据主流技术. Netflix用Suro进行数据源到目标主机的实时导向,Suro不但在Netflix的数据管道中扮演关键角色,而且也是脱胎大型互联网公司的众多开源数据分析工具中的佼佼者.

Netflix的网站优化经验

- - 程序师
Netflix团队首先要做的一件事是改进他们的整体前端架构. 改版前的netflix.com网站对于服务端生成html标记与客户端的增强这两个过程进行了严格的分离,采用这一设计的主要原因在于前后端所使用的编程语言不同. 服务端主要使用Java的技术栈以生成基本的html页面,而在浏览器端的工作则主要是通过jQuery等JavaScript库的使用为服务端生成的html添加一些客户端的行为.

网络营销行为经济学分析: Amazon Apple Netflix Groupon Facebook

- zementary - 互联网营销|Internet Marketing
7月1日,Wired杂志,中文名为连线,最近杜克大学 行为经济学家 丹•艾瑞里(Dan Ariely)撰文在线公司如何让我们共享更多,消费更多. Ariely经济学家用行为经济学理论分别对亚马逊Amazon、Netflix、团购Groupon、 Zynga、Facebook和苹果的网络营销做了分析.

TiVo和微软媒体中心的倒下和Netflix的崛起

- Zhang Qiwei - 36氪
十年前TiVo定义了DVR(数字视频录像机)这个行业. 现在 TiVo已经变成一个动词,如果你想在有限电视公司提供的DVR上录制电视节目,你可以直接说“TiVo一段电视节目”. 但知名度也无法挽救TiVo产品线的颓势,数字媒体科技已经发生彻底变革. 也正是这种变革可以解释为什么微软会在Windows 8中淡化Windows媒体中心(Media Center)的概念.

Netflix推荐系统(第二部分)—— 排序

- - xlvector - Recommender System
Netflix最近发表了第二篇关于他们推荐系统的技术blog,相比第一篇,这篇blog透露了不少技术细节. 因此这里我准备翻译并分析一下这篇博客. 这篇blog很长,这里首先分析第一部分:排序. We will discuss some of our current models, data, and the approaches we follow to lead innovation and research in this space..

Netflix 公布个性化和推荐系统架构

- - 互联网分析
Netflix的推荐和个性化功能向来精准,前不久,他们公布了自己在这方面的系统架构. 3月27日,Netflix的工程师 Xavier Amatrain和 Justin Basilico在官方博客 发布文章,介绍了自己的个性化和推荐系统架构. 要开发出这样的一个软件架构,能够处理海量现有数据、响应用户交互,还要易于尝试新的推荐方法,这可不一点都不容易.

Google、微软与Netflix计划将HTML5媒体内容加密

- - HTML5研究小组
Google, Microsoft, 和 Netflix提出一项将HTML5音频和视频文件加密的Encrypted Media Extensions提案,该提案将使网络和其他地方应用程序使用密匙控制是否有权访问特定的媒体流,从而实现支持key或bit的任何格式都可以在HTML5下使用. 这将消除Adobe和其他相关提供者关于HTML5内容版权限制的异议.