Simpleton es una solución de registro de UDP a base de datos muy simple que simplemente acepta paquetes UDP y los almacena en una base de datos SQLite3. De forma predeterminada, los almacena en simpleton.db
en el directorio actual, pero puede anular esto con opciones de línea de comando.
Esto no es muy útil para nada más que pruebas realmente simples, pero puedes ampliarlo.
Para compilar Simpleton, simplemente ejecute make
y el binario aparecerá en el directorio bin
. De forma predeterminada, se compilará para OSX.
make
Para compilar para otras plataformas, edite las variables GOOS
y GOARCH
en el Makefile
. También puedes ingresar estos parámetros en la línea de comando cuando ejecutas make
, así.
GOOS=linux GOARCH=amd64 make
Puede encontrar los valores de estas variables para diferentes plataformas en syslist.go, pero los valores más comunes son:
SO | GOOS | GOARCH |
---|---|---|
OSX | darvin | amd64 |
linux | Linux | amd64 |
ventanas | ventanas | amd64 |
Por supuesto, puede realizar una compilación cruzada (por ejemplo, compilar binarios de Linux en máquinas OSX) simplemente configurando la combinación correcta de GOOS y GOARCH, aunque en Windows podría tener problemas. (No he creado esto para Windows).
El binario aparecerá en bin
, por lo que puedes ejecutarlo desde el directorio principal con:
bin/simpleton
Para enumerar las opciones de la línea de comando, use el indicador -h
:
bin/simpleton -h
A continuación se muestra un ejemplo de ejecución de Simpleton con opciones para que escuche una interfaz particular (10.1.0.3 en el ejemplo) y un puerto (7788) y almacene la base de datos en /tmp/simpleton.db
:
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
Si desea hurgar en la base de datos resultante, puede instalar SQLite3 en su máquina e inspeccionar la base de datos usando el comando sqlite3
. Para abrir la base de datos en el ejemplo anterior simplemente ejecute:
sqlite3 /tmp/simpleton.db
Escriba .schema
para ver el esquema de base de datos muy simple. Ahora puede realizar declaraciones SQL sobre los datos.
Nota: No estoy del todo seguro acerca de la simultaneidad de SQLite3, por lo que no usaría la base de datos como punto de integración (nunca debería hacerlo).
Esta es también la razón por la que el código tiene un bloqueo mutex alrededor de los accesos a la base de datos. El código se tomó de un proyecto que tiene múltiples rutinas que acceden a la base de datos. Este programa no tiene eso, pero dejé el bloqueo mutex solo como recordatorio.
Para usos de producción, debe utilizar una base de datos PostgreSQL o similar, que esté diseñada para la concurrencia. Pero para experimentos pequeños y cuando tienes una concurrencia limitada, SQLite3 es una pequeña bestia sorprendentemente capaz.
Tenga en cuenta que la interfaz HTTP no tiene mecanismos de autenticación ni de seguridad, así que no la utilice para nada más que realizar pruebas. La dirección predeterminada de la interfaz web es:
http://localhost:8008/
La interfaz web es bastante sencilla. Tienes dos URL que acceden a los datos:
/data
/data/{id}
El primero devuelve una matriz JSON, el segundo solo devuelve la carga útil de la entrada de datos proporcionada por ID. La ruta /data
se limitará solo a las 20 entradas más nuevas de la base de datos, pero puede recorrer la base de datos configurando los parámetros de URL offset
y limit
:
/data?offset=10&limit=10
Simpleton admite tener un directorio con archivos estáticos para que pueda crear algunas páginas HTML con enlaces útiles al contenido o quizás alojar aplicaciones JS-frontend.
Consulte la ayuda de la línea de comandos para ver los parámetros con los que puede jugar.