Artigo

    

Use o aplicativo Codename: BlueMix DataCache service in a Node.js

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.


Por Michele Crudele


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.


O que é necessário para construir um aplicativo similar



  • Estar familiarizado com a escritura de aplicativos da Web em um ambiente de desenvolvimento de um Node.js utilizando o framework do aplicativo Web Express e o motor de matrizes Jade

  • Conhecimentos básicos sobre a plataforma Cloud Foundry (a base do BlueMix) e o modelo de programação de composição do serviço

  • JazzHub e contas BlueMix

  • A interface da linha de comando cf que pode baixar diretamente do BlueMix Web UI




Um serviço de cache distribuído ajuda a construir aplicativos que respondem.




Executar o aplicativo


Obter o código no JazzHub


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



Passo 1: Abra o aplicativo no BlueMix


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:



  1. Inicie sessão na sua conta BlueMix usando a linha de comando cf.

  2. Selecione um nome único para seu aplicativo (estou usando datacache-sample. Coloque o que você quiser)

  3. Execute estes comandos, onde THIS_APP representa o nome escolhido para o aplicativo:

     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).


Figura 1. Página principal de aplicativos imediatamente após a ativação



Passo 2: Vincule um serviço DataCache ao aplicativo


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).


Figura 2. Página principal de aplicativos após vincular um serviço DataCache ao aplicativo


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.



Passo 3: Inserir chaves


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:



  • Um mapa cujo nome termina com: .NONE não expira. Para eliminar o mapa, deve ser usado um comando explícito.

  • Um mapa cujo nome termina com: .LUT define um tempo de expiração para seus objetos com base na última hora da sua atualização (LUT): Serão apagados automaticamente se não forem atualizados em um intervalo de tempo superior ao TTL. O valor predeterminado para TTL é uma hora.

  • Um mapa cujo nome termina com: .LAT define um tempo de expiração para seus objetos com base no tempo do último acesso (LAT): Serão eliminados automaticamente se não forem acessados em um intervalo de tempo superior ao TTL. O valor predeterminado para TTL é uma hora.

  • Um mapa cujo nome termina com .CT define um tempo de expiração para seus objetos com base no momento da sua criação (CT): São eliminados automaticamente depois de CT mais TTL. O valor predeterminado de TTL é uma hora.


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



Passo 4: Obtenha o valor de uma chave


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



Passo 5: Eliminar chaves


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.



Conclusão


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.


Figura 3. Painel DataCache


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

Novo evento "Universidade Livre" será realizado em Belém/PA em 06/05/2017

Publicado em: 28/04/2017 às 11:19 | leituras |

Novo evento sobre Software Livre será realizado no Instituto de Estudos Superiores da Amazônia (IESAM).

Soluti Certificação Digital em busca de especialista Linux

Publicado em: 19/04/2017 às 17:18 | leituras |

A Soluti Certificação Digital está em busca de um profissional para atuar como especialista Linux em Goiânia.

Vaga para analista de TI com experiência em ECM/GED, BPM e BI

Publicado em: 16/12/2016 às 11:12 | leituras |

Renomada empresa de serviços de consultoria em TI, está em busca de um analista de TI para trabalhar em projetos de implementação de soluções ECM/GED, BPM e BI usando os sistemas Alfresco, Activiti, Bonita, Camunda e SpagoBI.

Nova versão do Scalix Groupware oferece suporte completo a IBM Power & IBM Mainframes

Publicado em: 14/12/2016 às 12:59 | leituras |

A nova versão dá liberdade de escolha às empresas para usar as tecnologias mais modernas oferecidas pelo mercado como base para sua solução de e-mail e colaboração

Software Livre e de Código Aberto: uma questão de economia, não de política

Publicado em: 12/11/2016 às 12:36 | leituras |

Os argumentos apresentados neste artigo são todos aspectos econômicos, e não aspectos políticos. Decisões baseadas em política (e não em economia) devem ser lembradas pelos eleitores nas próximas eleições.


Mais notícias

lançamento!

LM 119 | Backup e Restauração




Impressa esgotada
Comprar Digital  R$ 10,90 Digital

  1. Baixe o curso de shell script do Julio Cezar Neves

    Publicado em 07/04/2008 às 19:41 | 408426 leituras

  1. Resultado do concurso "Por que eu mereço ganhar um netbook?"

    Publicado em 30/09/2009 às 3:00 | 177620 leituras

  1. Software público brasileiro na Linux Magazine Especial

    Publicado em 29/07/2011 às 15:07 | 157057 leituras

  1. Lançado o phpBB 3

    Publicado em 13/12/2007 às 18:42 | 156034 leituras

  1. TeamViewer disponível para Linux

    Publicado em 26/04/2010 às 1:27 | 124337 leituras

  1. Nova carreira em TI no Brasil: o cientista de dados

    Publicado em 04/03/2013 às 10:06 | 21433 leituras

  1. Virtualização 3.0 da Red Hat

    Publicado em 22/11/2011 às 10:34 | 9297 leituras

  1. Intel se diz desapontada com parceria entre Nokia e Microsoft

    Publicado em 15/02/2011 às 10:40 | 8710 leituras

  1. Para Apple, marca “iPhone” da Gradiente é inválida: caducou por falta de uso

    Publicado em 15/02/2013 às 10:52 | 8492 leituras

  1. Intel oferece WiMax para Linux

    Publicado em 07/04/2008 às 12:48 | 10100 leituras

whitepapers

mais whitepapers