Eșec de importare XML Tourplan pentru cataloagele de furnizori mari și canalul de import în bucăți care a prevenit expirările
Publicat: 2025-11-25În lumea rapidă a tehnologiei de călătorie, unde datele de la sute de furnizori trebuie să fie ingerate și actualizate în mod constant, performanța și fiabilitatea devin critice pentru misiune. Multe companii se bazează pe Tourplan, un sistem lider de management al călătoriilor, pentru a gestiona conținutul furnizorilor prin funcționalitățile de import XML. Cu toate acestea, pe măsură ce dimensiunea cataloagelor furnizorilor a crescut – ajungând uneori la sute de mii de produse – procesul tradițional de import XML a început să eșueze. Acest blocaj i-a determinat pe dezvoltatori să implementeze o conductă de import mai inteligentă, fragmentată, pentru a menține stabilitatea și performanța sistemului.
TL;DR
La importarea cataloagelor mari de furnizori în Tourplan prin XML, multe companii s-au confruntat cu eșecuri repetate și erori de timeout. Problema a provenit din incapacitatea sistemului de a gestiona încărcături utile XML masive într-o singură tranzacție. Introducerea unui canal de import în bucăți, în care datele sunt împărțite în părți mai mici, gestionabile, a permis procesarea cu succes fără expirări. Această soluție a îmbunătățit atât fiabilitatea, cât și scalabilitatea pentru utilizatorii Tourplan care manipulează volume mari de date despre furnizori.
Provocarea cu importurile XML la scară largă
În esență, funcția de import de date XML din Tourplan a fost concepută pentru a facilita automatizarea ingerării conținutului furnizorilor. Furnizorii ar genera fișiere XML care conțin seturi de date masive - hoteluri, excursii, structuri de prețuri, reguli sezoniere, calendare de disponibilitate și multe altele. Aceste fișiere sunt esențiale pentru companiile de turism pentru a menține inventarele la zi.
Cu toate acestea, multe echipe au început să întâmpine o problemă critică: pe măsură ce dimensiunea acestor fișiere XML a crescut, procesul de import a început să eșueze din cauza timeout-urilor, presiunii memoriei pe servere sau blocărilor directe. Problema rădăcină s-a rezumat la câteva limitări cheie:
- Importuri cu un singur thread: importul XML al Tourplan a procesat întregul fișier dintr-o singură mișcare, consumând resurse vaste.
- Fără urmărire a progresului: odată ce procesul de import a început, nu a existat nicio modalitate de a întrerupe, de a relua sau de a vă recupera cu grație de la eșec.
- Lipsa mecanismelor de loturi: canalul de import presupunea că toate datele ar putea fi analizate și validate în memorie.
Rezultatul? Importuri eșuate, seturi de date corupte și un stoc de actualizări ale furnizorilor. Pur și simplu creșterea resurselor serverului nu a fost o soluție viabilă pe termen lung.
Simptome care au indicat un gât de sticlă
Au apărut câteva simptome clare care au indicat un blocaj sistemic în conducta de import a Tourplan:
- Erori de expirare: lucrările de import ar rula ore întregi doar pentru a fi terminate de temporizatoarele de supraveghere ale serverului.
- Ingestie parțială de date: echipele au observat că, în timp ce unele înregistrări au fost actualizate, altele au rămas învechite, ceea ce a dus la prețuri și disponibilitate inconsecvente.
- Tichete de asistență crescute: utilizatorii finali au început să observe anomalii în itinerarii și cotații generate din cataloage învechite.
Cu mizele crescând și dimensiunile catalogului crescând de la an la an, trebuia dezvoltată o metodă mai scalabilă și mai rezistentă.
Soluția: o conductă de import fragmentată
Regândirea arhitecturii de import a condus la o realizare critică – dacă datele ar putea fi procesate în etape sau în bucăți , riscul de timeout-uri și blocări ale performanței ar putea fi atenuat semnificativ. Această idee a dat naștere noii conducte de import în bucăți.
Ce este Chunking? În contextul importurilor de date XML, fragmentarea se referă la împărțirea fișierelor mari în segmente mai mici, separate logic, care sunt procesate pe rând. Fiecare segment ar putea reprezenta un anumit tip de date (hoteluri, tarife, calendare) sau chiar felii de tipuri de date identice (de exemplu, 5.000 de obiecte hotel per bucată).

