War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Verwenden von dediziertem Zwischenspeichern (Caching)

Verwenden von dediziertem Zwischenspeichern (Caching)

Letzte Aktualisierung: März 2015

Die folgenden Schritte veranschaulichen, wie eine Anwendung erstellt wird, in der dediziertes Memcached-kompatibles Zwischenspeichern verwendet wird.

Die Anwendung sieht etwa wie folgt aus:

Caching-Hello World-Beispiel

Die folgenden zwei Hauptbereitstellungstopologien stehen für Zwischenspeichern (Caching) zur Verfügung: zusammengestellt und dediziert. Zusammengestellte Rollen hosten außerdem weiteren nicht zwischenspeichernden Anwendungscode und weitere Dienste. Dedizierte Rollen sind Workerrollen, die nur für Zwischenspeichern verwendet werden. Informationen, wie eine Anwendung erstellt wird, in der zusammengestelltes Zwischenspeichern verwendet wird, finden Sie unter Verwenden der zusammengestellten Zwischenspeicherung.

Weitere Informationen zum Zwischenspeichern in Azure finden Sie unter Azure Cache.

  1. Erstellen eine dynamische Webanwendung, wie dies unter Erstellen einer "Hallo Welt"-Anwendung für Azure in Eclipse dokumentiert ist.

  2. Fügen Sie Ihre Memcached-Client-JAR-Datei zu Ihrem Java-Buildpfad als eine externe JAR-Bibliothek hinzu.

  3. Fügen Sie Ihre Memcached-Client-JAR-Datei zu Ihrer Bereitstellungsassembly hinzu.

  4. Ändern Sie "index.jsp", sodass der folgende Code verwendet wird:

    <%@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>
    
    

    Beachten Sie, dass für den Aufruf des InetSocketAddress-Konstruktors (der sich im Aufruf des MemcachedClient-Konstruktors befindet) localhost_WorkerRole1 verwendet wird. Hierfür wird davon ausgegangen, dass Sie WorkerRole1 für den Namen der Workerrolle verwenden, die Sie im nächsten Schritt für Ihr Azure-Projekt erstellen.

  5. Erstellen Sie ein Azure-Projekt für Ihre Anwendung. Gehen Sie auch hierzu so vor, wie dies unter Erstellen einer "Hallo Welt"-Anwendung für Azure in Eclipse dokumentiert ist. Wie bereits erwähnt, verwenden Sie WorkerRole1 als Namen für die Azure-Rolle.

    noteHinweis
    Aktivieren Sie Zwischenspeichern nicht während der Erstellung des Azure-Projekts, weil dies erfolgt, wenn eine dedizierte Rolle für Zwischenspeichern erstellt wird (im nächsten Schritt).

  6. Erstellen Sie einen internen Endpunkt für das Azure-Bereitstellungsprojekt: Erweitern Sie in Eclipse das Azure-Bereitstellungsprojekt, klicken Sie mit der rechten Maustaste auf WorkerRole1, klicken Sie auf Properties, erweitern Sie Azure Role, und klicken Sie dann auf Endpoints.

  7. Klicken Sie auf Hinzufügen.

  8. Fügen Sie im Dialogfeld Add Endpoint einen internen Endpunkt namens memcache_default hinzu, für den 11212 als privater Port verwendet wird.

  9. Klicken Sie auf OK, um das Dialogfeld Add Endpoint zu schließen.

  10. Fügen Sie die Cachingbibliothek als eine Komponente zu Ihrer Cachingworkerrolle hinzu:

    1. Klicken Sie im linken Eigenschaftenbereich auf Components.

    2. Klicken Sie im Dialogfeld Components auf Add.

    3. Klicken Sie im Dialogfeld Add Component unter Import für From path auf Directory.

    4. Navigieren Sie im Dialogfeld Browse For Folder zu C:\Programme\Microsoft SDKs\Azure\.NET SDK\v2.1\ref\Caching\MemcacheShim, und klicken Sie auf OK.

    5. Verwenden Sie für die Methode Import die Option copy.

    6. Geben Sie für As name den Namen Caching ein, der als Standardeinstellung verwendet wird, wenn Sie in das Textfeld klicken.

    7. Legen Sie Deploy Method auf None fest.

    8. Klicken Sie auf OK, um das Dialogfeld Add Component zu schließen.

  11. Fügen Sie die Cachingshimdateien als eine Komponente zu Ihrer Cachingworkerrolle hinzu:

    1. Klicken Sie im Dialogfeld Components auf Add.

    2. Klicken Sie im Dialogfeld Add Component unter Import für From path auf Directory.

    3. Navigieren Sie im Dialogfeld Browse For Folder zu C:\Programme\Microsoft SDKs\Azure\.NET SDK\v2.1\ref\Caching\MemcacheShim, und klicken Sie auf OK.

    4. Verwenden Sie für die Methode Import die Option copy.

    5. Geben Sie für As name den Namen Caching\. ein (dies ermöglicht, dass die Shimdateien in das Verzeichnis kopiert werden, das Sie für die vorherige Komponente verwendet haben).

    6. Legen Sie Deploy Method auf None fest.

    7. Klicken Sie auf OK, um das Dialogfeld Add Component zu schließen.

  12. Fügen Sie eine ausführbare Datei hinzu, um den Cachingsshim als Komponente Ihrer Cachingrolle zu starten:

    1. Klicken Sie im Dialogfeld Components auf Add.

    2. Belassen Sie im Dialogfeld Add Component das Feld From path leer.

    3. Legen Sie Import Method auf None fest.

    4. Legen Sie As name auf MemcacheShimInstaller.exe fest.

    5. Legen Sie Deploy Method auf exec fest.

    6. Legen Sie To directory auf Caching fest.

    7. Klicken Sie auf OK, um das Dialogfeld Add Component zu schließen, und klicken Sie dann auf OK, um das Dialogfeld Components zu schließen.

  13. Erstellen Sie eine Datei namens web.config im approot von WorkerRole1. Verwenden Sie die folgenden Werte für den Inhalt von "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. Fügen Sie für das Azure-Projekt, das Sie soeben erstellt haben, eine neue Workerrolle hinzu, über die das dedizierte Zwischenspeichern (Caching) gehandhabt werden soll. Klicken Sie in Eclipse mit der rechten Maustaste auf das Azure-Bereitstellungsprojekt, klicken Sie auf Properties, erweitern Sie Azure, und klicken Sie dann auf Roles.

  15. Klicken Sie auf Hinzufügen.

  16. Im Dialogfeld Azure Role:

    1. Geben Sie einen Namen für die Rolle an. Verwenden Sie für dieses Lernprogramm den Namen DedicatedCache.

    2. Erweitern Sie auf der linken Eigenschaftenseite die Option Azure Role, und klicken Sie auf Caching.

    3. Im Eigenschaftendialogfeld Caching:

      1. Aktivieren Sie zusammengestelltes Zwischenspeichern (Caching). Obwohl in der Benutzeroberfläche die Eigenschaften für einen zusammengestellten Cache angegeben sind, wird die Rolle tatsächlich als ein dedizierter Cache, nicht als ein zusammengestellter Cache fungieren, weil die Speicherauslastung auf 100 % festgelegt wird (im nächsten Schritt).

      2. Legen Sie die Speicherauslastung auf 100% fest.

      3. Wählen Sie im Abschnitt Storage in der Dropdownliste die Option (auto) aus. Dies bewirkt, dass das Eclipse-Toolkit automatisch das Speicherkonto verwendet, das Sie im Dialogfeld Publish to Azure ausgewählt haben. Andernfalls können Sie hier ein bestimmtes Azure-Speicherkonto auswählen. (Wenn Sie nur im Serveremulator testen möchten, ist es egal, welchen Wert Sie auswählen, aber die Anwendung kann in einer Cloudbereitstellung nur funktionieren, wenn Sie (auto) oder einen gültigen Speicherkontonamen auswählen.)

        noteHinweis
        Die Einstellung (auto) hat nur dann den gewünschten Effekt, wenn Sie Ihre Bereitstellung mithilfe des Veröffentlichungs-Assistenten des Eclipse-Toolkits veröffentlichen. Wenn Sie stattdessen die CSPKG-Datei manuell über einen externen Mechanismus veröffentlichen, z. B. das Azure-Verwaltungsportal, funktioniert die Bereitstellung nicht ordnungsgemäß.

      4. Klicken Sie auf OK, um das Eigenschaftendialogfeld Caching zu schließen.

    4. Klicken Sie auf OK, um das Dialogfeld für Azure-Eigenschaften zu schließen.

  17. Soll im Serveremulator ausgeführt werden, klicken Sie auf der Azure-Symbolleiste auf das Symbol Run in Azure Emulator. Sobald die Anwendung im Serveremulator ausgeführt wird, starten Sie die localhost-URL für Ihre Anwendung. Aktualisieren Sie Ihren Browser, und Sie können sehen, dass Werte im Cache verwaltet werden.

  18. Soll in Azure ausgeführt werden, müssen Sie (auto) als Speicherkontonamen auf der Eigenschaftenseite Caching für die Workerrolle DedicatedCache ausgewählt haben. Klicken Sie dann auf der Azure-Symbolleiste auf das Symbol Publish to Azure Cloud, und folgen Sie den Eingabeaufforderungen, um die Bereitstellung abzuschließen. Sobald die Anwendung als Azure-Cloud-Dienst ausgeführt wird, starten Sie die URL für Ihre Anwendung. Aktualisieren Sie Ihren Browser, und Sie können sehen, dass Werte im Cache verwaltet werden.

Siehe auch

Anzeigen:
© 2015 Microsoft