Challenge 4: 10K Concurrent Viewers - Deepstash
Machine Learning With Google

Learn more about computerscience with this collection

Understanding machine learning models

Improving data analysis and decision-making

How Google uses logic in machine learning

Machine Learning With Google

Discover 95 similar ideas in

It takes just

14 mins to read

Challenge 4: 10K Concurrent Viewers

Challenge 4: 10K Concurrent Viewers

  • Scale horizontally to handle more concurrent viewers -> Add multiple Frontend nodes and coordinate them using a Dispatcher node.
  • In a similar fashion to the Frontend node, the Dispatcher has a subscriptions table to know which frontend nodes should receive which events.
  • This table is populated when Frontend nodes send subscription requests to tell the Dispatcher which live videos they're interested in (i.e. which live videos its connections are subscribed to).

9

54 reads

MORE IDEAS ON THIS

Challenge 2: Connection Management

Challenge 2: Connection Management

  • Each connection is managed by an Akka actor.
  • Actors are so lightweight that there can be millions of them on a single system. Moreover, all of them can be served by a small number of threads, proportional to the number of cores. This...

8

44 reads

Challenge 3: Multiple Live Videos

Challenge 3: Multiple Live Videos

  • Clients are subscribing to events for a particular live video i.e. they are telling the server which live video they are watching.
  • The Frontend server stores all subscriptions in an in-memory table.
  • Every time a new event is published, the su...

8

61 reads

Final architecture

Final architecture

  1. A viewer likes a video and sends an HTTP request to the Likes backend, which stores it in a database.
  2. The backend forwards the like to any random Dispatcher node using an HTTP request.
  3. Dispatcher looks up in the key-value store to find out which Frontend nodes are subscribed ...

12

315 reads

Interactive Live Videos

Interactive Live Videos

Having a lot of people interact on live videos poses many technical challenges. Mainly because viewers generate a lot of interactions that need to be delivered fast.

To get a sense of the scale, the top live streams in the world gathered millions of concurrent users:

8

121 reads

The Realtime Platform

The Realtime Platform

LinkedIn has built the Realtime Platform to distribute multiple types of data in real-time such as:

  • Likes, comments and viewer count for Live Videos
  • Typing indicators and Read receipts for Instant Messaging
  • Presence i.e. the green online indicators
  • ...

7

118 reads

Related posts

Related posts

  • How LinkedIn displays Presence indicators in real-time: https://engineering.linkedin.com/blog/2018/01/now-you-see-me--now-you-dont--linkedins-real-time-presence-platf
  • How LinkedIn measures end-to-end latency across systems: https://engineering.linked...

10

206 reads

Challenge 1: The Delivery Pipe

Challenge 1: The Delivery Pipe

  • User devices have a persistent connection to the Realtime Platform servers.
  • The servers use server-sent events to stream data fast on this connection via the EventSource interface.

A persistent connection is an HTTP L...

8

87 reads

Challenge 5: 100 Likes/second

Challenge 5: 100 Likes/second

  • Scale horizontally again to handle more events -> Add multiple Dispatchers and move the subscription table into a key-value store so it's accessible to all Dispatchers.
  • Dispatchers are independent from Frontend nodes and don't have persistent connect...

9

76 reads

Bonus Challenge: Multiple data-centers

Bonus Challenge: Multiple data-centers

Expanding to other regions requires two steps:

  1. Replicate the setup in each data-center.
  2. Have the Dispatcher broadcast the events to its peer Dispatchers from the other data-centers.

8

59 reads

Performance and scale

Performance and scale

  • Each Frontend node handles 100k persistent connections. It handles only this many connections because the server is doing a lot of work processing multiple types of data (likes, comments, instant messaging etc.).
  • Each Dispatcher can publish 5k events per seco...

8

49 reads

CURATED FROM

CURATED BY

ocpodariu

Alt account of @ocp. I use it to stash ideas about software engineering

Related collections

More like this

Challenge 5: 100 Likes/second

Challenge 5: 100 Likes/second

  • Scale horizontally again to handle more events -> Add multiple Dispatchers and move the subscription table into a key-value store so it's accessible to all Dispatchers.
  • Dispatchers are independent from Frontend nodes and don't have persistent connect...

Final architecture

Final architecture

  1. A viewer likes a video and sends an HTTP request to the Likes backend, which stores it in a database.
  2. The backend forwards the like to any random Dispatcher node using an HTTP request.
  3. Dispatcher looks up in the key-value store to find out which Frontend nodes are subscribed ...

Performance and scale

Performance and scale

  • Each Frontend node handles 100k persistent connections. It handles only this many connections because the server is doing a lot of work processing multiple types of data (likes, comments, instant messaging etc.).
  • Each Dispatcher can publish 5k events per seco...

Read & Learn

20x Faster

without
deepstash

with
deepstash

with

deepstash

Access to 200,000+ ideas

Access to the mobile app

Unlimited idea saving & library

Unlimited history

Unlimited listening to ideas

Downloading & offline access

Personalized recommendations

Supercharge your mind with one idea per day

Enter your email and spend 1 minute every day to learn something new.

Email

I agree to receive email updates