Netflix的牛是如何炼成的?

简介: Netflix的牛是如何炼成的?

Netflix是一家在线影片租赁提供商。公司能够提供Netflix超大数量的DVD,而且能够让顾客快速方便的挑选影片,同时免费递送。Netflix已经连续五次被评为顾客最满意的网站。可以通过PC、TV及iPad、iPhone收看电影、电视节目,可通过WiiXbox360PS3等设备连接TV。


Netflix的牛在哪里?

可以看几个信息。

使用AWS之前,Netflix使用的是Oracle和IBM的技术来支撑其业务发展的。而现在,Netflix基于AWS构建自己的技术生态。 Netflix已经开源的许多基于全球PaaS平台下的组件以提供在云端的创建和运行高可用服务的最佳实践。


Netflix已经成为Acme Air的一家技术供应商(Acme Air这个产品采用了Netflix OSS的技术,特别是Karyon, Eureka, Hystrix和Ribbon)


ps:full set of NetflixOSS components is at http://http://netflix.github.io


Netflix面临的挑战


  • big:
  • EC2 Instances >100,000
  • CPU Cores >800,000
  • 每天有20%业务是AutoScaling进行弹性伸缩
  • ELB Traffic > 50 Gbps / Per Region
  • 网络流量 Peak Time > 37% internet traffic of USA
  • 大量的Accounts
  • fast:保持创新速度,出新业务很快
  • 1,000s changes
  • 1,000,000s new customers
  • 1,000,000,000s hours streamed

他们如何做到又big和fast呢?


牛是如何炼成的


在AWS re上,Dave Hahn(CORE Team / Netflix)分享了一个话题"Another Day in the Life of a Netflix Engineer (DEV209) ”,从中可以窥见一些端倪。

ps:link https://www.youtube.com/watch?v=aWgtRKfrtMY&feature=youtu.be


牛的背后尽是苦,不幸总是相似的。他们也曾遭遇无奈的宕机!!!


image.png


关于Chaos Principle,网上有参考资料:


1:Build a Hypothesis around Steady State Behavior


把系统当成黑盒,chaos专注在系统does work,而不是尽量验证它如何工作。 例如当故障或某一个状态发生到恢复期间,系统的吞吐量,错误率,延时分布等。


Focus on the measurable output of a system, rather than internal attributes of the system.  Measurements of that output over a short period of time constitute a proxy for the system’s steady state.  The overall system’s throughput, error rates, latency percentiles, etc. could all be metrics of interest representing steady state behavior.  By focusing on systemic behavior patterns during experiments, Chaos verifies that the system does work, rather than trying to validate how it works.


Chaos Monkey是最受关注的一个产品,顾名思义就是用来捣乱的,怎么捣乱?


把某些运算设备定制掉;把系统延迟时间调长等等。。。Chaos系列还可以模拟单机房故障、


 Chaos Monkey 最新版本依赖于Spinnaker这个持续发布平台。下面就不翻译了...


This version of Chaos Monkey is fully integrated with Spinnaker, the continuous delivery platform that we use at Netflix. You must be managing your apps with Spinnaker to use Chaos Monkey to terminate instances.

Chaos Monkey should work with any backend that Spinnaker supports (AWS, GCP, Azure, Kubernetes, Cloud Foundry). It has been tested with AWS and Kubernetes.


2:Vary Real-world Events


实际创造真实环境的事件,比如硬件fail,软件不可用来观察演练。


3:Run Experiments in Production


系统的行为取决于环境和通讯模式,采样真正的流量是唯一的方法来可靠地捕获请求路径。为了保证系统运行的真实性和当前部署的系统的相关性的真实性,chaos喜欢直接在生产流量实验。


4:Automate Experiments to Run Continuously


Running experiments manually is labor-intensive and ultimately unsustainable.  Automate experiments and run them continuously.  Chaos Engineering builds automation into the system to drive both orchestration and analysis.

chaos工程师任务手工的故障演练不可持续,因此构建自动化演练的机制。


强大的监控和部署


监控采用Vizceral,Vizeral已开源,可以参考 http://netflix.github.io/

