Streamanje glazbe pomoću Go-a

Streamanje glazbe pomoću Go-a

MusicBox glazbeni servis svakom korisniku daje zasebni glazbeni “kanal” odnosno omogućuje svakom da streama glazbu po svom izboru, zbog čega u sustavu možemo imati stotine različitih glazbenih streamova, odnosno odvojenih long-running konekcija prema klijentima, odjednom. Streamer komponenta napisana je u Gou koji se pokazao kao odličan izbor. Ovdje je prikazan overview Go-based streamera (arhitekture i par zanimljivijih snippeta koda) i opisanih par problema na koje sam naišao tijekom implementacije.

382b18eebb1386e80ff7e20fd1eb784e?s=128

Senko Rašić

January 23, 2018
Tweet

Transcript

  1. Streamanje glazbe pomoću Go-a Senko Rašić <senko@senkorasic.com>

  2. None
  3. UI API Django Redis streamer Go PSQL control content UI

    player Go/RPi REST mp3
  4. 1 → N N × (1 → 1)

  5. Go Python C/C++ Node.js Many Concurrent Clients ✓ ✗ ✓

    ✓ Performance ✓ ✗ ✓ ✗ Fast dev & Maintainable ✓ ✓ ✗ ✗ Java, Erlang, …
  6. None
  7. main HTTP handler HTTP handler HTTP handler

  8. main HTTP handler HTTP handler HTTP handler stream stream stream

  9. Sound Wave Wave frame mp3 data mp3 data metadata mp3

    frame mp3 frame mp3 frame mp3 frame mp3 frame mp3 frame mp3 frame mp3 frame mp3 frame mp3 frame ID3 tag 1. encode 2. format 3. add song info
  10. None
  11. None
  12. None
  13. Redis streamer Go player Go/RPi streamer Go

  14. None
  15. None
  16. None
  17. None