Conducta de import fragmentat a urmat câteva bune practici:
- Etapa de preprocesare: Fișierul XML original este mai întâi analizat și împărțit folosind un parser care identifică punctele de întrerupere logice, cum ar fi etichetele de închidere sau grupările de obiecte predefinite.
- Procesare pe bază de coadă: Fiecare bucată rezultată este adăugată la o coadă de joburi și procesată asincron pentru a evita supraîncărcarea memoriei sistemului.
- Puncte de control sigure: Fiecare bucată transportă metadate pentru auditare și poate fi reîncercată independent în caz de eșec.
- Urmărirea progresului și înregistrarea în jurnal: au fost implementate tablouri de bord pentru a urmări succesul/eșecul fiecărei părți pentru o transparență deplină.
Detalii tehnice de implementare
Să mărim cum a fost realizat acest lucru din punct de vedere tehnic.

1. Mecanismul de blocare
Folosind un parser de streaming XML (cum ar fi SAX sau StAX în Java sau lxml în Python), fișierul a fost citit rând cu rând în loc să fie încărcat în memorie dintr-o dată. Nodurile logice (de exemplu, <Hotel>, <Excursion>) au fost extrase în fișiere separate sau blocuri de memorie ca documente independente.
2. Coadă de lucru asincronă
O coadă de joburi, alimentată de instrumente precum RabbitMQ sau AWS SQS, a gestionat trimiterea joburilor fragmentate. Mai mulți lucrători ar putea rula simultan pentru a procesa bucăți în diferite nuclee CPU sau noduri de cluster, îmbunătățind drastic performanța.
3. Cadrul de tratare a erorilor
Dacă o bucată a eșuat, a fost înregistrată separat și ar putea fi reprocesată fără a reface întregul import. Acest lucru a redus riscul și a scurtat semnificativ timpul de recuperare.

Beneficii observate în producție
După lansarea sistemului de import fragmentat, mai multe companii de turism au observat îmbunătățiri semnificative:
- Reducere cu 90% a eșecurilor de import: importurile care anterior au eșuat din cauza expirării timpului au fost finalizate acum fără probleme.
- Recuperare mai rapidă: bucățile eșuate ar putea fi reîncercate instantaneu, permițând o corecție mai agilă a erorilor.
- Încărcare redusă a serverului: deoarece bucățile erau mai mici și procesate asincron, utilizarea memoriei și a procesorului s-a stabilizat.
- Transparență: jurnalele de import și tablourile de bord au oferit vizibilitate clară asupra datelor care au fost procesate și care nu.
Această abordare sa dovedit deosebit de eficientă în perioadele de vârf de călătorie, când actualizările furnizorilor sunt frecvente și necesită timp. Echipele ar putea programa importuri pe noapte sau pe oră fără teama de a distruge sistemele sau de a genera itinerarii corupte.
Lecții învățate
Această experiență a oferit câteva lecții critice pentru procesele ETL (Extract, Transform, Load) în platformele moderne de călătorie:
- Scala contează: ceea ce funcționează pentru mii de înregistrări se poate sparge la milioane - sistemele trebuie să evolueze odată cu volumul de date.
- Observabilitatea este cheia: jurnalele, valorile și tablourile de bord ar trebui să fie esențiale pentru orice sistem de import automat.
- Proiectare pentru eșec: totul ar trebui să fie reîncercat și nicio operațiune nu ar trebui să presupună vreodată o „funcționare perfectă”.
Îmbunătățiri viitoare și pași următori
Deși conducta fragmentată a schimbat jocul, inovația nu s-a oprit aici. Mai multe companii explorează acum:
- Integrari în timp real cu API-ul furnizorului: ocolirea completă a depozitelor de fișiere XML prin sincronizarea datelor prin API-urile REST.
- Validarea datelor la margine: implementarea validării pre-import folosind XSD-uri și JSON-Schema pentru a reduce scenariile de gunoi.
- Infrastructură de scalare automată: Folosind Kubernetes sau cadre fără server pentru a scala în mod dinamic numărul de lucrători importați, în funcție de volumul lucrărilor.
Concluzie
Datele sunt forța vitală a oricărei companii de turism moderne. Pe măsură ce ecosistemele furnizorilor devin mai complexe, sisteme precum Tourplan trebuie să evolueze pentru a face față actualizărilor din ce în ce mai mari și mai frecvente. Trecerea la o conductă de import fragmentată nu numai că a rezolvat problema timeout-urilor de import XML, dar a deschis și ușa către un ecosistem de gestionare a datelor mai robust, eficient și scalabil.
Companiile care au îmbrățișat această arhitectură procesează acum importurile mai rapid, cu o precizie mai mare și un timp de funcționare mai mare, transformând un fost punct dificil într-un avantaj competitiv.
