Introducción práctica a
para
Día 2: módulo net, simplecached
Vuestro anfitrión
Alex Fernández
Ingeniero senior en LogTrust
Co-organizador de Node.js Madrid
Índice día 2
- Módulo net.
- Sesión práctica 1: Hola, mundo! (versión net).
- Introducción a bases de datos NoSQL y memcached.
- Qué es simplecached: base de datos simplificada.
- Sesión práctica 2: Crea tu propio simplecached.
Módulo
NET
Módulo net
Recibe peticiones a un socket
Peticiones de bajo nivel
Es la base de http y https
Sesión Práctica 1
Crea un servidor de sockets
Abre una conexión
Devuelve una respuesta
Accede al servidor
Especificación técnica
Servidor de sockets, puerto 1702
Al abrir una conexión, pregunta: "¿Hola?"
Al recibir "hola" responde "mundo" y termina
Cualquier otro mensaje resulta en "ERROR"
Nota técnica: ¡cuidado con los retornos de carro!
Siempre deben ser "\r\n".
Ayuda de net
var server = net.createServer(options, handleConnection)
server.listen(port);
function handleConnection(socket) { … }
socket.on('data', function(data) { … });
socket.end('string');
Good job!
Bonus Track
Mostrar una traza con el tiempo de cada petición
Manejar errores en la conexión
Manejar el cierre del socket
Cerrar el socket tras 10 segundos
Revisar continuaciones y clausuras
Bases de datos NoSQL
memcached
el Zoo NoSQL
Memcached
La base de datos clave-valor en memoria
¿Qué es Memcached?
Creada en 2003 por Brad Fitzpatrick para LiveJournal
NoSQL antes de que NoSQL fuera cool
Clave-valor
Almacenamiento en memoria (sin persistencia)
Y por supuesto, ¡
software libre!
Cacheo por capas
Almacenamiento de valores precalculados
Respuesta casi instantánea (~10 µs)
Uno de los dos grandes inventos en arquitecturas horizontales
(el otro es el gestor de colas)
API básico Memcached
set [key] [flags] [exptime] [bytes]\r\n
[data block]\r\n
\=> STORED
\=> NOT_STORED
almacena un valor en memoria
get [key]* \r\n
\=> VALUE [key] [flags] [bytes]\r\n
[data block]\r\n
END\r\n
extrae uno o más valores por clave
delete [key]
\=> DELETED
\=> NOT_FOUND
borra un valor de memoria
Fuente: protocol.txt
API Completo
get, gets
set, add, replace, append, prepend, cas
delete
incr, decr,
touch
slabs
stats
flush_all, version, quit
Fuente: protocol.txt
Simplecached
Versión didáctica de Memcached
Simplifica el protocolo y los datos
Tres funciones: get, set, delete
El valor puede contener espacios (la clave no)
sin saltos de línea
Sesión de prácticas 2: Simplecached
Crear un servidor de simplecached
Implementar get, set, delete
Conectarse con consola (o PuTTY)
Especificación técnica
Servidor tipo memcached en el puerto 11311
set [key] [value]\r\n
\=> STORED
\=> NOT_STORED
almacena un valor en memoria
get [key]\r\n
\=> VALUE [value]\r\n
\=> END\r\n
extrae un valor por clave
delete [key]\r\n
\=> DELETED
\=> NOT_FOUND
borra un valor de memoria
Cualquier mensaje no conforme debe resultar en
ERROR
.
Ayuda
Eliminar espacios en los extremos
string.trim();
Divide una cadena en un array de trozos
string.split([separator]);
Devuelve un subarray desde una posición
array.slice([begin]);
array.join([separator])
Ayuda+
Un objeto JavaScript es un mapa asociativo por clave
El valor puede contener espacios (la clave no)
Good job!
Bonus Track: Comando Quit
Añadir un comando quit:
quit\r\n
cierra el cliente. Ayuda: cierre de conexión
socket.end();
¡Verifica que tu software sea fácil de modificar!
Crear un cliente con Node.js
Fin del día 2
Introducción práctica a Node.js, día 2
By Alex Fernández
Introducción práctica a Node.js, día 2
Curso de Node.js para Kairós, día 2: módulo net, simplecached. 2018-03-09.
- 2,291