Conclusiones principales
Nuestra migración a Binance Ledger tenía como objetivo resolver el problema de las cuentas activas inherente a nuestro antiguo servidor de bases de datos relacionales.
Un intercambio de cifrado opera las 24 horas del día, los 7 días de la semana, los 365 días del año, sin una ventana de mantenimiento que aprovechar, a diferencia de un intercambio normal, que tiene horas de descanso diarias.
La migración a un nuevo Binance Ledger tenía que realizarse en línea, mantener los activos de los usuarios SAFU y no generar ningún impacto comercial en absoluto, por lo que la experiencia para los usuarios finales se mantuvo fluida.
Elegimos una estrategia de migración gradual, cuenta por cuenta, en lugar de una estrategia transversal y de una sola vez, como la que emplea la herramienta gh-ost.
Obtenga más información sobre nuestra migración a Binance Ledger y las herramientas y técnicas utilizadas durante todo el proceso.
Binance Ledger respalda nuestras operaciones técnicas y procesa millones de transacciones diarias en una amplia base de usuarios. Puede obtener más información sobre el sistema, sus objetivos y sus desafíos en nuestro blog Cómo Binance Ledger impulsa su experiencia en Binance. Nuestro proceso de migración de la versión antigua a la nueva enfrentó un desafío típico: ¿cómo podríamos actualizar el motor sobre la marcha mientras el avión todavía está en vuelo? Tuvimos que migrar los activos de nuestros usuarios y mantener los fondos SAFU era nuestra principal prioridad.
Los principales desafíos de la migración de Binance
Se tuvo que abordar la siguiente lista de desafíos para alcanzar nuestras metas establecidas:
Garantizar la total corrección del nuevo libro mayor.
Ser capaz de detectar cualquier problema de fondos y solucionarlo de manera oportuna y precisa.
No incurrir en tiempo de inactividad para aguas arriba
Comparando nuestra misión de migración con la base de datos en línea DDL
Antes de profundizar en los detalles de nuestra solución, veamos el problema común de realizar un DDL (lenguaje de definición de datos) en línea para una tabla grande. ¿Qué es exactamente DDL? Bueno, imagina una tabla con cientos de millones de filas a la que necesitamos agregar otra columna. Queremos hacer esto en línea sin interrumpir el negocio.
La herramienta gh-ost se usa ampliamente para resolver este problema y puedes ver cómo funciona en el siguiente diagrama.
El proceso consta esencialmente de dos fases:
La fase de sincronización, que continúa hasta que la nueva tabla es completamente idéntica a la tabla original. Hay dos tipos de datos que se sincronizarán:
Los datos existentes
Datos incrementales (nuevos datos generados a partir de la tabla original durante el proceso de migración en curso)
La fase de transición cambia la tabla original por la nueva sin interrumpir ninguna transacción en curso.
Dónde diferían los problemas de Binance Ledger
A pesar de algunas similitudes, Binance Ledger tuvo algunos desafíos inherentemente únicos en nuestra misión de migración en línea.
En primer lugar, los sistemas backend de Binance operan en un entorno distribuido, mientras que la base de datos en línea DDL se encuentra en un entorno monolítico. En segundo lugar, no podemos darnos el lujo de adoptar el enfoque de transición total porque los datos eran activos de nuestros usuarios. Por último, debemos asegurarnos de que todos los servicios relevantes funcionen en conjunto antes de comenzar a realizar una migración masiva.
Como en el ejemplo anterior de DDL en línea, también hubo dos fases en nuestra migración:
La fase de sincronización, donde se creó especialmente un servicio de replicación dedicado para sincronizar los saldos del libro mayor antiguo con el nuevo libro mayor.
La fase de transición cuenta por cuenta
Enfoques basados en fases
La tarea era grande y, como dicen, Roma no se construyó en un día. El enfoque de dividir y conquistar a menudo funciona a las mil maravillas frente a un dominio problemático grande y complejo.
Fase 1: Replicación
El porque
Podemos resumir nuestro proceso de pensamiento aquí en dos puntos principales:
Modelamos Binance Ledger como un nuevo esclavo que se une al clúster MySQL existente, que impulsa el sistema de contabilidad actual. Al aprovechar las técnicas de replicación, podríamos mantener los saldos de los usuarios completamente sincronizados de forma asincrónica.
Luego podríamos enrutar el tráfico de producción palabra por palabra a Binance Ledger para validar su corrección y solidez. Incluso si las cosas van mal en esta fase, no habrá ningún impacto para nosotros ni para nuestros usuarios.
El qué
A continuación, ilustramos el proceso de replicación general. El camino crítico al que prestar atención es:
Transferir → Libro mayor → Replicador de Binance Ledger → Binance Ledger
El como
Dividimos el proceso de replicación en dos pasos separados:
Descargué una instantánea de la base de datos del libro mayor y luego la importé al libro mayor de Binance
Se replicó el registro bin de la base de datos del libro mayor después del momento en que se volcó la instantánea.
Con el tiempo, los datos de los saldos y los registros de saldos se mantendrán completamente sincronizados entre el libro mayor antiguo y el libro mayor de Binance, que puede validarse aún más mediante el módulo de conciliación completo.
el cuando
Binance Ledger entró en funcionamiento a principios de agosto de 2022. Luego, iniciamos el proceso de replicación, que duró hasta mediados de noviembre de 2022. Este proceso fue un período importante para nosotros, ya que era necesario validar al 100% la exactitud del nuevo sistema de contabilidad. Este paso no se puede omitir antes de continuar con la siguiente fase de migración.
Al final, no encontramos problemas y llevamos a cabo varias rutinas de liberación para sentirnos más cómodos con la situación. El proceso de tres meses no fue particularmente rápido, pero fue necesario para nuestro objetivo SAFU.
Fase 2: migración en línea
El porque
Para migrar cientos de millones de cuentas, creamos un trabajo de migración personalizado.
El qué
A continuación, describimos el flujo de migración principal para una cuenta:
Aquí hay algunas notas clave a tener en cuenta:
El sistema de cuentas mantiene la asignación de propiedad para cada cuenta.
Cuenta A → libro mayor
Cuenta B → Libro mayor de Binance
Cuenta C → prohibida
Antes de migrar una cuenta, si existiera alguna transacción simultánea pendiente, se omitiría para reducir el impacto comercial.
Cambiamos el mapeo de propiedad de libro mayor a prohibido, impidiendo cualquier actualización adicional del saldo, haciéndolo inmutable.
Conciliamos los saldos entre el libro mayor antiguo y el libro mayor de Binance.
Cambiamos el mapeo de propiedad de prohibido a Binance Ledger, lo que permite que futuras actualizaciones de saldo se envíen directamente a Binance Ledger.
Según nuestra métrica de rendimiento, tomó un promedio de 150 ms desde el paso 3 al paso 5. En teoría, los usuarios no pueden realizar ninguna transacción durante este período de migración de 150 ms. Resultó que no hubo ninguna transacción afectada.
La ejecución
En Binance, defendemos el principio de "buena ejecución sobre una planificación meticulosa". Una ejecución sólida es vital para nuestro éxito y la seguridad de los fondos es siempre nuestra principal prioridad. Adoptamos una estrategia de migración gradual durante un período de tres semanas para detectar los problemas lo antes posible, lo que a su vez ayudó a reducir la magnitud del impacto negativo.
El proceso de reconciliación
La conciliación es enormemente importante para detectar posibles anomalías del equilibrio a tiempo desde una perspectiva imparcial. Podemos llevar a cabo el proceso casi en tiempo real para tomar medidas inmediatas antes de que las cosas empeoren. Se desarrollan dos tipos de módulos de conciliación específicamente para el proceso de migración en línea: en tiempo real y completo.
Tiempo real
El proceso de conciliación basado en el nivel de transacción está diseñado para detectar cualquier problema de fondos en tiempo real.
Lleno
Podemos realizar una conciliación completa periódicamente en función de las instantáneas sincronizadas con el almacén de datos. Este proceso garantiza que todos los saldos sean iguales entre el libro mayor antiguo y el libro mayor de Binance.
Por ejemplo, digamos que tenemos 10 millones de usuarios que aún residen en el antiguo libro mayor. Podemos utilizar esta conciliación completa para verificar que los saldos y los registros de saldos sean los mismos entre el libro mayor antiguo y el libro mayor de Binance.
Concluyendo el proceso de migración
En pocas palabras, la misión se logró 1) utilizando técnicas de replicación para validar la exactitud del nuevo Binance Ledger 2) implementando una estrategia de migración cuenta por cuenta para actualizar el motor de manera lenta, segura pero segura.
Creemos que el paradigma de migración en línea antes mencionado se puede reutilizar en tareas similares. Si los procesos y temas discutidos han despertado su interés, ¿por qué no considera unirse al equipo? Siempre buscamos personas dedicadas con nuevas perspectivas sobre nuestros desafíos diarios en Binance.
Referencias
Cómo Binance Ledger impulsa tu experiencia en Binance
Herramienta de migración de esquemas en línea de GitHub para MySQL
Otras lecturas
Uso de MLOps para crear un canal de aprendizaje automático de un extremo a otro en tiempo real | Blog de Binance
¿Es Binance el lugar adecuado para usted? Razones para no unirse a Binance | Blog de Binance