可以将error的流量负载到多个zone,清晰化管理;zone内部也通过该工具监控。


image.png


Spinner是Netflix统一部署系统。


image.png


设计原则

在Mastering Chaos-- A Netflix Guide to Microservices  分享中,Josh Evans(Engineering Leader) 再次总结了netflix公司的设计原则,涵盖架构、运维及组织。


Dependency

ps:从单体架构演进到微服务架构,依赖会增加;复杂度增加则熵增加。

提供以下几种解决方案。

Circuit breakers, fallbacks, chaos ---保护、故障注入演练

Simple clients

Eventual consistency  --放弃分布式事务,最终一致性

Multi-region failover--跨机房FO能力


Scale

Auto-scaling  自动扩展,扩展都会做,要自动扩展、弹性也不简单

Redundancy – avoid SPoF  

Partitioned workloads

Failure-driven design

Chaos under load---对负载做chaos


Variance

Engineered operations

Understood cost of variance

Prioritized support by impact


Change

Automated delivery  

Integrated practices


Organization & Architecture

Solutions first, team second


文化

早在2009年, Netflix的CEO和首席人才官就做了一份127页的PPT,命名为《自由&责任的文化》,这份PPT在网上被查阅超过了600万次,甚至被Facebook公司的COO桑德伯格称为“硅谷最重要的文件”。这里摘录几条,尝试解读。

价值观

价值观不是挂在墙上的,公司真正的价值观应该是具体通过哪些人被奖励、被提升来体现。


image.png


真正的价值观是被员工所重视的行为和技能,该公司包括了9条:判断力、沟通力、影响力、好奇心、创新、勇气、热情、诚实、无私



image.png


自由和责任

作为一个软件工程师你有充分的自由做出各项选择。Netflix每个工程师都可以在部署和生产环境做出调整改变,这些操作不需要IT人员任何操作。什么是责任,你要为你做的每个错误选择而负责,你可能因为一个错误选择造成这个系统不稳定或者其他系统不稳定,那么你要尽快想办法找出解决方案把影响降到最低,另外一个责任是尽快把这个缺陷修好并且发布一个新的软件。自由与责任最好的体现是Netflix的休假制,任何人任何时间都可以修长的假期,这也是我站在这里的原因之一,休假是你的自由,但是你相应的责任是什么,你休假之前要把你该做的事情做好。而且你的休假不能给公司带来任何负面影响,其实你已经开始休假了,如果你的系统发生问题你也有责任在任何时间任何地方解决这个问题。


总结:Netflix独创了自己的企业文化、工程师文化,但成功的公司有相同的,就是都有确定的使命和价值观,雇佣优秀的人。在架构体系上,深度使用云平台,搭建多中心,面向失败设计、自动化故障演练测试、持续发布等对于大型互联网应用是非常好的示范。我们team曾创新故障注入组件,现已下沉到中间件。演练包括稳定性和资金安全case!


参考资料:互联网

自由&责任的文化

Mastering Chaos-- A Netflix Guide to Microservices  

Another Day in the Life of a Netflix Engineer (DEV209)

