NYC* 2013 — "Using Cassandra for DVR Scheduling at Comcast"
NYC* 2013 — "Using Cassandra for DVR Scheduling at Comcast"
Using Cassandra for DVR Scheduling at ComcastVERSION   1.0DATE      3/20/213AUTHOR    John McCann | @dangermccann         ...
The X1 Platform                     XFINITY On Demand                     Choose from thousands of movies and             ...
The X1 Platform                     The ultimate scoreboard                     Track multiple games at once and check    ...
The X1 Platform• Next generation of the XFINITY TV experience• New line of set-top boxes and technologies that lets XFINIT...
What Comcast Stores in Cassandra•   Customer viewing history•   Resume points for DVR and XFINITY On Demand content•   Dev...
Why Comcast Uses Cassandra• Multi-data center (active / active)• Performance of write-heavy use cases   – DVR status updat...
Redesigned DVR             Using Cassandra for DVR Scheduling at Comcast   4/9/2013   7
DVR System ArchitectureEast Data Center                                            West Data Center API Server        Work...
Cassandra Configuration•   4-node rings in 2 data centers•   NetworkTopologyStrategy replication strategy•   Replication f...
Comcast Message Bushttps://github.com/Comcast/cmb                                                                        C...
Use Case ExplorationScheduling a Series Recording                          Using Cassandra for DVR Scheduling at Comcast  ...
User Interaction         Set-top boxUser         UI Server                       Using Cassandra for DVR Scheduling at Com...
User Interaction         Set-top box                                                    API Server              Worker    ...
Recording Schedule Update                                            API Server              Worker                       ...
Recording Schedule Update        Set-top box                                                   API Server              Wor...
Recording Schedule Update        Set-top box                                                   API Server              Wor...
UI Update                                                 API Server              Worker                                  ...
UI Update                                                 API Server              Worker                                  ...
System Diagram       Set-top box                                                  API Server              Worker          ...
Data Model Analysis1. Recording Instructions2. Recording Schedule3. Completed Recordings                            Using ...
Recording Instructions Schema• Stores the instructions used to produce the recording schedule  in the order that the instr...
Recording Schedule Schema• Stores the data for the most recent recording schedule that  has been delivered to the Recorder...
Completed Recordings Schema• Stores the data for all of the completed recordings on the STB.Recording AccountID/DeviceID  ...
Hardware Configuration•   HP DL360 G8•   64GB RAM•   2 x 600 GB SATA Hard Drive•   RAID 1 for OS Partition•   LSI controll...
Solid State DrivesSamsung 840 512GB•   50% cost increase per node•   400% capacity increase per node•   Smaller rings, bet...
Lessons Learned• If youre using Hector, pay close attention to  CassandraHostConfigurator.maxActive.• Don’t enable the row...
Q&AThanks for your attention!http://xfinity.comcast.net/x1John McCann@dangermccann                                Using Ca...

Upcoming SlideShare

Loading in …5

