netflixoss open house lightning talks

39
NetflixOSS Open House Lightning talks

Upload: ruslan-meshenberg

Post on 06-May-2015

109.326 views

Category:

Technology


1 download

DESCRIPTION

NetflixOSS Open House Lightning talks

TRANSCRIPT

Page 1: NetflixOSS Open House Lightning talks

NetflixOSS Open HouseLightning talks

Page 2: NetflixOSS Open House Lightning talks

Jordan ZimmermanNetflix Platform Team

[email protected]@randgalt

Jordan Zimmerman@randgalt

[email protected]

NetflixOSS projects I work on

Page 3: NetflixOSS Open House Lightning talks

Correct ZooKeeper use is hard!

● Curator is a set of Java libraries that make using ZooKeeper much easier and enforce best practices.

● Curator is focused on the recipes: locks, leaders, etc. Most people interested in ZooKeeper don't need to be concerned with the details of connection management, etc. What they want is a simple way to use the recipes.

● Connection management, retries, recipes, best practices.● Recipes!

Leader Latch, Leader Election, Shared Reentrant Lock, Shared Lock, Shared Reentrant Read Write Lock, Shared Semaphore, Multi Shared Lock, Distributed Queue, Distributed Id Queue, Distributed Priority Queue, Distributed Delay Queue, Simple Distributed Queue, Barrier, Double Barrier, Shared counter, Distributed Atomic Long, Path Cache, Node Cache

Page 4: NetflixOSS Open House Lightning talks

ZooKeeper Ops is very hard!

● Instance Monitoring● Log Cleanup● Backup/Restore● Cluster-wide Configuration● Rolling Ensemble Changes● Automatic Instance Management● Visualizer● ZooKeeper Data Mutation● Curator Integration● Rich REST API

Page 5: NetflixOSS Open House Lightning talks

A library of extensions and utilities that enhance Google Guice to provide:

● Classpath scanning and automatic binding● Lifecycle management● Configuration to field mapping● Field validation● Parallelized object warmup● Lazy singleton● Fine grained, more concurrent singleton● Generic binding annotations

Page 6: NetflixOSS Open House Lightning talks

● At Netflix● Billions of log lines per day● BI reporting, Monitoring, Debugging● Log4j for several years

BLITZ4j

● What we faced?● Traffic increased – per instance logging increased● Contentions in logging● Impact in application response time● Deadlocks during reconfiguration

● What is wrong with Log4j?● Strict locking model● Synchronization semantics everywhere● Impacting application response for logging a few lines?

● What is Blitz4j?● Seamlessly replace all contention points● Decouple logging and application● Asynchronous appender – optimized, configurable● Dynamic configurability

● How can your application benefit?● Does your application use log4j and logs heavily?● Immediate performance boost ● Include blitz4j in classpath and couple of lines of configuration

Page 7: NetflixOSS Open House Lightning talks

● REST service ● Primarily useful in the AWS cloud● Find other middle-tier services in the cloud● Service -farm of instances providing functionality● identified by well known name

EUREKA

● Why discover other services?● Services find other services to interact - midde tier● In AWS cloud, this communication can be tricky● Instances come and go, ASG scales up/down● Interacting services should be aware of this● ELB can track this – but exposes internet traffic● DNS can discover services – but cannot maintain automatically● Eureka tracks this information and relays to all communicating services

● What does Eureka provide?● Finding instances for middle-tier communication and loadbalancing● Other management activities - take instances in/out of live traffic● Share application-specific metadata between services● Built-in Resilience to network partitions, zone failures,eureka peer outages

VMore about Eureka and Blitz4j - Visit us at the booth

Page 8: NetflixOSS Open House Lightning talks

Ribbon

Inter-process communication library with software load balancers and client● Cornerstone of Netflix Internal Web Services (NIWS), a Service Oriented

Architecture● Multiple built-in load balancing schemes

○ round robin, response time weighted, circuit breaker enabled● Cloud ready

○ Integration with Eureka to provide dynamic server pools in AWS○ AWS specific features - zone affinity, zone avoidance, connection

priming● Highly configurable JSR 311 based REST Client● Coming soon

○ Annotation based provider for easy serialization/deserialization and cache support

○ SLA measurement for clients○ Response cache for REST client○ Asynchronous/batch operation for REST client

Page 9: NetflixOSS Open House Lightning talks

ArchaiusArchaius is a dynamic configuration library

● Enable configuration change at runtime without restarting● Framework to poll configuration source or listen to external property

related events● Supports configuration sources from generic URLs, JDBC, Amazon

DynamoDB, ZooKeeper and jCloud● Central place to organize properties into "buckets" by their nature

and priorities● Coming soon

○ Service that manage properties with multiple dimensions○ Property Management UI○ Property validation and change notification

