2008-12-09 31 views
83

¿Alguien ya ha implementado memcached para uso de producción en el entorno de Windows? Debido a que muchos blogs que he leído, no se recomienda ejecutar memcached en Windows especialmente para uso de producción, por ejemplo running memcached on windows.Memcached con Windows y .NET

Y una cosa más, ¿qué cliente de memcached es bueno usar con C# y .net 3.5? he encontrado muchos alternativo, como Memcached Providers @ Codeplex, Beitmemcached y memcached provider @ Sourceforge

+6

Usted está apuntando a un poste 2008 blog. Memcached se está volviendo bastante amigable últimamente en Windows: http://www.northscale.com/ – Dustin

+1

+1 a Dustin. Hemos estado utilizando NorthScale y es bastante amigable para Windows, con una agradable interfaz de usuario (web) – ram

+2

@Dustin y @ram - Dustin, disfruta de tu +1 pero esta pregunta se realizó en 2008. – Justin

Respuesta

49

¿Por qué necesita ejecutar memcached en Windows? Es un asunto costoso en un entorno de producción.

Si su código necesita ejecutarse en un entorno de Windows, consiga un cliente de Memcached de Windows y hable con una máquina de memcached basada en * nix.

En un entorno de producción que ejecute memcached en Server 2003 o 2008, significa que obtendrá licencias para todos esos cuadros. Linux le ofrecerá todos los beneficios de OSS. TCO aumentará linealmente con memcached en Windows

Editar:

Ha sido alrededor de 1,5 años desde que escribí esta respuesta y muchas cosas han cambiado desde entonces. Debes darte cuenta, especialmente cuando alguien como Dustin comenta.
Así es cómo puede obtener memcached en Windows. Download memcached for windows from Couchbase (formerly Northscale).
Normalmente, si planea ejecutar memcached en la misma máquina de producción, debería iniciarla en una memoria limitada, es decir, definir la memoria máxima que puede usar memcached.

c: \ Program Archivos \ memcached> memcached.exe -m 128.

Aquí memcached se ejecuta con un máximo de 128 mb de uso. No quiere que memcached ocupe toda la memoria en su servidor web.

En el momento en que decidió scale out memcached, tendrá que considerar lo que dije anteriormente. Además, comprima sus valores en las combinaciones de valores clave. Los servidores web suelen consumir muy poco CPU (2-3%) y la compresión aporta mucho valor a la red en comparación con el uso de la CPU. Si está demasiado preocupado por la compresión normal, intente LZO

+2

Gracias por su respuesta, esto es lo que estoy buscando. – Funky81

+30

¿Cómo aumenta TCO exponencialmente en Windows? El costo de la licencia aumenta linealmente con el número de máquinas. Pero cuando se toman en cuenta los costos de hardware, espacio de rack y electricidad, contratos de soporte y salarios de los operadores, el costo de licencias de Windows es bastante insignificante, francamente. –

+22

Solo para agregar una refutación al argumento de Cherian. Un factor determinante para querer alojar en Windows puede ser la experiencia de administrador de sistema. Por ejemplo, las tiendas más pequeñas que no tienen los recursos para contratar a un administrador de * nix solo para abrir una caja de memcached podrían beneficiarse enormemente del alojamiento en una plataforma con la cual la compañía ya está bien versada (es decir, Windows). –

7

no sé lo que el proyecto que está trabajando es, pero que le gustaría echar un vistazo a la Microsoft Velocity project Desde la página:

"velocidad" es una plataforma de caché distribuida en memoria solicitud de desarrollar escalable, de alto rendimiento aplicaciones. "Velocity" se puede usar para almacenar en caché cualquier objeto común de tiempo de ejecución (CLR) y proporciona acceso a través de API simples. Los aspectos clave de "Velocidad" son caché distribuida rendimiento, scalabily y disponibilidad.

He visto un par de demostraciones y parece que tiene una integración muy buena con .NET Framework.

El problema con las API del cliente es que todavía tiene que tener una instancia de memcached ejecutándose en otra casilla en algún lugar preferiblemente como ha notado, utilizando la pila LAMP. El uso de la velocidad significa que todavía se ejecutará en la misma pila y hay una mayor integración en la plataforma .net.

Habiendo dicho esto, si desea utilizar la velocidad como caché para otras aplicaciones .NET, puede que tenga que escribir su propia API para exponer los datos de velocidad para el consumo.

+0

Por lo que yo sé, la velocidad aún está en desarrollo, es por eso que trato de buscar otra alternativa. Y eso es memcached – Funky81

+0

después de leer un rato, la instalación de velocidad y el mantenimiento no es tan fácil como memcached – Funky81

+3

Usando la pila LAMP? No quiere decir "usar Linux" ya que no necesita Apache, MySQL o PHP para ejecutar memcached. – GateKiller

6

