$30 off During Our Annual Pro Sale. View Details »

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.

Senko Rašić

January 23, 2018
Tweet

More Decks by Senko Rašić

Other Decks in Programming

Transcript

  1. Streamanje glazbe
    pomoću Go-a
    Senko Rašić

    View Slide

  2. View Slide

  3. UI
    API
    Django
    Redis
    streamer
    Go
    PSQL
    control
    content
    UI
    player
    Go/RPi
    REST
    mp3

    View Slide

  4. 1 → N N × (1 → 1)

    View Slide

  5. Go Python C/C++ Node.js
    Many
    Concurrent
    Clients
    ✓ ✗ ✓ ✓
    Performance ✓ ✗ ✓ ✗
    Fast dev &
    Maintainable
    ✓ ✓ ✗ ✗
    Java, Erlang, …

    View Slide

  6. View Slide

  7. main
    HTTP
    handler
    HTTP
    handler
    HTTP
    handler

    View Slide

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

    View Slide

  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

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. Redis
    streamer
    Go
    player
    Go/RPi
    streamer
    Go

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide