在众多开发者眼中,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,其中的onNext、onCompleted和onError分别定义了每次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,期待届时能有更多精彩内容。

Netflix继续开源,更多猴子进入视野相关推荐

  1. 蚂蚁金服SOFA开源负责人鲁直:不只是中间件,未来会开源更多

    近日,技术媒体Linux中国的创始人王兴宇对蚂蚁金服SOFA开源负责人鲁直,就SOFA 5.ServiceMesh.Serverless.Seata等技术内容进行了探讨,以下为专访文章. 虽然我和鲁直 ...

  2. 蚂蚁金服SOFA开源负责人鲁直:不只是中间件 ,未来会开源更多

    二月初春,在西子湖畔的细雨中,我拜访了蚂蚁金服中间件团队,和 SOFA 技术负责人鲁直做了一次深入交谈,更妙的是,鲁直也是负责 SOFA 开源事务推进的人,而这样一个切实践行开放核心模式的开源项目,也 ...

  3. Netflix正式开源其API网关Zuul 2--转

    微信公众号:聊聊架构 5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相 ...

  4. Netflix正式开源其API网关Zuul 2

    5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相当多的微服务组件(详见 ...

  5. netflix 开源_手工3D打印机,Netflix上的开源等

    netflix 开源 本周,我将讨论一个教室,教室里充满了手工制作的3D打印机,Netflix的开源软件以及Linux上的David Both,等等. 订阅我们的YouTube频道以获取我们最新的视频 ...

  6. firefox 开源_Firefox 10岁了,Microsoft开源了更多,等等

    firefox 开源 在本周的开源新闻摘要中,我们回顾了Firefox成立10周年,Microsoft开放更多.NET资源,copyleft.org宣布等等! 开源新闻让您阅读愉快. 2014年11月 ...

  7. netflix 开源_Netflix开源数据科学管理工具

    netflix 开源 Netflix已开源Metaflow ,这是一种内部开发的工具,用于构建和管理基于Python的数据科学项目. Metaflow解决了从原型到模型部署的整个数据科学工作流程,并提 ...

  8. 科普 | 明星公司之Netflix

    点击上方"朱小厮的博客",选择"设为星标" 回复"1024"获取独家整理的学习资料 本文从一个全局上来介绍一下Netflix这家公司,是一篇 ...

  9. Telltale:看Netflix如何简化应用程序监控体系

    为了解决流媒体平台应用程序监控的诸多痛点:警报太多.滚动屏幕太多.配置和维护太多......Netflix推出了Telltale -- 一个建立在"用不着不断调整警报配置"前提上的 ...

最新文章

  1. 本科计算机学渣,2017计算机老学渣的经验教训
  2. codebilcks怎么新建c++文件_电脑开机后桌面空白一个图标都没有,怎么回事?
  3. C#中的非托管资源释放(FinalizeDispose)
  4. 姗姗来迟的Ubuntu版MX4,已经没了当年的初衷
  5. 位掩码(BitMask)
  6. unet详解_UNet解释及Python实现
  7. 滚屏加载--无刷新动态加载数据技术的应用
  8. 【Vue.js源码解析 一】-- 响应式原理
  9. 我的世界java放大化是什么_我的世界:你玩过神奇的放大化种子吗?官方:这些东西非常吃资源...
  10. 通俗的理解:什么是编程语言?
  11. b站python_python学习 —— B站抢楼原理
  12. linux vim下自动补全,linux-python在vim下的自动补全功能
  13. Xcode:iOS崩溃日志分析方法
  14. 超级内存NVDIMM
  15. 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)
  16. Windows10 DNS被劫持 - 解决方案
  17. java网盘_和付费网盘说再见,跟着本文自己起个网盘(Java 开源项目)
  18. matlab如何画箱式图,科学网-如何绘制箱线图(Box- Whisker Chart)-陆绮的博文
  19. Hive用户接口(一)—Hive Web接口HWI的操作及使用
  20. Dubbo面试八股文—1

热门文章

  1. Java实现短链接URL生成
  2. java后端研发经典面试题总结二
  3. 微软Project Europe或将帮助Win10应用开发
  4. Java POI 导入Excell
  5. 多功能聊天室 第一次迭代总结与第二次迭代计划
  6. [初级理论]给老婆做测试培训-02
  7. ubuntu关机或重启出现memtest
  8. Java实验四:类和对象;类的继承和派生;多态性; 接口;构造器应用
  9. 创业公司技术总监出去面试,被拒后的感悟
  10. vue脚手架 编译速度慢95% emitting CopyPlugin