Seu aplicativo pode ser implantado em vários data centers para recuperação de desastres ou para balanceamento de carga geográfica do tráfego. Se seu aplicativo for de alto tráfego, ele deverá usar um cache distribuído. Nessas situações, você precisa garantir que seu cache distribuído possa fazer replicação de WAN para alta disponibilidade de dados em caso de desastre.
NCache fornece Bridge para lidar com a replicação WAN de caches distribuídos. Ele forma uma ponte entre os data centers distribuídos e executa a replicação assíncrona de dados para que não haja degradação do desempenho. Além disso, a própria ponte é um cluster de dois servidores para fins de alta disponibilidade.
Você pode ter um datacenter ativo e um passivo principalmente para fins de recuperação de desastres. Nesta configuração, um site ativo contém a ponte e os caches, enquanto o passivo contém apenas os caches. O site ativo replica de forma assíncrona os dados por meio da ponte para o site passivo, que atua como backup em caso de desastre.
Você pode ter dois datacenters ativos para uma combinação de balanceamento de carga regional e uma finalidade implícita de recuperação de desastres. Um dos sites ativos contém a ponte e os caches, enquanto um contém apenas os caches, semelhante à configuração ativa-passiva. No entanto, a diferença nesse caso é que ambos os sites replicam dados um com o outro, pois ambos atendem ativamente às operações do cliente.
Além das configurações mencionadas, NCache também fornece manuseio de três ou mais data centers. Nesse caso, um dos sites é um site de ponte, que contém a ponte e os caches. Os outros sites contêm apenas os caches. Todos os sites não-ponte estão conectados ao site-ponte, de modo que os dados são replicados para todos os sites simultaneamente. Você também pode criar uma ponte de backup em qualquer um desses sites para garantir alta disponibilidade caso o site da ponte fique inativo. Para mais detalhes sobre essa configuração, você pode acessar o blog Entendendo a replicação de WAN de vários datacenters.
Quando você tem vários sites ativos, há uma chance de que os mesmos dados possam ser atualizados simultaneamente em cada um desses sites. Por padrão, o conflito é resolvido em NCache usando a lógica “última atualização ganha”. No entanto, você também pode especificar um manipulador de resolução de conflitos personalizado que resolva o conflito analisando os dados com base em sua lógica.
O trecho de código a seguir mostra uma implementação simplificada do resolvedor de conflitos implementado no cache:
public class Resolver : IBridgeConflictResolver
{
public void Init(System.Collections.IDictionary parameters) {. . .}
public ConflictResolution Resolve(ProviderBridgeItem oldEntry, ProviderBridgeItem newEntry)
{
var conflictResolution = new ConflictResolution();
switch (oldEntry.BridgeItemVersion)
{
case BridgeItemVersion.OLD: { /* Replace Item with New Entry */ }
break;
case BridgeItemVersion.LATEST: { /* Keep Old Entry */ }
break;
case BridgeItemVersion.SAME: { /* Your custom logic */ }
break;
}
return conflictResolution;
// Configure this implementation on cache
}
public void Dispose() {. . .}
}
Para mais detalhes sobre resolução de conflitos, você pode consultar Documentos de resolução de conflitos.
A replicação em data centers distribuídos regionalmente pode resultar em degradação do desempenho devido à latência. Conseqüentemente, NCache O bridge executa a replicação assíncrona de WAN em paralelo em todos os datacenters para que seu aplicativo não sofra nenhum tempo de inatividade enquanto espera que as operações sejam replicadas.
Além disso, a ponte também envia vários itens de dados como uma única solicitação em massa para o outro site, reduzindo drasticamente as viagens de rede pela WAN. Como complemento, a ponte também possui replicação integrada: é um cluster de 2 nós que se auto-replica para que seja altamente disponível. Para mais detalhes sobre NCache comportamento da ponte, você pode consultar NCache Documentos de arquitetura de ponte.
NCache lida perfeitamente com situações de desastre em cada uma das configurações de data center mencionadas acima.