Skip to content

gRPC based console Search Engine with Redis cache for search optimization

Notifications You must be signed in to change notification settings

frankbydefault/grpc-SearchEngine

Repository files navigation

GoGRPC Searcher

Este proyecto utiliza como motor de base de datos MySQL.
Para el almacenamiento de cache se utiliza Redis, en un contenedor Docker con la imagen redis:6.2-alpine3.16.
Para la comunicación entre los servicios se utiliza gRPC, con su implementación en Go.
Para la lectura de la información y su posterior almacenamiento en la base de datos se utiliza Python, con la librería pyDAL.
Para la comunicación con Redis desde Go se utilizó go-redis y para la comunicación con MySQL desde Go se utilizó go-sql-driver.

Preparando el servicio

  • Para crear la base de datos, esto se hará con el motor MySQL.
create database search_engine;  
create user searchengine@localhost identified by 'S34rch3r_3ng1n3';  
grant all privileges on search_engine.* to searchengine@localhost;  

Es posible utilizar el dump de la base de datos searches.db o utilizar el script crawler.py en databases/ para llenar la base de datos.

  • Compilar protoc
export PATH="$PATH:$(go env GOPATH)/bin"
protoc --go_out=. --go_opt=paths=source_relative     --go-grpc_out=. --go-grpc_opt=paths=source_relative     protos/searchEng.proto
  • Iniciar contenedores del cluster de Redis
chmod +x ./run_cluster.sh
sudo ./run_cluster.sh
  • Crear el cluster en los contenedores
sudo docker exec -it myredis-0 sh
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

Si se solicita confirmación, escribir yes

  • Para detener las instancias de Redis
chmod +x ./stop_cluster.sh
sudo ./stop_cluster.sh

Iniciando cliente y servidor

  • Iniciar servidor
go run server/main.go
  • Iniciar cliente
go run client/main.go

Usando el cliente

Una vez se ejecuta el cliente, este solicitará un término de búsqueda.
El cliente buscará en el cache de Redis, si no se encuentra, se buscará en la base de datos y se almacenará en el cache.

Analizando cache

Para analizar el cache basta con utilizar el comando

redis-cli -c -p 7000

Y luego utilizar get seguido de la llave para ver dónde se encuentra el valor en el cluster y obtener el valor o set para agregar un valor al cache, indicando en qué posición del cluster se encuentra.

About

gRPC based console Search Engine with Redis cache for search optimization

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published