NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2013-02-15
  • 本文字数:2600 字

    阅读完需:约 9 分钟

在众多开发者眼中,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-02-15 06:4010324
用户头像

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

关注

评论

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

应用流程挖掘,发现潜在RPA可实施的场景,助力银行优化业务流程

易观分析

RPA

王者荣耀商城异地多活架构设计

流火

@全球开发者|首届云原生边缘计算峰会邀您共话

华为云开发者联盟

云原生 边缘计算 kubeedge

中国标准走进国际视野,首个零信任国际标准的诞生往事

脑极体

一篇文章带你彻底了解哈希表

武师叔

算法 哈希表 6月月更

天猫精灵语音技能单轮对话表达式的参数定义

Jerry Wang

人工智能 机器学习 聊天机器人 机器人 6月月更

【Spring 学习笔记(一)】第一个Spring程序与IoC思想

倔强的牛角

6月月更

哈希游戏开发竞猜系统哈希值hash算法

薇電13242772558

哈希算法

科创人·神州数码集团CIO沈旸:最佳实践模式正在失灵,开源加速分布式创新

科创人

阿里云刘珅孜:云游戏带来的启发——端上创新

阿里云弹性计算

gpu 元宇宙 云游戏

开始使用DOCKER COMPOSE V2

mengzyou

Docker DevOps Docker-compose

样品管理系统解决方案

低代码小观

Lims LIMS实验室信息管理系统 LIMS系统

【高并发】在高并发环境下该如何构建应用级缓存?

冰河

并发编程 多线程 高并发 异步编程 6月月更

架构实战营模块七 作业

库尔斯

架构实战营

都有哪些较好用的项目管理软件?

优秀

项目管理 项目管理软件

函数节流和函数防抖和他们的区别

工边页字

JavaScript 性能优化 前端 6月月更

Docker的安装及日常命令的使用

Geek_982ff5

6月月更

企业知识管理体系怎么搭建和运营?

小炮

盘点校招面试 HR 可能会问到的问题

宇宙之一粟

面试 校招 6月月更

OceanBase 成为信通院首批可信开源社区、可信开源项目

OceanBase 数据库

中国信通院 OceanBase 开源

Java27岁了——一次争执引起的Java内卷生涯

写代码两年半

javase Java EE 6月月更

LabVIEW控制Arduino采集LM35温度传感器数值(基础篇—12)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集LM35温度传感器数值

2022年中国新能源汽车换电市场发展洞察

易观分析

新能源汽车

直播回顾 | 7000字干货,深析区块链+汽车供应链金融的应用价值

旺链科技

区块链 产业区块链 供应链金融

移动平台打造新生态 | 助力企业跨业务、一站式、全场景的系统建设

WorkPlus

架构实战营模块七作业

天琪实刚亮

【云服务器】云计算平台的架构是什么样的?

Finovy Cloud

云服务器 GPU服务器

华为云GaussDB首席架构师冯柯:摘取皇冠上的明珠,华为云数据库的创新与探索

华为云开发者联盟

数据库 华为云 GaussDB 国产数据库

当AI抄起了水表

华为云开发者联盟

人工智能 modelarts workflow 智能水务

动态路由协议之RIP协议,最古老的距离矢量协议!

wljslmz

IP 网络工程师 动态路由 6月月更 路由协议

从零开始搭建vue-cli项目

小恺

6月月更

Netflix继续开源,更多猴子进入视野_Java_丁雪丰_InfoQ精选文章