Page 10: NetflixOSS Open House Lightning talks

Astyanax /əˈstaɪ.ənæks/ ● Cassandra Java Client Library - Higher level fluent API

● Connection Pool

○ Bag, Round Robin, Token Aware, Rack aware

○ Connection Priming

○ Failover + Retry

○ Latency optimization

● Optimized for running in the cloud

○ Node discovery

○ Monitoring

○ Metrics

● Recipes - Common Cassandra Data Models

○ Entity Mapping

○ Message Queue (w/ Quartz like scheduling)

○ All rows reader with checkpoints

○ Distributed lock

○ Large object store

Page 11: NetflixOSS Open House Lightning talks

Priam - Jason Brown (@jasobrown)

- Coprocess for running cassandra in ec2- backup & recovery- configuration- token management (*)

Page 12: NetflixOSS Open House Lightning talks

Cassandra virtual nodes

- new feature in c* 1.2- multiple, non-contiguous shards per instance

- simplifies operations for growing / shrinking c * cluster

Page 13: NetflixOSS Open House Lightning talks

CassJMeter

- plugin for Apache JMeter- load testing cassandra- swappable clients

- astyanax- hector- fat client

Page 14: NetflixOSS Open House Lightning talks

Edda

● REST Webservice● Crawls Amazon's AWS APIs

○ Stores results as versioned JSON docs● Dynamic Querying

$ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4"["i-012345678b"]

● View History (resources that no longer exist)

$ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4;_since=0"["i-0123456789","i-012345678a","i-012345678b"]

● View Changes (diff over time of a resource)

Page 15: NetflixOSS Open House Lightning talks

Founder of the Netflix Simian Army

Page 16: NetflixOSS Open House Lightning talks

The Netflix Simian Army

• Chaos Monkey• Chaos Gorilla• Latency Monkey• Janitor Monkey• Conformity Monkey

• Circus Monkey• Doctor Monkey• Howler Monkey• Security Monkey• Chaos Kong• Efficiency Monkey

Page 17: NetflixOSS Open House Lightning talks
Page 18: NetflixOSS Open House Lightning talks

99.99%30 = 99.7% uptime

Page 19: NetflixOSS Open House Lightning talks
Page 20: NetflixOSS Open House Lightning talks
Page 21: NetflixOSS Open House Lightning talks
Page 22: NetflixOSS Open House Lightning talks
Page 23: NetflixOSS Open House Lightning talks
Page 24: NetflixOSS Open House Lightning talks
Page 25: NetflixOSS Open House Lightning talks
Page 26: NetflixOSS Open House Lightning talks

TurbineMetrics Stream Aggregator

Puneet Oberai

API Platform

Page 27: NetflixOSS Open House Lightning talks
Page 28: NetflixOSS Open House Lightning talks

● Low latency streaming infrastructure

● Pluggable Cloud Instance Discovery● Config based (Use Archaius)● File system● Eureka Plugin

● Data agnostic

Page 29: NetflixOSS Open House Lightning talks

Rx JavaFunctional Reactive Programming

Page 30: NetflixOSS Open House Lightning talks

What do these ops have in common?

● Query for all videos that a Netflix member has rated >= 4

● Drag and Drop event

Page 31: NetflixOSS Open House Lightning talks

They're both queries.

Page 32: NetflixOSS Open House Lightning talks
Page 33: NetflixOSS Open House Lightning talks
Page 34: NetflixOSS Open House Lightning talks

ObserverIterator

● next()● hasNext()● throw ex

● update(item)● ???● ???

Two Design Patterns

Page 35: NetflixOSS Open House Lightning talks

ObserverIterator

● next()● hasNext()● throw ex

● onNext(item)● onCompleted()● onError(ex)

Two Design Patterns

Page 36: NetflixOSS Open House Lightning talks

Example: Videos with Rating >= 4.0

Iterable<Video> videosWithHighRating =

netflixMember.getVideoLists().

map({

Iterable<Video> videoList ->

return videoList.

filter({ Video video -> video.getRating() >= 4.0 });

}).

merge();

Page 37: NetflixOSS Open House Lightning talks

Example: Drag EventObservable<MouseEvent> mouseDowns = // convert a legacy Observable

Observable<MouseEvent> mouseMoves = // ...

Observable<MouseEvent> mouseUps = // ...

Observable<MouseEvent> mouseDrags =

mouseDowns.

map({

MouseEvent mouseDownEvent ->

return mouseMoves.

takeUntil(mouseUps);

}).

merge();

Page 38: NetflixOSS Open House Lightning talks

Spin Locks

Semaphores

Dead Locks

Race Conditions

ThreadsObservable1. map

2. filter

3. merge

4. reduce

5. zip

Page 39: NetflixOSS Open House Lightning talks

@AsgardOSS