Exportar (0) Imprimir
Expandir Tudo

Como usar o armazenamento em cache dedicado

Atualizado: março de 2015

As etapas a seguir mostram como criar um aplicativo que usa o cache compatível com memcached dedicado.

O aplicativo será semelhante ao seguinte:

Exemplo de caching Olá, mundo

Existem duas topologias de implantação principais para cache: colocalizada e dedicada. As funções colocalizadas também hospedam código e serviços de outros aplicativos que não usam cache. As funções dedicadas são funções de trabalho usadas exclusivamente para o cache. Para obter informações sobre como criar um aplicativo que usa o cache colocalizado, consulte Como usar o armazenamento em cache colocalizado.

Informações adicionais sobre o cache no Azure estão disponíveis em Cache do Azure.

  1. Crie um aplicativo da Web dinâmico, conforme documentado em Criando um aplicativo Hello World para Azure no Eclipse.

  2. Adicione seu JAR do cliente Memcached para o seu caminho de compilação de Java como uma biblioteca JAR externa.

  3. Adicione o JAR do cliente Memcached ao seu assembly de implantação.

  4. Modifique index.jsp para usar o código a seguir:

    <%@page import="java.net.InetSocketAddress"%>
    <%@page import="net.spy.memcached.*"%>
    <%@page import="java.util.concurrent.*"%>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%
           // Retrieve the current time in milliseconds.
           long timeMillis  = System.currentTimeMillis();
           // Retrieve the role instance ID.
           String currrentRoleInstanceID = System.getenv("RoleInstanceID");
           // Create an instance of the memcached client.
           MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost_WorkerRole1",11212));
           // Create a string based on the current time and the current role instance ID.
           String s = timeMillis + " - " + currrentRoleInstanceID;
           
           String cachedString = null;
           Future<Object> obj = null;
           String keyName = "myText";
           
           // Retrieve and display the currently cached value.
           obj = client.asyncGet(keyName);
           try
           {
           cachedString = (String)obj.get(5, TimeUnit.SECONDS);
           }
           catch (TimeoutException e)
           {
           obj.cancel(false);
           // Take other action as needed.
           }
           
           out.println("Getting from cache: myText = " + cachedString + "<p/>");
    
           // Set the cached value to the current time and role instance ID. -->
           out.println("Setting to cache: myText = " + s + "<p/>");
           
           client.set(keyName, 3600, s);
           // Retrieve and display the newly cached value.
           obj = client.asyncGet(keyName);
           try
           {
               cachedString = (String)obj.get(5, TimeUnit.SECONDS);
           }
           catch (TimeoutException e)
           {
               obj.cancel(false);
           }
           out.println("Getting from updated cache: myText = " + cachedString + "<p/>");
    
    %>
    </body>
    </html>
    
    

    Observe que a chamada para o construtor InetSocketAddress (que está dentro da cal para o construtor MemcachedClient) usa localhost_WorkerRole1. Isso pressupõe que você usará WorkerRole1 para o nome da função de trabalho que cria para seu projeto do Azure na próxima etapa.

  5. Criar um projeto do Azure para seu aplicativo, conforme documentado em Criando um aplicativo Hello World para Azure no Eclipse. Conforme mencionado anteriormente, use WorkerRole1 como o nome da função do Azure.

    noteObservação
    Não habilite o cache durante a criação do projeto do Azure, pois ele será tratado quando uma função de cache dedicado for criada (na próxima etapa).

  6. Crie um ponto de extremidade interno para o projeto de implantação do Azure: No Eclipse, expanda o projeto de implantação do Azure, clique com o botão direito em WorkerRole1, clique em Propriedades, expanda Função do Azure e, em seguida, clique em Pontos de Extremidade.

  7. Clique em Adicionar.

  8. Usando a caixa de diálogo Adicionar Ponto de Extremidade, adicione um ponto de extremidade interno chamado memcache_default com 11212 usado como a porta privada.

  9. Clique em OK para fechar a caixa de diálogo Adicionar Ponto de Extremidade.

  10. Adicione a biblioteca de cache como um componente para a função de trabalho de cache:

    1. No painel de propriedades esquerdo, clique em Componentes.

    2. Na caixa de diálogo Componentes, clique em Adicionar.

    3. Na caixa de diálogo Adicionar Componente, em Importar, para Do caminho, clique em Diretório.

    4. Na caixa de diálogo Procurar Pasta, navegue até C:\Arquivos de Programas\Microsoft SDKs\Azure\.NET SDK\v2.1\ref\Caching\MemcacheShim e clique em OK.

    5. Para o método Importar, use cópia.

    6. Para Como nome, use Cache, que será o padrão quando você clicar na caixa de texto.

    7. Defina Método de Implantação como Nenhum.

    8. Clique em OK para fechar a caixa de diálogo Adicionar Componente.

  11. Adicione arquivos de correção de cache como um componente para a função de trabalho de cache:

    1. Na caixa de diálogo Componentes, clique em Adicionar.

    2. Na caixa de diálogo Adicionar Componente, em Importar, para Do caminho, clique em Diretório.

    3. Na caixa de diálogo Procurar Pasta, navegue até C:\Arquivos de Programas\Microsoft SDKs\Azure\.NET SDK\v2.1\ref\Caching\MemcacheShim e clique em OK.

    4. Para o método Importar, use cópia.

    5. Para Como nome, use Caching\. (isso permitirá que os arquivos de correção sejam copiados para o diretório usado para o componente anterior).

    6. Defina Método de Implantação como Nenhum.

    7. Clique em OK para fechar a caixa de diálogo Adicionar Componente.

  12. Adicione um executável para iniciar a correção do cache como um componente para sua função de cache:

    1. Na caixa de diálogo Componentes, clique em Adicionar.

    2. Na caixa de diálogo Adicionar Componente, deixe Do caminho em branco.

    3. Defina Método de Importação como Nenhum.

    4. Defina Como nome como MemcacheShimInstaller.exe.

    5. Defina Método de Implantação como exec.

    6. Defina Para o diretório como Cache.

    7. Clique em OK para fechar a caixa de diálogo Adicionar Componente e clique em OK para fechar a caixa de diálogo Componentes.

  13. Crie um arquivo chamado web.config dentro de approot do WorkerRole1. Use os seguintes valores para o conteúdo do web.config.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="dataCacheClients"
          type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true"
          allowDefinition="Everywhere"/>
      </configSections>
      <dataCacheClients>
        <tracing sinkType="DiagnosticSink" traceLevel="Error"/>
        <dataCacheClient name="DefaultShimConfig" useLegacyProtocol="false">
          <autoDiscover isEnabled="true" identifier="DedicatedCache"/>
        </dataCacheClient>
      </dataCacheClients>
    </configuration>
    
  14. Para o projeto do Azure que você acabou de criar, adicione uma nova função de trabalho para lidar com o cache dedicado. No Eclipse, clique com botão direito no projeto de implantação do Azure, clique em Propriedades, expanda Azure e, em seguida, clique em Funções.

  15. Clique em Adicionar.

  16. Na caixa de diálogo Função do Azure:

    1. Forneça um nome para a função. Para este tutorial, insira DedicatedCache.

    2. Na página de propriedades à esquerda, expanda Função do Azure e clique em Cache.

    3. Na caixa de diálogo de propriedades Cache:

      1. Habilite o cache colocalizado. Embora a interface do usuário indique que as propriedades sejam um cache colocalizado, já que definiremos o uso de memória para 100% (na próxima etapa), a função atuará como um cache dedicado, não com um cache colocalizado.

      2. Defina o uso de memória como 100%.

      3. Selecione (automático) na lista suspensa da seção Armazenamento. Isso fará com que o kit de ferramentas do Eclipse use automaticamente a mesma conta de armazenamento que a selecionada por você na caixa de diálogo Publicar no Azure. Caso contrário, você pode selecionar uma conta de armazenamento do Azure específica aqui. (Se desejar testar apenas no emulador de computação, não importa qual valor você seleciona, mas seu aplicativo não funcionará em uma implantação de nuvem, a menos que você selecione (automático) ou um nome de conta de armazenamento válido.)

        noteObservação
        A configuração (automática) terá o efeito desejado somente se você publicar sua implantação usando o assistente de publicação do kit de ferramentas do Eclipse. Se, em vez disso, você publicar o arquivo .cspkg manualmente usando um mecanismo externo, como o Portal de Gerenciamento do Azure, a implantação não funcionará corretamente.

      4. Clique em OK para fechar a caixa de diálogo Cache.

    4. Clique em OK para fechar a caixa de diálogo de propriedades do Azure.

  17. Para executar no emulador de computação, na barra de ferramentas do Azure, clique no ícone Executar no Emulador do Azure. Depois que o aplicativo for executado no emulador de computação, inicie a URL localhost do seu aplicativo. Atualize o navegador e você poderá ver que os valores serão mantidos no cache.

  18. Para executar no Azure, certifique-se de que você selecionou (automático) como o nome da conta de armazenamento na página de propriedades Cache para a função de trabalho DedicatedCache. Na barra de ferramentas do Azure, clique no ícone Publicar na Nuvem do Azure e siga os prompts para concluir a implantação. Depois que o aplicativo for executado como um serviço de nuvem do Azure, inicie o URL do seu aplicativo. Atualize o navegador e você poderá ver que os valores serão mantidos no cache.

Consulte também

Mostrar:
© 2015 Microsoft