link
Saudações, adoro o memcached, mas até agora só o usei em configurações de máquina única como um cache local. Li extensivamente sobre a natureza distribuída do memcached e como os clientes determinam em uma lista de servidores de memcached para gravar e ler. Pelo que entendi, escolhendo um algoritmo de hashing determinístico, podemos garantir que os dados sejam sempre gravados e lidos no servidor correto, apesar de a origem da solicitação ter sido feita.
Então, minha pergunta é, considere a seguinte situação:
Servidor A em Nova York, Servidor B em Los Angeles. Ambos são espelhos um do outro. Ambos estão executando bancos de dados mysql com replicação. Não importa realmente no caso de somente leitura, mas digamos que A é o mestre e B é o escravo. Ambos estão executando o memcached e seus clientes têm uma lista dos servidores do memcached (Servidores A e B, neste caso).
Um determinado dado, digamos, o corpo de uma postagem do blog, é lido do banco de dados no Servidor A e, consequentemente, é armazenado no memcached de A. Um usuário diferente em uma parte diferente do país acessa o Servidor B e solicita a mesma postagem no blog. O cliente memcached do Servidor B verifica e vê que, de fato, esses dados foram armazenados em cache, de modo que eles alcançam OVER THE NETWORK para capturar os dados do memcached do Servidor A.
Agora, em primeiro lugar, o meu entendimento está correto até agora? Por favor, aponte quaisquer erros ou suposições incorretas que fiz :).
Então, minha pergunta é: como isso deve melhorar o desempenho? Parece que um plano melhor nesse caso seria apenas ter o Servidor A e o Servidor B executando suas próprias instâncias de memcached separadas como um cache local (a figura superior em link ), mas isso vai contra toda a ideia do design distribuído. Então, qual é a vantagem de ser distribuído? Uma operação de rede do Servidor B para o Servidor A é muito mais lenta do que a leitura do Servidor B a partir de seu próprio banco de dados local.
Por favor me ajude a entender. Eu sinto que há algo que eu estou faltando aqui sobre como funciona o memcached.
Obrigado! K