All File Converter ծառայությունը նախագծված է որպես մասշտաբավորվող բաշխված SaaS համակարգ՝ հիմնված Python 3.12 ժամանակակից ասինխրոն ստեկի վրա։ Ճարտարապետությունը բաժանված է անկախ շերտերի՝ ցանցային իրադարձությունների ընդունում, առաջադրանքների օրկեստրրավորում, ծանր բինար գործընթացների մեկուսացված կատարում և վերլուծական կոնտուր:
1. Ընդհանուր տեխնոլոգիական ստեկ և համակարգային ճարտարապետություն
Պլատֆորմի հիմքում ընկած են բարձր թողունակության (high-throughput), հիշողության նվազագույն սպառման և խափանումներից պաշտպանության սկզբունքները.
- Telegram Bot Framework:
Aiogram 3.13, որն աշխատում է Webhook ռեժիմում՝ գաղտնի թոքենների վավերացմամբ և հաղորդագրությունների կյանքի ցիկլի հարմարեցված ֆիլտրերով: - Վեբ-շլյուզ և REST API:
FastAPI՝ Uvicorn ASGI սերվերի հիման վրա՝ բինար ֆայլերի ասինխրոն հոսքային տրամադրմամբ (FileResponse) և ֆոնային մաքրմամբBackgroundTasks-ի միջոցով: - Հերթերի բրոքեր և քեշ:
Redis 7(Celery առաջադրանքների կառավարում, մրցավազքի վիճակի արգելափակումներ, բրութֆորսից պաշտպանություն, սեանսների քեշավորում): - Ֆոնային կատարող (Task Queue):
Celery 5.4՝ աշխատողների (workers) առանձնացված փուլովconverter_workerմեկուսացված կոնտեյներում: - Տվյալների բազա:
PostgreSQL 16՝SQLAlchemy 2.0 (asyncpg)ORM շերտով, մշտական միացումների փուլով (20+10 overflow) և վթարային տարանցումների ավտոկրկնությամբ (@db_retry): - Ցանցային կոնտուր: Թունելավորում
Cloudflare Zero Trust-ի միջոցով՝ Middleware-ի միջոցով սերվերին ուղղակի IP մուտքի արգելափակմամբ:
2. Ասինխրոն հերթեր և ծանր հաշվարկների մեկուսացում (Celery + Redis)
Մեդիաֆայլերի և գրասենյակային փաթեթների փոխարկումը ստեղծում է պիկային ծանրաբեռնվածություն CPU-ի և RAM-ի վրա: Որպեսզի Telegram-ում մուտքային հաղորդագրությունների մշակման գործընթացը չարգելափակվի ծանր գործողությունների ժամանակ, իրականացվել է խիստ մեկուսացում.
- Առաջադրանքների պատվիրակում Redis-ին: Ձևաչափն ընտրելիս Telegram-մշակիչը գրանցում է առաջադրանքը ՏԲ-ում
PROCESSINGկարգավիճակով և առաջադրանքը դնումtasks.execute_conversionհերթում Celery-ի միջոցով: - Աշխատողի մեկուսացված կոնտեյներ: Փոխարկման գործիքների կատարումը տեղի է ունենում առանձին Linux կոնտեյներում՝ պրոցեսորային ժամանակի և հիշողության սեփական սահմանաչափով:
- Կախվածությունների վերահսկում և թայմաուտներ: Արտաքին գործիքների կանչերը ներառված են ասինխրոն համատեքստում՝ ժամանակի խիստ վերահսկողությամբ (
conversion_timeout_sec = 180): Սահմանաչափը գերազանցելիս գործընթացը հարկադրաբար ավարտվում էproc.kill()-ի միջոցով՝ ազատելով ռեսուրսները: - Դիմացկուն Fallback: Redis բրոքերի ժամանակավոր անհասանելիության դեպքում առաջադրանքն ավտոմատ կերպով որսացվում է տեղային ասինխրոն կարգավարի կողմից և կատարվում ուղղակիորեն՝ առանց օգտատիրոջ համար խափանումների:
3. Մասնագիտացված փոխարկման շարժիչների փոխակերպման հոսքագիծ
Տվյալների յուրաքանչյուր տեսակի համար ներգրավվում են նեղ մասնագիտացված նատիվ գործիքներ և գրադարաններ.
- Փաստաթղթեր և աղյուսակներ (LibreOffice): Անգլուխ գրասենյակային փաթեթ (
soffice --headless) DOCX, XLSX, PPTX, RTF, ODT PDF կամ տեքստային ֆայլերի ճշգրիտ ռենդերինգի համար: - Հոսքային աուդիո և վիդեո (FFmpeg): Վիդեոկոդեկների (H.264), աուդիոկոդեկների (MP3, OGG Opus) բազմահոսքային վերակոդավորում, ձայնային ուղիների դուրսբերում, GIF-ի գեներացում (Lanczos ֆիլտր) և Telegram տեսահաղորդագրությունների քառակուսի կտրվածք (1:1):
- Բարձր արագությամբ PDF մշակում (Poppler Utils):
pdftotext(ձևաչափված տեքստի ակնթարթային դուրսբերում UTF-8-ում) ևpdftoppmգործիքներ (PDF-ի էջ առ էջ ռենդերինգ ռաստերային պատկերների LibreOffice-ի հավելյալ ծախսերից առանց): - Օպտիկական ճանաչում (Tesseract OCR): Տպագիր տեքստի նευրոնային ցանցի միջոցով դուրսբերում սկանավորված նյութերից և լուսանկարներից 40+ լեզուներով:
- Ռաստերային և վեկտորային գրաֆիկա:
Pillowգրադարաններ (ներառյալ HEIC և AVIF ձևաչափերի աջակցությունը),CairoSVGվեկտորային պատկերների համար ևlottieTelegram անիմացիոն կպչուն պիտակների համար (.TGS): - Գրքեր, ենթագրեր և տառատեսակներ:
Calibreշարժիչ (ebook-convert),pysubs2ենթագրերի վերլուծիչ (SRT, VTT, ASS, SSA) ևfonttoolsտառատեսակների կոմպիլյատոր (Brotli սեղմում WOF2-ում):
4. Ռեսուրսների կանխարգելիչ պաշտպանություն (System Guard)
Հիշողության անբավարարության պատճառով սերվերի անկումից պաշտպանվելու համար (OOM Killer) ներդրվել է System Guard կանխարգելիչ ախտորոշման ծառայությունը: Նախքան ֆայլը մշակման ընդունելը, համակարգը ստուգում է հոսթի հիմնական չափանիշները.
- Ազատ օպերատիվ հիշողություն (RAM): Նվազագույնը 500 ՄԲ ազատ ծավալ (
guard_min_free_ram_mb): - Տեղ սկավառակի վրա: Նվազագույնը 2 ԳԲ ազատ տարածք
/tmpգրացուցակում (guard_min_free_disk_mb): - Առաջադրանքների հերթ: Celery հերթի երկարության սահմանափակում (ոչ ավելի, քան 20 սպասվող առաջադրանք):
Սահմանաչափերը գերազանցելիս ծառայությունը ժամանակավորապես միացնում է պաշտպանությունը (HTTP 503 / հաղորդագրություն չաթում)՝ կանխելով սերվերի գերբեռնվածությունը և Telegram-ում անմիջապես ազդանշան ուղարկելով ադմինիստրատորներին:
5. Ֆայլերի կյանքի ցիկլ և անվտանգություն (GDPR)
Ճարտարապետությունը նախագծված է Zero-Data-Footprint մոդելով.
- Օգտատերերի ֆայլերըբեռնվում են
tmp/conversions/պաշտպանված հատոր՝ առաջադրանքների նույնացուցիչների վրա հիմնված եզակի նախածանցներով: - Ֆայլերը մնում են հասանելի խստորեն աշխատանքային սեանսի շրջանակներում՝ ոչ ավելի, քան 15 րոպե (900 վայրկյան):
- Ավտոմատ աղբահավաքը ջնջում է սկզբնական և պատրաստի ֆայլերը չաթում հաջող ուղարկումը հաստատելուց անմիջապես հետո կամ սեանսի թայմաուտի սպառման դեպքում:
- PostgreSQL տվյալների բազան չի պահում բինար ֆայլեր կամ փաստաթղթերի անձնական տեքստեր. աղյուսակներում ֆիքսվում են միայն անանունացված տեխնիկական մետատվյալներ (ձևաչափեր, չափերը բայթերով, աշխատանքային ժամանակը, կարգավիճակները):
6. Տիեզերական REST API արտաքին վեբ ծառայությունների համար
Ծառայությունը սկզբնապես նախագծված է որպես բազմապլատֆորմային բեքենդ: Բոտի հետ մեկտեղ գործում է լիարժեք պաշտպանված ծրագրային ինտերֆեյս վեբ կայքերի համար (օրինակ՝ Django-ի վրա) և երրորդ կողմի բոտերի համար.
GET /api/v1/formats— հասանելի փոխարկման ուղղությունների դինամիկ JSON մատրիցա, որը համաժամեցված է Google Աղյուսակների կարգավորումների հետ:POST /api/v1/convert— տիեզերական էնդպոինտ, որն ընդունում էmultipart/form-data(ֆայլ, թիրախային ձևաչափ, արտաքին հաճախորդի ID) և տալիս է պատրաստի բայթերի հոսք ուղղակի ներբեռնման տեսքով:- Ավտորիզացիա Bearer թոքեններով (
WEBHOOK_REFRESH_TOKEN)՝ ըստ ժամանակի գրոհներից պաշտպանությամբsecrets.compare_digest-ի միջոցով:
7. Կառավարման վահանակ և Observability (NiceGUI + AG Grid)
Բիզնես ցուցանիշների և համակարգի վիճակի մոնիտորինգը դուրս է բերված նատիվ Single-Page կառավարման վահանակ՝ հիմնված NiceGUI 2.x-ի վրա:
- Ինտերակտիվ
AG Grid (v32+)աղյուսակներ՝ հարմարեցված Excel-style վանդակավոր ֆիլտրերով (aggrid_filters.js): - Հերթերի, API մատակարարների ուշացումների և PostgreSQL / Redis պինգի մոնիտորինգ իրական ժամանակում:
- Հատվածային ֆիլտրում ըստ ամսաթվերի՝ ստորագրված JWT թոքենների միջոցով
MetabaseBI վահանակի անխափան ինտեգրմամբ: