Cache Distribuído

Um blog sobre "Velocity" e coisas da Nuvem, por Osvaldo Daibert

Preparando seu projeto para desenvolver para o "Velocity"

Olá pessoal.  

Nesse post vou falar sobre como preparar o ambiente para começar o desenvolvimento utilizando o “Velocity”. Antes de começar a desenvolver utilizando o “Velocity” é necessário que os assemblies do System.Data.Caching estejam disponíveis para o Visual Studio. Cada aplicação desenvolvida utilizando o “Velocity” precisa fazer referência aos assemblies e configurar seu arquivo .config para o cache cluster. A instalação do “Velocity” será abordada em outro post muito em breve.

Preparando o Projeto:

Os assemblies necessários para o desenvolvimento ficam na pasta aonde o “Velocity” foi instalado no servidor ou na workstation.  

São duas etapas a serem feitas. A primeira é adicionar a referência para os assemblies e a segunda é configurar client cache no.config de seu projeto  ou codificar o acesso ao servidor via código, o que eu não recomendo por ser menos flexível a alterações quando a aplicação já está em produção.

Adicionando as referências:

Copiar os assemblies CacheBaseLibrary.dll, ClientLibrary.dll, FabricCommon.dll, and CASBase.dll para a mesma pasta do seu projeto.

Adicionar referência no projeto para os assemblies CacheBaseLibrary.dll e ClientLibrary.dll. Com isso a referência para System.Data.Caching estará disponível no projeto.

Configurando o tipo do cache client

Para que o projeto tenha acesso ao cluster cache (Servidor / Servidores aonde o “Velocity” está instalado) o cache client deve ser configurado como simple client ou routing client.

Para configurar o cache client:

Primeiramente deve-se definir qual o tipo do client cache o projeto utilizará, se simple client ou routing client (abordarei esses tópicos em outro post focado na arquiterura do “Velocity”), mas resumidamente, quando sua aplicação tiver acesso pela rede para todos os servidores de cache cluster deve-se utilizar o routing client para maior performance e quando a aplicação tiver acesso a somente um nó do cluster utiliza-se o simple client.

Esse é um exemplo do arquivo de configuração de uma aplicação que acessará o cache cluster. Nesse exemplo essa aplicação tem acesso via TCP a porta “22233”(porta padrão que pode ser alterada na instalação de um nó do cache cluster) a todos os servidores do cluster.

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
  <!–configSections must be the FIRST element –>
  <configSections>
    <!– Required to read the <dcacheClient> section –>
    <section name=”dcacheClient”
       type=”System.Data.Caching.DCacheClientSection, CacheBaseLibrary”
       allowLocation=”true”
       allowDefinition=”Everywhere”/>

    <!– Required to read the <fabric> section, when present –>
    <section name=”fabric”
       type=”System.Data.Fabric.Common.ConfigFile,FabricCommon”
       allowLocation=”true”
       allowDefinition=”Everywhere”/>
  </configSections>

  <!–OPTIONS:
      <dcacheClient deployment=”simple/routing”>
      NOTE: Use a routing client when possible.
  –>

  <dcacheClient deployment=”routing”>
    <!– OPTIONAL :
      <localCache
        isEnabled=”false(default)/true”
        sync=”TTLBased(default)”
        ttlValue=”number in seconds (300 is default)”/>
    –>

    <hosts>
      <!–List of hosts –>
      <host
         name=”CacheServer1″
         cachePort=”22233″
         cacheHostName=”DistributedCacheService”/>
      <host
         name=”CacheServer2″
         cachePort=”22233″
         cacheHostName=”DistributedCacheService”/>
    </hosts>
  </dcacheClient>
</configuration>

Pode-se configurar o acesso ao cache cluster de forma programática também, mas como citei acima, não recomendo pois torna-se complicada a manutenção da aplicação em produção. Esse exemplo abaixo configura a aplicação da mesma forma que o arquivo de configuração anterior.

//————————-
// Configure Cache Client
//————————-
//Define Array for 1 Cache Host

ServerEndPoint[] servers = new ServerEndPoint[1];

//Specify Cache Host Details
//  Parameter 1 = host name
//  Parameter 2 = cache port number
//  Parameter 3 = cache service name

servers[0] = new ServerEndPoint(“CacheServer2”,22233, “DistributedCacheService”);

//Select Routing or Simple Client
// True = Routing Client
// False = Simple Client (no routing table)

bool routingClient = true;

//Select local cache if desired
// True = Enable local cache
// False = Disable local cache

bool localCache = false;

//Pass configuration settings to cacheFactory constructor
CacheFactory mycacheFactory = new CacheFactory(servers, routingClient, localCache);

//Get reference to named cache called “NamedCache1”
Cache myDefaultCache = mycacheFactory.GetCache(“NamedCache1”);

 

Bom, por enquanto é só.

Abraços e tenham uma ótima semana.

Daibert