Your SlideShare is downloading. ×
0
NetflixOSS Open House      Lightning talks
Jordan Zimmerman                 @randgalt   jzimmerman@netflix.comNetflixOSS projects I work on         Jordan Zimmerman ...
Correct ZooKeeper use is hard!●   Curator is a set of Java libraries that make using ZooKeeper much easier    and enforce ...
ZooKeeper Ops is very hard!●   Instance Monitoring●   Log Cleanup●   Backup/Restore●   Cluster-wide Configuration●   Rolli...
A library of extensions and utilities that enhance Google Guice to provide:●   Classpath scanning and automatic binding●  ...
BLITZ4j●   At Netflix       ●   Billions of log lines per day       ●   BI reporting, Monitoring, Debugging       ●   Log4...
EUREKA●   REST service       ● Primarily useful in the AWS cloud       ●  Find other middle-tier services in the cloud    ...
RibbonInter-process communication library with software load balancers andclient ● Cornerstone of Netflix Internal Web Ser...
ArchaiusArchaius is a dynamic configuration library● Enable configuration change at runtime without restarting● Framework ...
Astyanax                         /əˈstaɪ.ənæks/●   Cassandra Java Client Library - Higher level fluent API●   Connection P...
Priam - Jason Brown (@jasobrown) - Coprocess for running cassandra in ec2    - backup & recovery    - configuration    - t...
Cassandra virtual nodes- new feature in c* 1.2    - multiple, non-contiguous shards per instance- simplifies operations fo...
CassJMeter- plugin for Apache JMeter- load testing cassandra- swappable clients    - astyanax    - hector    - fat client
Edda● REST Webservice● Crawls Amazons AWS APIs  ○ Stores results as versioned JSON docs● Dynamic Querying$ curl "http://ed...
Founder of the Netflix Simian Army
The Netflix Simian Army• Chaos Monkey        • Circus Monkey• Chaos Gorilla       • Doctor Monkey• Latency Monkey      • H...
3099.99%        = 99.7% uptime
TurbineMetrics Stream Aggregator        Puneet Oberai         API Platform
●   Low latency streaming infrastructure●   Pluggable Cloud Instance Discovery    ●   Config based (Use Archaius)    ●   F...
Rx JavaFunctional Reactive Programming
What do these ops have in common?● Query for all videos that a Netflix member  has rated >= 4● Drag and Drop event
Theyre both queries.
Two Design Patterns   Iterator             Observer● next()              ● update(item)● hasNext()           ● ???● throw ...
Two Design Patterns   Iterator             Observer● next()              ● onNext(item)● hasNext()           ● onCompleted...
Example: Videos with Rating >= 4.0Iterable<Video> videosWithHighRating =    netflixMember.getVideoLists().         map({  ...
Example: Drag EventObservable<MouseEvent> mouseDowns = // convert a legacy ObservableObservable<MouseEvent> mouseMoves = /...
Spin Locks               Dead Locks    Threads       Observable              1.   mapSemaphores              2.   filter  ...
@AsgardOSS
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
Upcoming SlideShare
Loading in...5
×

NetflixOSS Open House Lightning talks

125,970

Published on

NetflixOSS Open House Lightning talks

Published in: Technology

Transcript of "NetflixOSS Open House Lightning talks"

  1. 1. NetflixOSS Open House Lightning talks
  2. 2. Jordan Zimmerman @randgalt jzimmerman@netflix.comNetflixOSS projects I work on Jordan Zimmerman Netflix Platform Team jzimmerman@netflix.com @randgalt
  3. 3. 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 dont 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
  4. 4. 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
  5. 5. 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
  6. 6. BLITZ4j● At Netflix ● Billions of log lines per day ● BI reporting, Monitoring, Debugging ● Log4j for several years● 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
  7. 7. EUREKA● 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● 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
  8. 8. RibbonInter-process communication library with software load balancers andclient ● 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
  9. 9. 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
  10. 10. 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
  11. 11. Priam - Jason Brown (@jasobrown) - Coprocess for running cassandra in ec2 - backup & recovery - configuration - token management (*)
  12. 12. Cassandra virtual nodes- new feature in c* 1.2 - multiple, non-contiguous shards per instance- simplifies operations for growing / shrinking c * cluster
  13. 13. CassJMeter- plugin for Apache JMeter- load testing cassandra- swappable clients - astyanax - hector - fat client
  14. 14. Edda● REST Webservice● Crawls Amazons 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)
  15. 15. Founder of the Netflix Simian Army
  16. 16. The Netflix Simian Army• Chaos Monkey • Circus Monkey• Chaos Gorilla • Doctor Monkey• Latency Monkey • Howler Monkey• Janitor Monkey • Security Monkey• Conformity Monkey • Chaos Kong • Efficiency Monkey
  17. 17. 3099.99% = 99.7% uptime
  18. 18. TurbineMetrics Stream Aggregator Puneet Oberai API Platform
  19. 19. ● Low latency streaming infrastructure● Pluggable Cloud Instance Discovery ● Config based (Use Archaius) ● File system ● Eureka Plugin● Data agnostic
  20. 20. Rx JavaFunctional Reactive Programming
  21. 21. What do these ops have in common?● Query for all videos that a Netflix member has rated >= 4● Drag and Drop event
  22. 22. Theyre both queries.
  23. 23. Two Design Patterns Iterator Observer● next() ● update(item)● hasNext() ● ???● throw ex ● ???
  24. 24. Two Design Patterns Iterator Observer● next() ● onNext(item)● hasNext() ● onCompleted()● throw ex ● onError(ex)
  25. 25. Example: Videos with Rating >= 4.0Iterable<Video> videosWithHighRating = netflixMember.getVideoLists(). map({ Iterable<Video> videoList -> return videoList. filter({ Video video -> video.getRating() >= 4.0 }); }). merge();
  26. 26. Example: Drag EventObservable<MouseEvent> mouseDowns = // convert a legacy ObservableObservable<MouseEvent> mouseMoves = // ...Observable<MouseEvent> mouseUps = // ...Observable<MouseEvent> mouseDrags = mouseDowns. map({ MouseEvent mouseDownEvent -> return mouseMoves. takeUntil(mouseUps); }). merge();
  27. 27. Spin Locks Dead Locks Threads Observable 1. mapSemaphores 2. filter 3. merge 4. reduceRace Conditions 5. zip
  28. 28. @AsgardOSS
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×