2008-12-09 19 views
8

Estoy buscando el uso de MemCached para una aplicación web que estoy desarrollando y después de investigar MemCached en los últimos días, me he encontrado con una pregunta que no pude encontrar la respuesta.¿Cómo vincular el servidor MemCached?

¿Cómo se vincula el servidor Memcached o cómo se replican los datos entre el servidor MemCached?

Además: ¿Está esta funcionalidad controlada por los servidores o los clientes y cómo?

Respuesta

5

He utilizado BeITMemcached y en eso crea una instancia de MemcacheClient y configura los servidores que desea usar, solo como cadenas.

En ese momento, el cliente determina cuál de los servidores tiene disponible para colocar los diferentes elementos. Nunca se sabe en qué elemento estará.

Compruebe here to see how the servers handle failover.

Lo más fácil es tener un mecanismo de repoblación. En mi caso, almaceno varios cientos de objetos en Memcache que salen de una base de datos.Solo puedo llamar a repoblación y ponerlos de vuelta allí. Cuando agrego, actualizo o elimino a la base de datos, hago esas mismas llamadas a Memcache.

7

Cuando configura varios servidores, las bibliotecas del cliente utilizan un primer hash para elegir uno donde almacenar cada par de clave/datos. eso significa que no hay replicación, y también que cada cliente tiene que usar el mismo conjunto de servidores.

pros:

  • casi cero gastos generales, almacenamiento y ancho de banda crece linealmente.
  • El código del servidor se mantiene simple y confiable.

contras:

  • cualquier cambio en el conjunto de servidores (uno va hacia abajo, o se añada una nueva) repentinamente invalida (casi) todo el caché.
  • debe asegurarse de usar el mismo algoritmo en cada cliente.

si tiene control del código del cliente, puede simplemente almacenar cada par de clave/datos dos veces en dos servidores. solo asegúrese de buscar en los mismos lugares cuando lea de un cliente diferente.

+0

Seguramente esa no es la única manera de hacerlo? –

+1

El hash constante puede limitar significativamente el número de claves invalidadas por su rehecho a un servidor diferente. Esto también depende de la cantidad de servidores que tengas. –

1

Parece que usted desea tener cachés que pueden hacer frente a las máquinas de reiniciar, etc ... si es así

En muchos casos (suponiendo que no está escribiendo Facebook) un RDBMS es lo suficientemente rápido como para almacenar en caché. Solo crea una tabla que tenga una clave y una columna de blob. Si el servidor RDBS tiene suficiente memoria RAM, todos los datos estarán en RAM y solo se guardarán en el disco para permitir la recuperación.

Recuerde que esto podría ser un servidor independiente de su servidor de base de datos principal.

Si desea obtener más lujo y está utilizando un RDMS de gama alta, es posible que pueda configurar notificaciones de cambio en las consultas que se utilizan para generar los "datos en caché" que eliminan filas desactualizadas desde el caché

Alguien puede configurar activadores para eliminar filas inválidas de la memoria caché, sin embargo, esto puede ser muy complejo muy rápidamente.

0

Memcached no proporciona propiedad de replicación. Para hacer eso, debe agregar el servidor a la lista de servidores cliente de Memcached y luego presionar el DB para almacenar los datos en ese servidor en particular.

0

Debería considerar seriamente CouchBase. Utiliza el protocolo de memcached, proporciona casi la misma velocidad y ofrece la replicación automática que está buscando. También persiste en el disco por lo que su caché nunca estará fría.

+0

¿Tienes alguna experiencia práctica? Me encontré con muchos problemas extraños con Couchbase. A partir de problemas de arranque a bloqueos y lo que no. Traté de escalar esos problemas, fue en vano. Espero que tu experiencia sea mejor. – Till

+0

Tengo experiencia en producción con Membase, pero no con Couchbase. Tengo entendido que Couchbase ahora es Membase + CouchDB. –

+0

Sí, también probé Membase. No he usado Couchbase tampoco. – Till

Cuestiones relacionadas