Introducción práctica a
para
![](https://s3.amazonaws.com/media-p.slid.es/uploads/7769/images/4638179/kairos.png)
Día 2: módulo net, simplecached
Vuestro anfitrión
![](https://s3.amazonaws.com/media-p.slid.es/uploads/7769/images/3981790/20170712_115159.jpg)
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!
![](https://m.popkey.co/abd3ed/Xgr0g.gif)
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
![](http://25.media.tumblr.com/tumblr_lry99bsh3x1r2wj1vo1_1280.jpg)
memcached
el Zoo NoSQL
Memcached
![](http://boomshadow.net/wp-content/uploads/2012/02/memcached-icon.gif)
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)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/alexfernandez/images/185800/memcached-layers.png)
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,211