Sin categoría

Iniciar Membase con NodeJS

Por suerte, recientemente he encontrado una intersección de tareas que puedo agrupar en un único proyecto rápido y unificado. He aquí un pequeño subconjunto de mi lista de tareas pendientes...

- crear algunas pruebas automatizadas de clústeres Membase/Moxi, con un gran número de nodos
- mostrar cómo la gente puede utilizar los flujos TAP en Membase para un gran bien
- más información sobre la otra gran novedad, nodejs
- blog más

Claramente, las estrellas están alineadas para que yo construya un ejercitador de clúster Membase, en nodejs, y bloguee sobre ello a lo largo del camino. Ciertamente espero aprender mucho acerca de nodejs haciendo esto, y espero impartir algunos conocimientos prácticos a usted acerca de Membase.

Membase permite a los usuarios conectarse utilizando cualquiera de los dos memcached
protocolos: ascii o binario.

Los flujos TAP, sin embargo, son sólo protocolo binario memcached. El primer paso, por tanto, es asegurarse de que nodejs puede soportar comunicación binaria TCP sin procesar, lo que ciertamente puede hacer a través de su protocolo codificaciones binarias del búfer. Sin embargo, nodejs parece carecer de las funciones clásicas ntohl y htonl, necesarias para cualquier manipulación de protocolo binario.

Como un comienzo suave, entonces, aquí está una primera contribución al mundo nodejs, que es una implementación nodejs de las funciones ntohl/htonl...

———————————————————————–
/* Copyright 2010 Membase, Inc.
*
* Licencia Apache, versión 2.0 (la "Licencia");
* no puede utilizar este archivo salvo en cumplimiento de la Licencia.
* Puede obtener una copia de la Licencia en
*
*   https://www.apache.org/licenses/LICENSE-2.0
*
* Salvo que lo exija la legislación aplicable o se acuerde por escrito, el software
* distribuido bajo la Licencia se distribuye "TAL CUAL",
* SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
* Consulte la Licencia para conocer el lenguaje específico que rige los permisos y
* limitaciones en virtud de la Licencia.
*/
exports.htons = function(b, i, v) {
b[i] = (0xff & (v >> 8));
b[i+1] = (0xff & (v));
}
exports.ntohs = function(b, i) {
return ((0xff & b[i + 0]) << 8) |
((0xff & b[i + 1]));
}
exports.ntohsStr = function(s, i) {
return ((0xff & s.charCodeAt(i + 0)) << 8) |
((0xff & s.charCodeAt(i + 1))); }
exports.htonl = function(b, i, v) {
b[i+0] = (0xff & (v >> 24));
b[i+1] = (0xff & (v >> 16));
b[i+2] = (0xff & (v >> 8));
b[i+3] = (0xff & (v));
}
exports.ntohl = function(b, i) {
return ((0xff & b[i + 0]) << 24) |
((0xff & b[i + 1]) << 16) |
((0xff & b[i + 2]) << 8) |
((0xff & b[i + 3]));
}
exports.ntohlStr = function(s, i) {
return ((0xff & s.charCodeAt(i + 0)) << 24) |
((0xff & s.charCodeAt(i + 1)) << 16) |
((0xff & s.charCodeAt(i + 2)) << 8) |
((0xff & s.charCodeAt(i + 3))); }
———————————————————————–
Estas cosas de JavaScript pueden llegar a lugares. Arriba, un parámetro "b" puede ser un Array de octetos o un Buffer nodejs. Un parámetro "s" es una cadena JavaScript. "i" es un índice basado en cero dentro de un Array/Buffer/String.

Próximamente mostraré cómo crear una conexión a Membase en nodejs y codificar y decodificar mensajes de protocolo binario a Membase.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Steve Yen

Steve Yen es cofundador e ingeniero de software sénior de Couchbase. El Sr. Yen es licenciado en Informática por la UC Berkeley. Steve Yen fue cofundador de Kiva Software.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.