La velocidad es un poco más complicada de administrar, pero es mucho, mucho más poderosa que memcached. No estoy anti-memcached, no en lo más mínimo, es genial. Pero en el futuro, los nuevos proyectos basados ​​en .NET puros están locos por no aprovechar Velocity, incluso en su actual estado inédito.

3

El problema con las API del cliente es que todavía tiene que tener una instancia de memcached ejecutándose en otra casilla en alguna parte, preferiblemente como ha notado, utilizando la pila LAMP.

No del todo cierto. La pila LAMP (Linux, Apache, MySQL, PHP) no es necesaria para ejecutar Memcached. Actualmente prefiero memcached sobre velocidad hasta que la velocidad está fuera de CTP. He jugado un poco con la velocidad por un tiempo, pero me pareció demasiado difícil de manejar. Sigo todo eso de KISS, ya sabes ... mantenlo simple. Nada más simple que el almacenamiento en caché ... Obtener (clave) ... Poner (clave, valor) ... Destruir (clave).

12

Como Velocity no existía en ese momento, utilicé un puerto de Memcached para Windows para la empresa para la que trabajo, Skiviez. Principalmente solo existe para proporcionar un caché centralizado para múltiples procesos de trabajo en la misma máquina. Ha estado funcionando bien alrededor de 18 meses en un sitio de comercio electrónico que ve un uso modesto (~ 18,500 visitas/día). El cliente que utilicé fue Enyim integrado como un proveedor de caché para iBATIS.NET. Ese cliente parece funcionar bastante bien; Los clientes memcached no son muy complicados para empezar, tampoco.

Si tuviera que volver a hacerlo, probablemente miraría Velocity si estuviera comprometido a permanecer en Windows para mi solución de caché distribuida. Pero está funcionando ahora, así que no voy a tocarlo.

(Aparte: desde entonces, eliminé la mayor parte de la necesidad del caché agregando ciertas columnas Cache* a las tablas clave de la base de datos que se actualizan cada noche por una tarea programada. Esto puso mucho menos esfuerzo en todos los recursos alrededor, desde el golpe inicial en tiempo de CPU al consultar la base de datos a la tensión subsiguiente en la disponibilidad de memoria manteniendo los resultados almacenados en memoria caché almacenados en memcached. También lo hizo mucho más explícito en el código cuando se accede a una versión en caché de los datos una versión calculada sobre la marcha. Estoy seguro de que tiene muchas razones para usar un caché distribuido, pero siempre vale la pena dar un paso atrás y preguntarse si realmente lo necesita o no!)

+0

Velocity ahora es parte de AppFabric – Jon

6

eche un vistazo a SharedCache. es de código abierto, fácil de usar y muy confiable.

sistema de almacenamiento en caché de objetos de memoria distribuida de alto rendimiento, de naturaleza genérica, pero destinado a acelerar las aplicaciones dinámicas web y/o win al aliviar la carga de la base de datos.No se olvide de visitarnos en http://www.sharedcache.com

20

Estoy sorprendido aquí nadie ha de mencionar todavía Redis - Es una de las más rica en características y más rápido (110.000 por segundo de SET en una máquina Linux de nivel de entrada) almacenes de datos clave-valor con soporte de estructura de datos para cadenas, conjuntos, listas, conjuntos ordenados y hashes.

Aunque Windows no es una plataforma oficialmente soportada, se ejecuta perfectamente bajo Windows con todas las pruebas aprobadas. Tengo versiones de Windows (usando Cygwin) disponibles aquí: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

También tiene enlaces de cliente para casi todos los lenguajes de programación actualmente en uso. Mantengo un rico cliente de código abierto de C# Redis con el apoyo de la API nativa de ningún tipo, soporte de transacciones y flujos seguros administradores de clientes de C# POCO están listos para ser dejado caer en cualquier COI en: https://github.com/ServiceStack/ServiceStack.Redis

+0

Parece movido a https://github.com/ServiceStack/ServiceStack.Redis – JensG

+0

@JensG updated thx – mythz

1

Yo sé que soy un poco tarde a la fiesta aquí, y ya hay un montón de buenas respuestas.

Hemos utilizado Membase en Windows Server con gran éxito. Es 100% compatible con Memcached y tiene un buen instalador de GUI y un servidor de configuración web que lo compila. Es extremadamente fácil de administrar.

También hay otras características NoSQL incluidas, que están fuera del alcance de este hilo, pero vale la pena mirar. Tienen una licencia gratuita para desarrollo, pruebas y servidores de producción (limitados).

Membase Downloads

Esa misma página tiene una instalación de Windows para Memcached solamente, si no desea que cualquiera de las características adicionales en Membase.

0

Si está interesado en ejecutar un cliente de Memcached en Windows, existen dos servidores de código abierto adicionales que pueden hacer el trabajo. Ambos implementan el protocolo estándar de servidor memcached y están escritos en Java para que se ejecuten en Windows.