Estoy pensando en cómo los grandes intercambios manejan los depósitos de los clientes, parece que hay dos soluciones disponibles, una es usar apis de notificación externa, como la api de notificación de blockchain.info, otra es ejecutar un nodo completo y usar la función walletnotify. Dado que el primer enfoque genera dependencia de un servicio de terceros, tampoco es compatible con la notificación de testnet, que usamos durante el desarrollo, por lo que estoy tratando de ejecutar un nodo completo. Mi pregunta es ¿Qué tan escalable es? Supongamos que hay 10 000 usuarios, y la plataforma debe admitir agregar más direcciones para un usuario, digamos que en promedio cada usuario genera 10 direcciones, eso es 100 000 direcciones para ver. Si agrego esas 100,000 direcciones como observación solo al nodo completo y habilito walletnotify, ¿es una buena manera de manejarlo? ¿Habrá algún problema técnico?
Se ha demostrado que el uso walletnotify
funciona y lo utilizan muchas aplicaciones escalables en la actualidad. Sin embargo, no confiaría completamente en él. walletnotify
El trabajo de es ejecutar un comando de shell cada vez que recibe una transacción de billetera. Esto significa que los datos fluyen entre los procesos, lo que no me hace sentir del todo cómodo como desarrollador. Después de todo, solo se necesita un error para que alguien pierda sus fondos.
Recomendaría no solo usar walletnotify
, sino también verificar X bloques después de Y minutos. Puede realizar un seguimiento de los bloques pasados y, si alguna transacción no fue procesada por walletnotify
, su cronjob de verificación de transacciones recuperará la transacción. Puede usar listsinceblock
el comando RPC y realizar un seguimiento de la altura del bloque cada vez que verifica las transacciones. Podría almacenar transacciones procesadas en una base de datos en algún lugar.
Después de todo, esta es una aplicación financiera, por lo que creo que una verificación de respaldo es vital.
Probablemente no haya problemas técnicos y depende mucho de su servidor.
si su servidor no tiene problemas, no hay de qué preocuparse.
Intenté enviar 1000 solicitudes al servidor bitcoin-core al mismo tiempo con un servidor básico y todo funcionó muy bien.
También puede obtener más de un servidor central de bitcoin y tratar las solicitudes a estos servidores.
Dado que el tiempo necesario para procesar una solicitud determinada será superior a cero milisegundos, llegará un punto en el que suficientes solicitudes darán como resultado que la CPU alcance el 100 % de utilización, o puede que llegue primero a los límites de E/S o de red, pero en cualquier caso cuando encuentre un cuello de botella, lo que deberá hacer es dividir la carga de trabajo entre varias máquinas utilizando algún tipo de esquema de equilibrio de carga.
flauta
Adán