¡Hola comunidad! A continuación podrán disfrutar de la última actualización de desarrollo anunciada por el equipo de BlockTrades. Esta es una traducción del post original.
Ten en cuenta que puedes encontrar terminología técnica, es posible que en la sección de Próximos pasos comprendas la utilidad de todas las actualizaciones realizadas y las que vendrán.
A continuación se presentan algunos aspectos destacados de los problemas de programación relacionados con Hive en los que ha trabajado el equipo de BlockTrades desde mi último informe.
Durante los dos últimos meses, hemos estado probando y mejorando las distintas aplicaciones que componen el stack de nodos de la API de Hive, así como la infraestructura que la soporta.
El gran anuncio es que hoy hemos publicado la versión 1.27.5rc8 (versión candidata 8), que, según las pruebas realizadas hasta ahora, probablemente será reetiquetada esta semana como la versión oficial del stack.
Nodo de la API HAF
Este repositorio contiene scripts docker compose para instalar y gestionar fácilmente un nodo API Hive completo. Es tan fácil de usar que cualquiera que esté familiarizado con la administración básica de sistemas Linux debería ser capaz de configurar y operar su propio nodo API Hive ahora. Una de las mejores características del nuevo conjunto de herramientas es que permite a los operadores de nodos API añadir soporte de manera incremental para nuevas APIs de Hive a medida que se lanzan nuevas aplicaciones HAF.
Los cambios recientes en los scripts incluyen:
- Admite el uso de Drone o Jussi para el proxy inverso y el almacenamiento en caché de las llamadas a la API basadas en JSON. Drone es ahora la opción recomendada.
- El script ZFS Snapshot tiene una opción para "instantáneas públicas" para evitar incluir registros en la instantánea (por ejemplo, cuando se desea suministrar una instantánea a otra persona).
- Corregida la rotación de logs de postgres.
- Caddy ahora anula el manejo de CORS por parte de Jussi/drone.
- Corregidos varios problemas con el script assisted_startup.sh.
- Corregidos varios problemas de configuración encontrados durante las pruebas en nuestro nodo de producción.
- El archivo .env ahora soporta la descarga de imágenes docker pre-construidas desde gitlab, dockerhub, y registry.hive.blog.
- Añadido un punto bind-mount para caddy logging.
- Correcciones en las comprobaciones de verificación del estado de btracker, hafbe y hafah.
- Configuración de haproxy para que registre los fallos de comprobación.
- Corrección del proceso de desinstalación de btracker/hafbe.
- Simplificación de la exposición de puertos internos entre servicios cuando se distribuyen servicios de nodo entre varios servidores.
También hemos actualizado los procesos de CI para hive, HAF, y las diversas aplicaciones HAF para que cada vez que etiquetamos manualmente un repositorio gitlab con una nueva versión o versión candidata, las imágenes docker asociadas construidas por CI también serán etiquetadas con la misma etiqueta, y luego automáticamente empujadas a dockerhub y registry.hive.blog.
Anoche utilicé la herramienta de Análisis de Tráfico jussi para analizar el rendimiento de las llamadas a la API en api.hive.blog (a pesar del nombre, también funciona para analizar el tráfico cuando el nodo está configurado para utilizar Drone). Ahora estamos ejecutando api.hive.blog en un único servidor (antes estaba repartido en 4 servidores que habíamos estado utilizando desde el lanzamiento de Hive) y el tiempo medio de respuesta de las llamadas a la API es aproximadamente el doble que en noviembre del año pasado, a pesar de manejar un 50% más de tráfico que nuestra antigua configuración. Y nuestra carga de CPU también es significativamente menor, por lo que tenemos un margen sustancial para más carga.
Nota: el nuevo hardware de servidor también es algo más rápido que nuestros antiguos servidores (al menos comparado con uno individualmente) y tiene la misma cantidad de almacenamiento en disco que tenían los 4 servidores antiguos (4x2TB = 8TB). Hay menos memoria disponible (el nuevo servidor tiene 128 GB, los 4 servidores antiguos tenían 64 GB cada uno para un total de 256 GB), pero también hemos reducido significativamente los requisitos de memoria con el tiempo, así que esto no es un problema. De hecho, actualmente un nodo API debería ser capaz de manejar bastante tráfico con sólo 64GB de RAM.
HAF (Hive Application Framework)
Hemos solucionado varios problemas que podían provocar que el estado de una aplicación HAF se corrompiera durante el cierre de HAF o de aplicaciones HAF debido a un bloque perdido. La aplicación de seguimiento de saldos era especialmente útil para ayudarnos a identificar estos problemas, ya que un solo bloque de datos omitido solía hacer que fallara en poco tiempo con un error de división por cero. Como parte de estos cambios, también hemos simplificado el uso de la API HAF para crear aplicaciones basadas en HAF.
Hemos mejorado la estabilidad de varias pruebas CI y hemos añadido más pruebas (por ejemplo, pruebas para comprobar el filtrado de operaciones durante las repeticiones HAF). Y hemos encontrado y corregido un error de interacción entre la biblioteca de programación fc utilizada por hived y la herramienta "faketime" que utilizamos en las pruebas de CI que podría dar lugar a bucles ocupados. La corrección de este error redujo significativamente la carga de nuestros ejecutores de pruebas y, lo que es más importante, eliminó varios fallos de pruebas intermitentes que se producían porque las pruebas a veces consumían el 100% de los núcleos de CPU de nuestros ejecutores de pruebas.
Hemos reducido el tamaño de la imagen docker que emplean los nodos de la API HAF de 3120 MB a 611 MB para acelerar las descargas durante la instalación (la versión de 3120 MB contiene todas las herramientas necesarias para el desarrollo de aplicaciones HAF).
API del explorador de bloques HAF (APIs HAF Block Explorer) y de la Herramienta de Seguimiento de Saldos (Balance Tracker)
Hemos actualizado estas aplicaciones para adaptarlas a los cambios introducidos en la API de HAF.
También hemos añadido algunas nuevas llamadas a la API y corregido errores encontrados en las llamadas a la API existentes mientras probábamos la Interfaz de Usuario del Explorador de bloques.
Además hemos añadido encabezados de caché que proporcionan a varnish pistas sobre cuánto tiempo almacenar en caché las respuestas de la API en función del tipo de llamada a la API y de los parámetros de la API especificados.
Drone (sustituto de Jussi)
Hace un tiempo, @deathwing creó y desplegó un programa de proxy inverso llamado Drone que potencialmente podría reemplazar a Jussi. Durante el último par de meses hemos estado trabajando en completar varios cambios necesarios para permitirnos reemplazar a Jussi en el conjunto de herramientas estándar de nodos API. Hicimos un montón de pequeños cambios, pero los principales cambios que hicimos fueron mejoras en el sistema de almacenamiento en caché de Drone, y en este momento su rendimiento de almacenamiento en caché es tan flexible y más eficiente que el de Jussi.
API Hivemind (API de redes sociales)
Hemos mejorado drásticamente el rendimiento de varias peticiones lentas en hivemind que descubrimos mientras probábamos el conjunto de herramientas en un entorno de producción. Estas mejoras también reducen la carga de la base de datos en los nodos de la API. Todavía hay un par de consultas que necesitan mejoras, pero podemos implementar fácilmente más mejoras posteriormente, ya que ninguno de los cambios requerirá una reejecución de hivemind.
Se ha actualizado hivemind para adaptarlo a los cambios de la API HAF. También hemos mejorado el código de instalación y actualización, eliminando parte del código obsoleto, y hemos acelerado el reinicio de hivemind tras un cierre temporal.
Calendario de actualización de los nodos API
Esperamos que los nodos API comiencen a actualizarse a la nueva pila rc8 en las próximas semanas. Ya estamos ejecutando rc8 en api.hive.blog.
A finales de esta semana, subiremos una instantánea ZFS con versiones ya reproducidas de HAF y de las aplicaciones HAF, como hivemind. Esto será especialmente útil para los nodos con procesadores más lentos, pero incluso en servidores rápidos es probable que sea más rápido descargar una instantánea de este tipo que hacer una reproducción local. Sin embargo, los nodos que ya han reproducido rc7 deberían poder actualizarse a rc8 relativamente sin problemas, y ese es el procedimiento recomendado para dichos nodos (sólo hafbe, si se ha instalado previamente, necesitará una reproducción).
Próximos pasos
Como creo que rc8 será la versión oficial del stack, estamos empezando a centrar nuestra atención en futuros planes de desarrollo. Nuestros planes aún no están completamente formados, pero aquí hay una muestra de las cosas que ya estamos considerando:
- Comenzar la siguiente fase de desarrollo del entorno de contratos inteligentes basado en HAF.
- Crear una aplicación HAF para soportar la creación y mantenimiento de cuentas "lite" en la 2ª capa.
- Crear una versión "lite node" de hived que no requiera el almacenamiento local de un block_log completo. Esto también reducirá las necesidades de almacenamiento de las aplicaciones HAF y los nodos de la API Hive.
- Más mejoras en el plugin "sql_serializer" que toma los datos de blockchain de hived y los añade a una base de datos HAF.
- Una revisión largamente esperada del código de Hivemind para alinear mejor su arquitectura de diseño con las prácticas de programación basadas en HAF. Esto debería mejorar tanto el tiempo de reproducción como el rendimiento del servidor API y facilitar el mantenimiento del código.
- Seguir perfeccionando la nueva biblioteca WAX para desarrollar aplicaciones ligeras en Hive.
- Finalizar la nueva billetera electrónica (Clive).
- Finalizar la interfaz gráfica del explorador de bloques basado en HAF.
- Terminar Denser (reemplazo de la aplicación de medios sociales Condenser)
- Terminar de extraer la API de reputación de hivemind y convertirla en una aplicación HAF independiente.
- Actualizar y reorganizar la documentación de casi todo.
Muchas gracias al team BlockTrades por todo el trabajo que realizan por Hive.
✔️¡Mantente al día con la comunidad de Hive Español!
🚀Ingresa a Hive: hive.io
🔗X: hiveblocks_es
🤳Instagram: hiveblocks_es
➡️Telegram: t.me/hiveblockes
👉YouTube: hiveblocks_es/videos
Congratulations @hiveblocks-es! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)
Your next target is to reach 8000 upvotes.
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
Check out our last posts: