Voltar ao Início |
|
![]() |
Por comparação com o streamng e vídeo, a transmissão de música é menos exigente em termos de largura de banda e de tamanho (em bits) dos objectos. Por outro lado, o número de objectos pesquisados e transmitidos é consideravelmente maior. A necessidade de adaptar o protocolo ao tipo de serviço de streaming e ao padrão de utilização do mesmo é, portanto, incontornável. O Spotify faz a transmissão de música e gestão de direitos de autor através de um protocolo proprietário, que se baseia em ligações peer-to-peer (P2P). O protocolo em causa foi desenhado com especial foco em obter uma elevada qualidade de reprodução em termos de latência (tempo que decorre desde a ordem de reprodução até ao início da mesma) e interrupções de reprodução, que são dois factores chave na avaliação da qualidade de um serviço de streaming. As músicas podem ser obtidas a partir de três fontes: cache da máquina do utilizador, rede P2P e servidores do Spotify, normalmente por esta ordem de preferência. A escolha da fonte depende das circunstâncias de reprodução e é detalhada nas secções seguintes. ![]() ClientesExistem versões do cliente Spotify para desktop, para dispositivos móveis e ainda uma versão web. As versões para dispositivos móveis e web utilizam um protocolo diferente: a transmissão de dados não é feita por P2P, mas apenas a partir dos servidores. Armazenamento em CacheSempre que uma faixa de música é descarregada, a mesma é armazenada em cache na máquina do utilizador. Esta estratégia assume um papel importante na arquitectura do sistema porque permite optimizar a utilização da rede: (1) tirando partido do facto de grande parte das músicas serem reproduzidas mais do que uma vez (e assim evitando downloads desnecessários); (2) permitindo a partilha das músicas guardadas entre clientes, através do P2P. Em média, 55.4% dos dados são lidos a partir da cache. O Spotify reserva automaticamente para este efeito um espaço que pode ir até 10GB no disco rígido. Esta capacidade pode também ser definida manualmente pelo utilizador. Para se ter uma ordem de grandeza, 5GB armazenam cerca de 1000 faixas. As faixas armazenadas estão encriptadas para proteger a utilização e redistribuição não autorizadas das mesmas, e portanto só podem ser reproduzidas através do cliente Spotify. A limpeza da cache é feita de acordo com a frequência de utilização dos dados – mais concretamente, através de uma política LRU (Last Recently Used). Streaming de músicaSempre que não esteja guardada em cache, a faixa é descarregada pelo cliente Spotify. A escolha da fonte de dados depende principalmente das circunstâncias de reprodução da música e do estado do buffer de reprodução, como é explicado nas secções seguintes . O protocolo do Spotify foi desenhado para dar prioridade à transmissão por P2P sobre a transmissão a partir dos servidores. Ao ser a rede P2P a suportar, em grande parte, a distribuição de dados, garante-se uma fácil escalabilidade do serviço: o crescimento da própria rede P2P acompanha o crescimento do número de utilizadores e portanto o investimento em novos servidores é significativamente reduzido. A percentagem de dados de música transmitidos através da rede P2P é de 35.8%, contra 8.8% transmitidos a partir dos servidores. Quando um cliente é iniciado é sempre feita uma ligação TCP ("Transmission Control Protocol") a um servidor do Spotify, uma vez que qualquer conteúdo (mesmo que armazenado em cache) precisa de autorização para ser reproduzido, para protecção dos direitos de autor ( com excepção para a funcionalidade "ouvir em offline"). O facto de esta ligação estar estabelecida permite localizar clientes que estão online, servindo de apoio à rede P2P. Rede P2PO processo de transmissão de dados a partir da rede P2P é iniciado com a localização e escolha de pares. Uma vez que as faixas de músicas são relativamente pequenas em número de bits, apenas é feita a ligação a um ou alguns pares para a transferência. Apesar dos objectos serem pequenos, a frequência com que são reproduzidos é elevada, portanto manter um overhead (percentagem de bits transmitidos que corresponde à sinalização) reduzido é da maior importância. O overhead do tráfego relacionado com a procura dos dados na rede P2P é de apenas 2.33%, o que comprova a eficiência da utilização da rede. Reprodução de faixas segundo uma ordemCerca de 61% das vezes as faixas são reproduzidas segundo a ordem em que se encontram na fila de reprodução. Neste caso, o download da faixa seguinte é iniciado antes da actual terminar (processo que é denominado prefetching). O intervalo de tempo até ao fim da música tem de ser tal que não atrase o início da próxima, mas também não pode ser demasiado grande, ou os dados transmitidos poderão ser desperdiçados (se entretanto o utilizador decidir não reproduzir a faixa seguinte). O intervalo escolhido é de 30s antes do fim da faixa. A 10s do fim, se não tiverem sido encontrados pares P2P o download é feito a partir de um servidor. No caso específico da reprodução de um álbum inteiro, o Spotify faz a transferência de todas as músicas do mesmo. Reprodução aleatória de faixasQuando o utilizador escolhe uma faixa diferente da que estava prevista (e que não está disponível em cache) ou se escolhe um ponto de reprodução a meio da faixa, o cliente adopta uma estratégia diferente: os primeiros 15s são descarregados de um servidor e durante esse tempo é feita a localização de pares para transmitir o resto da faixa. Robustez contra alterações no canalO tempo de latência e as interrupções na reprodução são factores que têm um impacto importante na satisfação dos utilizadores. Qualquer serviço de streaming requer, portanto, um mecanismo que anule ou minimize o impacto que as variações constantes do estado do canal têm na qualidade. O buffer de reprodução tem a função básica de permitir a reprodução da música ao ritmo correcto: conforme os dados chegam são armazenados no buffer e são lidos segundo um débito de 96, 160 ou 230 kbit/s. O buffer permite, portanto, que a faixa seja reproduzida sem interrupções, "absorvendo" as variações do canal. O tempo de latência de reprodução é ainda ajustado automaticamente (antes ou durante a reprodução de uma faixa) conforme as condições de recepção de dados, de modo a ter sempre no buffer uma quantidade mínima de dados para não haver interrupções. Existe um trade-off entre latência e interrupções: o primeiro é sacrificado em prol do segundo, uma vez que a interrupção de uma faixa tem um impacto muito mais negativo na satisfação dos clientes. A latência mediana observada no serviço é de 265ms. Verificam-se ainda menos de 1% de faixas durante as quais houve alguma interrupção, 64% das quais se pensa que tenham tido causa na máquina local e não no Spotify, uma vez que o buffer de reprodução tinha uma quantidade razoável de dados. Conclui-se que a qualidade e fiabilidade do serviço é elevada. |