Sem categoria

Chamada do CouchTalk

tldr;

A parte de armazenamento do CouchTalk é fácil, apenas recursos jpeg e wav codificados por id. O que é interessante é o modelo de aplicativo que assume chaves sequenciais, permitindo que o front-end indexe os dados sem emitir nenhuma consulta. Para detectar a última chave, apenas observamos os eventos do navegador na tag img e paramos no 404.

Falar o quê?

Todo mundo sabe que as mensagens push-to-talk estão em alta, e os recursos de áudio/vídeo do HTML5 permitem que elas sejam acessíveis a partir do JavaScript. Como desenvolvedor da Web, estou sempre interessado em ir além do que é prático com os navegadores atuais. Se você ainda não experimentou o CouchTalk, faça isso agora (requer o Google Chrome).

Considerações sobre o projeto

O principal aspecto do Couchbase Server que eu queria destacar com o aplicativo CouchTalk é a velocidade. O push-to-talk é especialmente sensível ao desempenho - adicione alguns décimos de segundo de latência e um aplicativo pode passar de divertido a lento. A arquitetura de memória gerenciada do Couchbase Server significa que o desempenho que você vê hoje é limitado principalmente pela latência da Internet de ponta a ponta, com tempos de resposta no servidor de aplicativos baseados principalmente no tamanho dos dados. Miniaturas pequenas são servidas em poucos milissegundos, enquanto imagens grandes podem demorar mais, pois são limitadas pelas velocidades de conexão.

Implementação (arquitetura e modelo de dados)

O servidor de aplicativos é extremamente simples, apenas um servidor HTTP para leitura e gravação de imagens e clipes de áudio, e um ponto de extremidade da Web para distribuir novos IDs de mensagens aos clientes.

As solicitações do servidor HTTP podem ser balanceadas entre os servidores node.js de qualquer maneira, portanto, o dimensionamento desse aspecto do aplicativo é uma questão de seguir as práticas de dimensionamento do Couchbase Server e adicionar mais servidores node.js quando necessário.

O PubNub é usado para notificar os membros da sala sobre novas alterações. As mensagens do PubNub não contêm imagens ou clipes de áudio reais. Em vez disso, as mensagens enviam IDs de documentos, que o cliente pode usar para solicitar a mídia.

O modelo de dados é orientado por um padrão de chave INCR, portanto, para cada mensagem na sala, o cliente declara sua intenção de salvar uma mensagem e o servidor fornece uma chave para salvá-la. Essas chaves são formatadas sequência de salas em que a sequência é um número inteiro crescente. Os clientes já sabem em qual sala estão, portanto, quando souberem a sequência atual, poderão preencher as mensagens recentes gerando suas chaves.

Quando um cliente solicita o ID da próxima mensagem, ele simplesmente incrementa a chave e envia o resultado de volta ao cliente. As operações de incremento são atômicas, portanto, você pode usá-las para construir um espaço de chaves sem colisões.

    db.incr("ct-"+room, {initial: 0}, function(err, result){
cb(err, ["snap",room,result.value].join('-'))
})

Esse padrão de chave é uma ótima maneira de gerenciar dados relacionados no Couchbase Server. Outro exemplo seria: se você souber o número de comentários em uma postagem de blog, poderá carregar todos os comentários. Ou, no caso do CouchTalk: não há necessidade de rastrear quantos instantâneos fazem parte de um clipe, desde que você saiba a duração do clipe e a frequência com que novos instantâneos são tirados.

Quando as imagens ou o áudio são salvos no servidor, usamos o comando "add" em vez de "set" para garantir que as imagens e o áudio sejam imutáveis; uma vez definidos, eles não serão modificados.

    db.add(req.params.snapshot_id, new Buffer(data, "base64"), opts, function(err, result) {})

Observe que estamos salvando diretamente um buffer binário no banco de dados. Obrigado, Couchbase!

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by J. Chris Anderson

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.