相关文章
|
8月前
|
架构师 安全 前端开发
阿里P9架构师推荐的Spring领域巅峰之作,颠覆了我对Spring的认知
你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。
|
4月前
|
前端开发 Java UED
"揭秘!如何以戏剧性姿态,利用SpringCloud铸就无懈可击的异常处理铁壁,让你的微服务架构稳如泰山,震撼业界!"
【9月更文挑战第8天】随着微服务架构的普及,Spring Cloud作为一套完整的微服务解决方案被广泛应用。在微服务架构中,服务间调用频繁且复杂,异常处理成为保障系统稳定性和用户体验的关键。传统的异常处理方式导致代码冗余,降低系统可维护性和一致性。因此,基于Spring Cloud封装统一的异常处理机制至关重要。这样不仅可以减少代码冗余、提升一致性,还增强了系统的可维护性,并通过统一的错误响应格式优化了用户体验。具体实现包括定义全局异常处理器、自定义业务异常以及在服务中抛出这些异常。这种方式体现了微服务架构中的“服务治理”和“契约先行”原则,有助于构建健壮、可扩展的系统。
83 2
|
4月前
|
Cloud Native 安全 Java
Micronaut对决Spring Boot:谁是微服务领域的王者?揭秘两者优劣,选对框架至关重要!
【9月更文挑战第5天】近年来,微服务架构备受关注,Micronaut和Spring Boot成为热门选择。Micronaut由OCI开发,基于注解的依赖注入,内置多种特性,轻量级且启动迅速;Spring Boot则简化了Spring应用开发,拥有丰富的生态支持。选择框架需考虑项目需求、团队经验、性能要求及社区支持等因素。希望本文能帮助您选择合适的微服务框架,助力您的软件开发项目取得成功!
224 2
|
4月前
|
Java 对象存储 开发者
微服务世界的双雄争霸:Spring Cloud与Netflix OSS——谁将引领下一次企业级应用变革的风暴?
Spring Cloud与Netflix OSS是微服务架构的核心组件集,分别以其与Spring Boot的紧密集成及为大规模分布式系统设计的特性,在Java开发社区中广受青睐。前者通过Eureka提供服务发现机制,简化服务注册与定位;后者借助Hystrix增强系统弹性和可靠性,避免雪崩效应。此外,二者还包含负载均衡(Ribbon)、声明式HTTP客户端(Feign)及API网关(Zuul)等功能,共同构建强大微服务体系,助力开发者聚焦业务逻辑,提升系统灵活性与性能。
57 0
|
4月前
|
Cloud Native Java 对象存储
揭秘微服务架构之争:Spring Cloud与Netflix OSS巅峰对决,谁将称霸弹性云原生时代?
近年来,微服务架构成为企业应用的主流设计模式。本文对比了两大热门框架Spring Cloud和Netflix OSS,探讨其在构建弹性微服务方面的表现。Spring Cloud依托Spring Boot,提供全面的微服务解决方案,包括服务注册、配置管理和负载均衡等。Netflix OSS则由一系列可独立或组合使用的组件构成,如Eureka、Hystrix等。两者相比,Spring Cloud更易集成且功能完善,而Netflix OSS则需自行整合组件,但灵活性更高。实际上,两者也可结合使用以发挥各自优势。通过对两者的对比分析,希望为企业在微服务架构选型上提供参考。
90 0
|
5月前
|
XML Java 决策智能
拥抱智能决策新纪元!Spring Boot携手LiteFlow规则引擎,让复杂业务处理如丝般顺滑,引领技术潮流!
【8月更文挑战第29天】LiteFlow是一款专为Java应用设计的轻量级规则引擎,支持条件、循环、分支等多种规则类型,具有组件化设计和高度可扩展性。通过自定义规则和事件监听,它可以显著提升代码的可维护性和可重用性。本文将详细介绍如何在Spring Boot项目中整合LiteFlow,并通过实际案例演示其强大功能。主要步骤包括:添加依赖、配置参数、定义组件及流程,并通过API触发执行。借助LiteFlow,复杂业务逻辑处理变得更加灵活高效。
193 0
|
消息中间件 负载均衡 监控
国王小组:搭建交易所开发完整的Spring Cloud框架
关于SpringCloud Spring Cloud是一个有序的框架集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发方式完成 一键启动和部署。Spring Cloud并不重复制造车轮。它只是结合了各家公司开发的成熟实用的服务框架。通过Spring Boot风格的重新封装,屏蔽了复杂的配置和实现原理,最后给开发 作者留下了一套简单易懂、易于部署、易于维护的分布式系统开发套件。一般来说,一个完整的Spring Cloud框架应该是如下图所示。
国王小组:搭建交易所开发完整的Spring Cloud框架
|
UED 流计算
Netflix 是如何做决策的? | 1. Netflix 的决策制定
Netflix 是如何做决策的? | 1. Netflix 的决策制定
144 0
Netflix 是如何做决策的? | 1. Netflix 的决策制定
|
缓存 自然语言处理 负载均衡
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)
|
Dubbo Java 应用服务中间件
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(上)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(上)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(上)