Artigo
| ![]() |
Este artigo explica como usar o aplicativo Codename: BlueMix DataCache service in a Node.js. Também oferece uma biblioteca do cliente que pode ser ampliada e utilizada em outros aplicativos Node.js hospedados no BlueMix.
Um cache de dados distribuído pode melhorar o tempo de resposta de apresentação de um aplicativo baseado na nuvem ao colocar em cache as respostas a solicitações frequentes do usuário. Um cache distribuído também oferece o benefício de baixar a camada do serviço de dados: os componentes do aplicativo que proporcionam persistência de dados. Um serviço de cache distribuído ajuda a construir aplicativos que respondem.
Este artigo explica como usar o serviço DataCache em um aplicativo Node.js hospedado por Codename: BlueMix. O DataCache é um cache distribuído (operado pela tecnologia WebSphere eXtreme Scale) que pode ser usado como um armazém de dados eficiente e confiável de valor chave. Oferecemos um módulo de cliente Node.js que pode ser ampliado e utilizado nos aplicativos escolhidos para serem hospedados no BlueMix. O serviço DataCache é usado sobre a rede através da sua REST API. O módulo de cliente abstrai os bits REST, proporcionando métodos de nível mais alto para gerenciar objetos de valor chave.
cf
que pode baixar diretamente do BlueMix Web UI
“Um serviço de cache distribuído ajuda a construir aplicativos que respondem.”
Nota: Se você quiser usar um fork no código para este exercício no JazzHub, clique no botão EDIT CODE no canto superior direito (capture suas credenciais JazzHub se ainda não iniciou a sessão e clique no botão FORK do menu para criar um projeto novo.
Node.js para desenvolvedores Java
Gerencie os requisitos não funcionais para os aplicativos da nuvem
Obtenha o código. Para usar a linha de comando Git para baixar o código do meu projeto JazzHub para um diretório local chamado datacache-sample, execute:
git clone https://hub.jazz.net/git/mcrudele/datacache-sample
Agora abra o aplicativo no BlueMix:
cf
.cd datacache-sample cf push THIS_APP
O comando push
dá saída à informação verbosa ao console. As últimas linhas de um processo bem-sucedido aparecem assim:
Clique aqui para ver lista de códigos
Agora você pode conectar ao aplicativo apontando com seu navegador a http://THIS_APP.ng.bluemix.net (consulte a Figura 1).
Opa — Esqueci de mencionar que, primeiro, é preciso vincular um serviço DataCache ao aplicativo, de acordo com as instruções do comando da Figura 1. Não é preciso entrar em pânico. Você pode fazer isso simplesmente reiniciando o aplicativo. Execute o comando apresentado na página:
cf create-service DataCache free SERVICE_NAME cf bind-service THIS_APP SERVICE_NAME cf restart THIS_APP
Após recarregar a página, você verá que o aplicativo oferece algumas opções utilizáveis (consulte a Figura 2).
O que aconteceu? Como você sabe que não havia sido associado um serviço DataCache ao aplicativo no princípio?
Abre-se datacache-sample/app.js (que é o módulo principal do aplicativo, que inicia o servidor Web), e você verá o código que verifica a presença do serviço DataCache na parte superior — na definição da variável de ambiente VCAP_SERVICE
:
Clique aqui para ver lista de códigos
DCClient
é o módulo que oculta os bits de REST API do serviço de DataCache, oferecendo métodos de um nível mais alto também se encarrega de distribuir o objeto de credenciais
que contêm parâmetros de conectividade para o serviço de DataCache. DCClient
se implementa no arquivo datacache-sample/wxs.js.
Se armazena uma referência a DCClient
na variável app.locals.dcClt
para que as rotas Express possam acessá-las. A rota responsável por entregar a página de índice (datacache-sample/routes/index.js) executa a verificação:
Clique aqui para ver lista de códigos
o código anterior entrega a matriz Jade datacache-sample/views/index.jade passando o parâmetro. dataCacheBound
O motor de matrizes Jade verifica o valor da variável dataCacheBound
e constrói a página principal dessa maneira entregando seja a página na Figura 1 ou a página na Figura 2.
Para armazenar um objeto de valor chave na instância DataCache que está vinculada ao aplicativo, clique em Insert a key into a map na página principal.
Quando você cria um serviço DataCache, é criado um mapa predeterminado no qual são armazenados seus objetos de valor chave, para que possa deixar o campo de entrada Map vazio. Mas, em alguns casos, você pode querer especificar diferentes opções de cache para objetos diferentes. Nesses casos, você pode especificar um mapa e o tempo de vida (TTL) dos objetos de valor chave que contêm. Você especifica o valor TTL adicionando um sufixo no nome do mapa:
Tente usar o aplicativo para colocar em cache objetos de valor chave em diferentes tipos de mapas. Se o valor for um objeto JSON, define o campo de tipo de conteúdo a application/json
. Se for um objeto XML, defina-o a application/xml
. Para qualquer outro tipo de valor, deixe o campo tipo de conteúdo como application/octet-stream
.
Defina um nome de mapa sem nenhum dos sufixos e veja o que acontece.
Um único arquivo — datacache-sample/routes/map.js — contém todas as rotas expressas para gerenciar as operações do DataCache. Esta é a porção do arquivo que gerencia a inserção de um objeto de valor chave:
Clique aqui para ver lista de códigos
dcClt.put()
é o método para inserir um objeto em um mapa. Você passa o mapa, senha, valor e os tipos de conteúdo do valor mais a função retorno de chamada que gerencia os resultados. O arquivo datacache-sample/wxs.js inclui ajuda sobre como interpretar o parâmetro passado ao retorno de chamada:
Clique aqui para ver lista de códigos
Para obter o valor de uma chave que está armazenada na instância de DataCache unida ao aplicativo, clique no link Get a key from a map na página principal.
Tente recuperando as chaves que inseriu no Passo 3. Tente também obter algumas chaves não existentes. Depois veja o código.
Esta porção do arquivo datacache-sample/routes/map.js gerencia a operação:
Clique aqui para ver lista de códigos
Como com inserir, a parte interessante dcClt.get()
da chamada do método e o gerenciamento dos resultados na função de retorno de chamada. O método dcClt.get()
toma como entrada o nome do mapa, a chave e a função de retorno de chamada. O arquivo datacache-sample/wxs.js inclui ajuda sobre como interpretar o parâmetro passado ao retorno de chamada:
Clique aqui para ver lista de códigos
Use o link Eliminar uma chave de um mapa ou Eliminar todas as chaves de um mapa na página principal para eliminar os objetos com valor chave dos mapas. Como fez para inserir e obter, você pode examinar o código nos arquivos datacache-sample/routes/map.js e datacache-sample/wxs.js files. O objeto WXS
define o método remove()
para eliminar um objeto de valor chave de um mapa e o método clearMap()
para eliminar todos os objetos de valor chave de um mapa.
Com a compreensão que você tem agora sobre as capacidades básicas do serviço DataCache, você pode iniciá-lo rapidamente na plataforma BlueMix. Logo você descobrirá mais características deste serviço, que incluem um painel DataCache (ver a Figura 3) ao qual se acessa a partir da BlueMix Web UI. O painel mostra o uso do serviço e como está se comportando.
Clique para ver a imagem maior
Eu os convido a obter o módulo WXS
Node.js ampliá-lo para seus propósitos e compartilhá-lo com a comunidade. Você pode baixar uma biblioteca similar para a linguagem Java ™ diretamente do BlueMix WebUI nas páginas de documentação do serviço DataCache.
Notícias
|