写点什么

Netflix继续开源,更多猴子进入视野

2013 年 2 月 15 日

在众多开发者眼中,Netflix 以它的“猴子”闻名于世,在过去的一年里,他们陆续开源了众多基础设施。近期,Netflix 又举办了一次活动,宣布了2013 年的开源计划,同时对一些已经开源的项目做了简单的介绍。

截止2012 年底,Netflix 已经开源了15 个基础设施的代码,涉及AWS 上的自动伸缩及控制面板、高性能Java 日志框架、Cassandra 及ZooKeeper 扩展等诸多方面的内容。今年,他们计划更进一步,逐步放出五大类内容——构建与部署相关(工作流编排、一键上线)、实践攻略相关(基础服务器Karyon、诸多示例)、可用性相关(监控工具Atlas、更多的“猴子”)、分析相关(Hadoop 之上的PaaS 平台Genie、分析结果的可视化工具)以及持久化相关(持久化及Memcached 服务EvCache、更多的Astyanax 攻略)。

Netflix 的工程师 Jordan Zimmerman 对他们开源的一些项目做了一些说明:

  • Curator,一款旨在简化 ZooKeeper 使用的 Java 类库,提供了大量实用的功能及最佳实践。
  • Exhibitor,ZooKeeper 的运维工具,提供了监控、日志清理、备份、集群配置、自动实例管理、可视化、REST API 等诸多功能,还可以和 Curator 进行集成。
  • Governator,一款对 Google Guice 进行扩展的类库,提供了 Classpath 扫描及自动绑定、生命周期管理、成员属性验证等功能。
  • Blitz4j,构建于 Log4j 之上的异步日志框架,能够减少争用,在不影响应用程序性能的前提下提供高可扩展的日志服务。
  • Eureka,一组 REST 服务,能够在 AWS 云中定位服务,从而实现中间层服务器的负载均衡和故障转移,除此之外,它还能进行实例的流量管理,在服务之间共享特定应用程序的元数据。
  • Ribbon,一款内部进程通信类库,内置软负载均衡(多种算法)和 REST 客户端(基于 JSR 311),它是 NIWS(Netflix Internal Web Services)的基础,能和 Eureka 集成在一起提供 AWS 里的动态服务器资源池,还针对 AWS 进行了优化,提供可用区亲缘性等特性。
  • Archaius,一组配置管理 API,提供了强健的高性能动态配置管理功能,可以在不用重启的情况下动态调整运行时的配置。
  • Astyanax,Cassandra Java 客户端,提供了更高层次的 API、客户端故障转移、连接池管理、自动重试及发现等功能,还包含了常见 Cassandra 数据模型。
  • Priam,EC2 中的 Cassandra 辅助工具,能够自动进行全量 / 增量备份和 Token 管理,还可进行云中的 Cassandra 自动配置。
  • CassJMeter,一款 Apache JMeter 的插件,可以向 Cassandra 中生成数据,并进行数据验证,评估性能和吞吐量。
  • Edda,一个用来追踪云中部署应用变化情况的 REST 服务,爬取 AWS API 的结果,用版本化 JSON 保存下来,支持动态查询和历史情况查看。
  • Hystrix,一款针对延时和故障而设计的类库,对远程系统、服务和第三方类库的调用点进行隔离,可以在情况复杂、故障在所难免的分布式系统中,有效地阻止故障的蔓延。同时,它还能进行实时监控和配置变更,并提供并行执行能力。
  • Turbine,低延时、高吞吐量的实时流数据聚合器。
  • Asgard,基于 Web 的 AWS 云应用管理工具。

此外,InfoQ 之前也对 Netflix 开源的RxJava进行了报道,这是 Reactive Extensions 的一款 Java 实现,将 Rx.Net 移植到了 JVM 之上,并做了些命名及使用习惯的调整。它的目标是适用于 JVM 之上的各种语言,目前除了 Java 5+ 以外,还支持 Groovy、Clojure、Scala 和 JRuby。

RxJava 的 Wiki 上描述了为什么要使用 RxJava——Java 的 Future 太过直接,不便组装使用,不能方便地实现条件化的异步执行,回调也有类似的问题,嵌套使用会令人头晕目眩:

Yo Dawg, we heard you like callbacks. So we put callbacks in your callback so you can callback when you callback.

RxJava 简化了服务器端的异步编程,通常代码会是这样的:

  1. 定义一个闭包(目前在 Java 语言里是匿名类,今后会支持 Java 8 的闭包),其中包含处理逻辑并且带有返回值,这被称为“observer”。
  2. 将异步调用本身定义为一个继承自 Observable 类的对象。
  3. 以订阅的方式将 _observer_ 附加到 Observable 对象上(这也会触发调用)。
  4. 继续你自己的业务逻辑,当上述调用返回时,_observer_ 会去处理返回值的。

订阅使用的subscribe()方法接受一个 Map,其中的onNextonCompletedonError分别定义了每次 Observable 返回值的处理逻辑、最后一次返回且没有发生错误时的处理逻辑以及发生错误时的处理逻辑。

