El explorador de Witnet: ¡guarda todas las cosas en caché! por drcpu Blog de la Fundación Witnet junio de 2022

Es hora de otro lanzamiento del explorador Witnet. La mejora más significativa de esta versión es que agrega el almacenamiento en caché de solicitudes. Mejora el tiempo de respuesta promedio para el usuario final y ofrece una experiencia general más fluida al usar el explorador.

En la versión anterior del explorador, la mayoría de las solicitudes de los usuarios no se almacenaban en caché o solo se almacenaban en caché después de que se solicitaba una vez. Esto conduce a tiempos de respuesta bastante lentos para solicitudes más pesadas, como obtener un informe de solicitud de datos. Esta versión mejora este comportamiento al agregar el almacenamiento en caché de informes de solicitud de datos por adelantado. Esencialmente, el explorador ahora buscará nuevas solicitudes de datos, (re)construirá el informe en cada bloque y lo guardará en una instancia de Memcached. Al hacerlo, el tiempo de respuesta del explorador mejora significativamente, como lo demuestra el siguiente gráfico.

Anteriormente, obtener el resultado de una solicitud de datos tomaba en promedio 1,28 s. En la nueva versión, obtener un informe de solicitud de datos almacenados en caché tarda solo 0,14 s en promedio. ¡Esta es una mejora de 8.9x en el tiempo de respuesta!

Por supuesto, obtener un informe de solicitud de datos que no se ha almacenado en caché seguirá siendo bastante lento. Actualmente, estoy almacenando en caché cada informe de solicitud de datos que tiene menos de 3 meses.

Junto a los informes de solicitud de datos, el explorador también almacenará en caché transacciones y bloques de transferencia de valor, así como la página de inicio, reputación y saldo.

Por supuesto, esta versión también contiene una serie de correcciones de errores (visuales). Algunos de estos fueron reportados por otros usuarios y en el contexto del Programa de Desarrolladores de la Comunidad de Witnet, fueron recompensados ​​por esto. [1], [2], [3].

El error más divertido que encontré en los últimos meses fue un bloqueo en el backend del explorador porque alguien envió una transacción de transferencia de valor con una tarifa de 1900 WIT. Debido a la magnitud de esta tarifa, la prioridad (tarifa de transacción dividida por el peso de la transacción) ya no encajaba en un tipo de número entero.

Para poder almacenar en caché todos estos datos, tuve que cambiarme a un servidor más potente. A partir de ahora, el explorador se ejecuta en hardware dedicado. Esto debería permitirle escalar bien en el futuro.

Algunos de los componentes del explorador, como las búsquedas de direcciones, aún no se almacenan en caché, ya que no son estáticos. Almacenarlos en caché requiere bastantes recursos, ya que potencialmente necesitan actualizarse en cada bloque. El plan es explorar cómo se puede mejorar esto.

Como siempre, si encuentra un error, envíeme un mensaje en Telegram o Discord y puede ser elegible para una recompensa.