×

  1. 1. Using Cassandra for DVR Scheduling at ComcastVERSION 1.0DATE 3/20/213AUTHOR John McCann | @dangermccann Using Cassandra for DVR Scheduling at Comcast 4/9/2013 1
  2. 2. The X1 Platform XFINITY On Demand Choose from thousands of movies and shows. More than a back button See the last nine shows and channels youve watched with a single tap. Using Cassandra for DVR Scheduling at Comcast 4/9/2013 2
  3. 3. The X1 Platform The ultimate scoreboard Track multiple games at once and check the latest scores, standings, and schedules. Apps right on your TV Now your TV is for more than just watching. Using Cassandra for DVR Scheduling at Comcast 4/9/2013 3
  4. 4. The X1 Platform• Next generation of the XFINITY TV experience• New line of set-top boxes and technologies that lets XFINITY TV run in the cloud• Premium content viewing experience, with access to XFINITY On Demand, DVR and Pay-Per-View video• De-coupled, service-based architecture where services are developed and deployed independently Using Cassandra for DVR Scheduling at Comcast 4/9/2013 4
  5. 5. What Comcast Stores in Cassandra• Customer viewing history• Resume points for DVR and XFINITY On Demand content• Device and account preferences• Pay-Per-View purchases• DVR recordings and scheduling instructions Using Cassandra for DVR Scheduling at Comcast 4/9/2013 5
  6. 6. Why Comcast Uses Cassandra• Multi-data center (active / active)• Performance of write-heavy use cases – DVR status updates – Remembering resume points during content playback• Developers (not DBAs) model and manage the data• Open source encourages in-house expertise Using Cassandra for DVR Scheduling at Comcast 4/9/2013 6
  7. 7. Redesigned DVR Using Cassandra for DVR Scheduling at Comcast 4/9/2013 7
  8. 8. DVR System ArchitectureEast Data Center West Data Center API Server Worker API Server Worker Worker Queue Worker Queue API Server Worker API Server Worker API Server Worker API Server Worker Cassandra Cassandra Using Cassandra for DVR Scheduling at Comcast 4/9/2013 8
  9. 9. Cassandra Configuration• 4-node rings in 2 data centers• NetworkTopologyStrategy replication strategy• Replication factor is 3 (per data center)• LOCAL_QUORUM consistency level for most operations Using Cassandra for DVR Scheduling at Comcast 4/9/2013 9
  10. 10. Comcast Message Bushttps://github.com/Comcast/cmb CQS Endpoint• Horizontally scalable queuing and notification service• Compatible with Amazon SQS and SNS Cassandra Redis• Cassandra used to persist messages• Redis used as caching layer• Open source (Apache license) CNS Endpoint CNS Worker Using Cassandra for DVR Scheduling at Comcast 4/9/2013 10
  11. 11. Use Case ExplorationScheduling a Series Recording Using Cassandra for DVR Scheduling at Comcast 4/9/2013 11
  12. 12. User Interaction Set-top boxUser UI Server Using Cassandra for DVR Scheduling at Comcast 4/9/2013 12
  13. 13. User Interaction Set-top box API Server Worker Worker QueueUser API Server Worker UI Server API Server Worker Cassandra Memcached Using Cassandra for DVR Scheduling at Comcast 4/9/2013 13
  14. 14. Recording Schedule Update API Server Worker Worker Queue API Server Worker API Server Worker Cassandra Using Cassandra for DVR Scheduling at Comcast 4/9/2013 14
  15. 15. Recording Schedule Update Set-top box API Server Worker Worker Queue API Server Worker API Server Worker Cassandra Using Cassandra for DVR Scheduling at Comcast 4/9/2013 15
  16. 16. Recording Schedule Update Set-top box API Server Worker Worker Queue API Server Worker API Server Worker Cassandra Using Cassandra for DVR Scheduling at Comcast 4/9/2013 16
  17. 17. UI Update API Server Worker Worker Queue API Server Worker UI Server API Server Worker Cassandra Using Cassandra for DVR Scheduling at Comcast 4/9/2013 17
  18. 18. UI Update API Server Worker Worker Queue API Server Worker UI Server API Server Worker Cassandra Memcached Using Cassandra for DVR Scheduling at Comcast 4/9/2013 18
  19. 19. System Diagram Set-top box API Server Worker Worker QueueUser API Server Worker UI Server API Server Worker Cassandra Memcached Using Cassandra for DVR Scheduling at Comcast 4/9/2013 19
  20. 20. Data Model Analysis1. Recording Instructions2. Recording Schedule3. Completed Recordings Using Cassandra for DVR Scheduling at Comcast 4/9/2013 20
  21. 21. Recording Instructions Schema• Stores the instructions used to produce the recording schedule in the order that the instructions were generated.ScheduleInstruction AccountID/DeviceID TimeUUID : [instruction] TimeUUID : [instruction] … Composite row key Instructions sorted by creation time using TimeUUID as the column name. The column value contains the instruction data. Using Cassandra for DVR Scheduling at Comcast 4/9/2013 21
  22. 22. Recording Schedule Schema• Stores the data for the most recent recording schedule that has been delivered to the Recorder on the STB.DvrSchedule AccountID/DeviceID Properties of each recording stored as separate columns using composite column names: recording_ID/[property_name] Using Cassandra for DVR Scheduling at Comcast 4/9/2013 22
  23. 23. Completed Recordings Schema• Stores the data for all of the completed recordings on the STB.Recording AccountID/DeviceID Properties of each recording stored as separate columns using composite column names: recording_ID/[property_name] Using Cassandra for DVR Scheduling at Comcast 4/9/2013 23
  24. 24. Hardware Configuration• HP DL360 G8• 64GB RAM• 2 x 600 GB SATA Hard Drive• RAID 1 for OS Partition• LSI controller• 2 x Samsung 840 512GB SSD (room for up to 4 SSDs) Using Cassandra for DVR Scheduling at Comcast 4/9/2013 24
  25. 25. Solid State DrivesSamsung 840 512GB• 50% cost increase per node• 400% capacity increase per node• Smaller rings, better read performance• Read performance consistency (flat 99th percentiles for reads) Using Cassandra for DVR Scheduling at Comcast 4/9/2013 25
  26. 26. Lessons Learned• If youre using Hector, pay close attention to CassandraHostConfigurator.maxActive.• Don’t enable the row cache if you need to perform slice queries.• Don’t delete a row if you plan to write columns to the same row later (better in 1.2).• Don’t run Cassandra on shared storage if you can avoid it. Using Cassandra for DVR Scheduling at Comcast 4/9/2013 26
  27. 27. Q&AThanks for your attention!http://xfinity.comcast.net/x1John McCann@dangermccann Using Cassandra for DVR Scheduling at Comcast 4/9/2013 27