除了上述提到的内容之外,自然少不了著名的猴子们, Simian Army是这群猴子的统称,除了 Chaos Monkey 和 Janitor Monkey 之外,更多的猴子也将在今年陆续开源。在 Netflix 的技术博客上有篇文章,详细介绍了 Simian Army 中的各位成员:

  • Chaos Monkey,可以随机关闭生产环境中的实例,确保网站系统能够经受故障的考验,同时不会影响客户的正常使用。
  • Latency Monkey,在 RESTful 服务的调用中引入人为的延时来模拟服务降级,测量上游服务是否会做出恰当响应。通过引入长时间延时,还可以模拟节点甚至整个服务不可用。
  • Conformity Monkey,查找不符合最佳实践的实例,并将其关闭。例如,如果某个实例不在自动伸缩组里,那么就该将其关闭,让服务所有者能重新让其正常启动。
  • Doctor Monkey,查找不健康实例的工具,除了运行在每个实例上的健康检查,还会监控外部健康信号,一旦发现不健康实例就会将其移出服务组。
  • Janitor Monkey,查找不再需要的资源,将其回收,这能在一定程度上降低云资源的浪费。
  • Security Monkey,这是 Conformity Monkey 的一个扩展,检查系统的安全漏洞,同时也会保证 SSL 和 DRM 证书仍然有效。
  • 10-18 Monkey,进行本地化及国际化的配置检查,确保不同地区、使用不同语言和字符集的用户能正常使用 Netflix。
  • Chaos Gorilla,Chaos Monkey 的升级版,可以模拟整个 Amazon Availability Zone 故障,以此验证在不影响用户,且无需人工干预的情况下,能够自动进行可用区的重新平衡。

活动的主题演讲中还提到了 Netflix 投入开源的目的:

  • 将他们的解决方案变为最佳实践和标准
  • 构造 Netflix 的技术品牌
  • 从生态环境中获益
  • 吸引最顶尖的工程师加盟

相信这也是很多积极投身开源社区的公司的共同目标,国内的企业不妨也效仿 Netflix 的做法,在使用开源产品的同时,将自己的部分代码开源出来,回馈给开源社区。

如果您对 Netflix 的开源项目感兴趣,可以移步 Netflix Open Source Center ,或者访问其技术博客。3 月13 日,Netflix 又将在其总部举行 NetflixOSS Meetup ,期待届时能有更多精彩内容。

2013 年 2 月 15 日 06:409353
用户头像

发布了 135 篇内容, 共 50.7 次阅读, 收获喜欢 30 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

有为而治:平衡吞噬世界的系统之熵

IT民工大叔

软件开发丨关于软件重构的灵魂四问

华为云开发者社区

软件 开发者 软件开发 代码 软件重构

架构师训练营第 11周作业和感想

tuuezzy

极客大学架构师训练营

ShardingSphere简介+实战

云淡风轻

ShardingJDBC

开发者的福音,LR.NET模块化代码生成器

Philips

敏捷开发 快速开发 模块化流程 代码质量 .net core

化妆品行业与区块链的融合可减少甚至消除假冒伪劣

CECBC区块链专委会

区块链 化妆品

架构师训练营0期11周

WW

LeetCode题解:155.最小栈,使用两个栈,详细注释

Lee Chen

LeetCode 前端进阶训练营

数据挖掘学习指南(转载)

Jackchang234987

数据挖掘 产品经理

20年美团架构师一份“架构宝典”竟涵盖了架构设计和实践技巧?

周老师

Java 编程 程序员 架构 面试

穿什么衣服去面试?

escray

学习 面试 面试现场

GitMaster 更新v1.9.0,支持Gitea,Gist拥抱黑暗模式

neo

gitlab tree gitee GitHub、

区块链 新基建定位下的新使命 2020新区势

CECBC区块链专委会

区块链 新基建

Flink-状态后端作用-11

小知识点

scala 大数据 flink

【FCC前端教程】44关学习CSS与CSS3基础「二」

三钻

CSS 前端 FCC

屏幕共享接入指南

anyRTC开发者

WebRTC 在线教育 直播 RTC

微前端在民生 APaaS/PSET 平台的探索与实践

亻尔可真木奉

探索与实践 案例分享 微前端

oeasy教您玩转linux010107那啥在哪 whereis

o

mPaaS 客户端证书错误避坑指南

阿里云金融线TAM SRE专家服务团队

学习Python真的能找到工作吗?

代码制造者

Python 程序员 编程语言 低代码 零代码

涵盖多场景区块链与政务结合 应用前景广阔

CECBC区块链专委会

区块链 互联网 数字政务

甲方日常 3

句子

工作 随笔杂谈 日常

面试官想知道都在这里

escray

学习 面试 面试现场

建设开发者生态:6项华为API管理原则落地

华为云开发者社区

开发者 API 华为云 API Explorer平台 应用技术

抗疫复产,CDN助企业破局发展

华为云开发者社区

CDN 网络 华为云 CDN加速 企业应用

企业网络安全漏洞多,这些等保服务来填坑

华为云开发者社区

Web 安全 防火墙 等保 DDoS

分享一个阿里云轻量级开源前端图编排,流程图js组件——butterfly-dag

InfoQ_39ba186c207f

Java 流程图 flow canvas html/css

【写作群星榜】8.15~8.28 写作平台优秀作者 & 文章排名

InfoQ写作平台

写作平台 排行榜

消息队列之推还是拉,RocketMQ 和 Kafka 是如何做的?

yes的练级攻略

kafka RocketMQ

最强云硬盘来了,让AI模型迭代从1周缩短到1天

华为云开发者社区

SSD 云存储 All-Flash 云硬盘 擎天架构

微服务架构下,DLI的部署和运维有何奥秘?

华为云开发者社区

Docker 大数据 Serverless 数据湖 DLI

2021年,算法还“香”吗?

2021年,算法还“香”吗?

Netflix继续开源,更多猴子进入视野-InfoQ