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

标签: netflix 云中 服务 | 发表时间:2013-02-01 03: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来构建一个最基础的微服务应用,来演示如何构建微服务,了解微服务的基本特点.

Netflix基于云的微服务架构的设计分析

- - DockOne.io
Netflix的微服务架构为其提供全球视频流服务,本篇文章将对此架构进行全面的系统设计分析. Netflix多年来一直是全球最出色的在线订阅制的视频流服务( 【12】 )之一,其占世界互联网带宽容量的15%以上. 2019年,Netflix已经获得了超过1.67亿的订阅用户,每个季度新增用户超过500万,服务涵覆盖全球200多个国家或地区.

技术 in Netflix

- - 后端技术杂谈 | 飒然Hang
综合市面上的公开资料总结了Netflix在技术上面的一些实践和创新,从中能够得到不少启发和提示.

聊聊 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添加一些客户端的行为.

Netflix异常检测工具Surus初探

- - 标点符
Surus是NetFlix开源的UDFs,是基于pig和hive的数据分析工具. Surus中的功能能够解决多种多样的问题,例如评分预测模型、异常检测与模式匹配等. 目前开源的UDF功能主要包括两个,包括ScorePMML和Robust Anomaly Detection (RAD). 预测模型的应用随处可见,然而这些应用都不相同,唯独相同的是模型的创建和部署是相同的.

Netflix系统架构设计方案

- - DockOne.io
【编者的话】Netflix是全球最大的在线视频网站之一,它是怎么设计的呢. 这篇文章介绍了Netflix系统架构的设计方案. 原文: Netflix System Architecture. 我们来讨论一下如何设计Netflix. 相信每个人都会通过某些网站或应用在线追剧或者看电影,而Netflix是我最喜欢的在线视频网站,不过今天我不推荐任何电影,相反,我想展示的是Netflix背后令人惊艳的系统逻辑.

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

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