GH GambleHub

Multipart-Aleksands և մեծ արտանետումներ

1) Երբ անհրաժեշտ են «մեծ» օրինակներ, և ինչն է կարևոր։

Սցենարներ ՝ ֆինանսական հաշվետվություններ, օգտագործողների գործունեության ծանրաբեռնվածություն, աուդիտ/կարգավորիչներ, BI-արտանետումներ, գործընկերային հետազոտություններ և, պահեստային պատճեններ։ Հիմնական պահանջները

Տվյալների համաձայն (ժամանակի apshot/dot)։

Անցումը ծավալի միջոցով (զուգահեռ գրառում/ընթերցում, հոսքի շարականացում)։

Վերականգնումը (resumable) և մասնակի առաքումը։

Ամբողջականությունը (www.ksum) և հավատարմությունը (մանիֆեստ)։

Անվտանգություն/PII (դիմակավորում, կոդավորում, մուտքի վերահսկում)։

Արժեքի կառավարում (ագրեսիա, թայմ-աուտներ, CDN, TTL)։

2) Տվյալների ցանկը 'պլյուսներ/մինուսներ

CSV - կոմպակտ, արագ գրել/կարդալ; մինուսներ 'էկրանավորումը, տեսակները կորչում են։ Լավ է պլաստիկ պարամետրերի համար։

JSON Lines (JSONL) - օբյեկտի տողի վրա, հարմար է սթրիմինգի և մասնակի նմուշների համար։ մինուսներ 'ծավալը։

Parquet/Avro - գաղութային/սխեմատիկական միացություններ, սեղմում և dicate pushdown; իդեալական է վերլուծաբանների և մեծ տվյալների համար։

Mixed: JSONL-ը API բեռնման համար Parquet-ի օֆլինի փոխարկումը։

Սպիտակուցիա ՝ «gzip »/« zstd» (ավելի լավ)։ Շատ մեծ կղզիների համար 'սպլիտ արխիվներ (71-512 ՄԲ-ով մի մասի վրա)։

3) Համաձայնություն. Ինչպե՞ ս ստանալ «նկարը»

BD 'REPEATABLE READ/MSAPSHOT գործարքային մեկուսացում; հոսքերի համար 'ռեակտիվության տրամաբանական արցունքները կամ «watermark» նշանը (մակս' edonated _ at/տարբերակը)։

Event sourcing: էքսպորտը www.set ամսագրի վրա։

Կտրվածքներ ՝ «ամբողջական» էքսպորտը + «դելտա» (հաջորդ փոփոխությունները «watermark» -ից)։

4) Բաժանումը մասերի վրա (multipart/chunking)

4. 1 տեսակի «multipart»

Upload (մեզ): multipart/form-105 (փոքր ֆայլեր), S3 Multipart Upload (MPU )/GCS Resumable (մեծ)։

Download (մեզանից): HTTP Range («bytes = start-end»), «multipart/byteranges» (մի քանի միջակայք մեկ պատասխանով), «zip of parance», ռուսական և օբյեկտի մեջ։

4. 2 Քայքայման ռազմավարություն

Չափի (օրինակ, 256 ՄԲ)։

Բանալին/ամսաթիվը (շարդինգը '«tenrone _ id», «YYYY/MM/DD»)։

Աղյուսակի/էության (առանձին ֆայլեր տեսակների վրա)։

Հավասարակշռություն '64-512 ՄԲ մասերը լավ են ցատկում զուգահեռ և չեն տաքացնում հիշողությունը։

5) API-ճարտարապետությունը (ասինխրոն մոդել)

Քայլերը

1. «POST/export.ru» առաջադրանքը հերթում է (մետատվյալներ ՝ ձևաչափ, ֆիլտրեր, կոդավորում, կյանքի ժամանակահատվածը)։

2. Workers կառուցում են wwww.apshot, սթրիմ տվյալները և գրում մասեր օբյեկտի պահեստում։

3. Արտադրում են մանիֆեստ (JSON) մասերի ցուցակով, չափսերով, www.ksum, սխեմայի տարբերակով։

4. 'GET/express/code id code "վերադարձնում է կարգավիճակը և հղումը (և )/pre-signed URLL-ում։

5. `GET /exports/{id}/manifest. json '- ճշմարտության մեխանիզմ' ստուգելու/վերալիցքավորելու համար։

Մանիֆեստի օրինակ

json
{
"export_id": "exp_2025_10_31_001",
"created_at": "2025-10-31T14:23:00Z",
"schema": "orders_v3",
"format": "parquet+zstd",
"parts": [
{"name":"part-00000. parquet. zst","size":268435456,"sha256":"...","url":"...","range":"bytes=0-268435455"},
{"name":"part-00001. parquet. zst","size":241172480,"sha256":"...","url":"..."}
],
"total_bytes": 509607936,
"encryption": {"type":"AES-256-GCM","key_id":"kms/keys/exp"},
"watermark": {"type":"updated_at","value":"2025-10-31T00:00:00Z"}
}

6) Վերականգնվող արտանետումները (resumable)

HTTRANGE: Հաճախորդը յուրացնում է ֆայլի "պոչը" ՝ "Range: bytes = 1172470- ը։

Մի քանի միջակայքներ ՝ «Range: bytes = 0-99,2,000-4999» - պատասխանը ՝ «Entent-Type: multipart/byteranges»։

Հաճախորդի ռազմավարությունը 'զուգահեռ «գողերը» մասերի վրա, «sha256» յուրաքանչյուրը, էքսպոնենցիալ backoff։

CDN 'Range-ի աջակցությունը, անջատված մեծ պատասխանների բուֆերիզացիան։

7) Մեծ բեռնումը մեզ մոտ (resumable upload)

S3 Multipart Upload: հաճախորդները բեռնում են մասերը (5-5000), սերվերը հավաքում է «CompleteMultipartUpload»։

GCS Resumable: մեկ նստաշրջան, ռուսական հաճախորդը կարող է շարունակել «Content-Range» -ի հետ։

TUS (արձանագրություն) - անկախ վերականգնվող apload HTTP-ի վերևում։

Pattern B2B: Մենք տալիս ենք pre-signed URL-ը մասերը ուղղակիորեն պատնեշի մեջ, իսկ մետատվյալները 'մեր API-ում։

8) Սպիտակուցիա, կոդավորում, ամբողջականություն, ամբողջականություն

Ֆինլանդիա '«zstd» նախընտրելի է (ավելի լավ է ratio/արագություն)։ Սեղմեք յուրաքանչյուր մասը առանձին (ավելի հարմար է վերսկսել/կանխել)։

Կոդավորումը

Լարման վրա ՝ TFC 1։ 2+.

Հանգիստ 'KSA (SSE-KMS) կամ client-side (AES-256-GCM) բանալին (key wrapping)։

Երբեք մի տեղադրեք մանիֆեստի «հում» բանալին։

Noksum: առնվազն SHA-256 մասը + ընդհանուր է ամբողջ հավաքածուի համար։ Ստուգեք տեսահոլովակի վրա ack-ից առաջ։

9) Ինտեգրումը պարագծի հետ 'NGINX/CDN

NGINX (Range + մեծ թայմաուտներ + անջատել բուֆերիզացիան)

nginx server {
listen 443 ssl http2;
server_name downloads. example. com;

location /exports/ {
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 3600s;
add_header Accept-Ranges bytes;
proxy_pass http://export-backend;
}
}

Պատասխանների վերնագրերը

`Content-Disposition: attachment; filename="export_2025-10-31_part-00000. parquet. zst"`

«ETag »/« If-Range» ճիշտ դերի համար։

«Cache-Corl» (օրինակ ՝ «private, max-age = 2400») անձնական բեռնման համար։

10) Անվտանգություն և բաղադրիչներ

Վավերացում/հեղինակային արտահայտություն. Օրինագծերի թողարկումը միայն սեփականատիրոջ/դերերի։ ժամանակավոր հղում (pre-signed) կարճ TTL-ով։

PII 'դիմակավորում/կեղծանունացում; մանիֆեստում միայն տեխնոլոգիական դաշտերն են։

GDPR/տեղական կարգավորիչները 'TTL-ի վրա ածխաջրածինների հեռացում, ներբեռնման աուդիտ, քրոս-տարածաշրջանային կարգավորման արգելք առանց հիմքի։

Rate limiting & windtas: Սահմանափակել միաժամանակ ածխաջրածինների քանակը և ընդհանուր ծավալը օրական/ամիս (per-tenae)։

Anti-scraping: SAR/bot ֆիլտրեր հղումների վրա, միջակայքերի սահմանափակում (զուգահեռ մասերի)։

11) Դիտողությունն ու շահագործումը

Մետրիկները

`export_jobs_total{status}` (queued/running/succeeded/failed/expired)

`export_bytes_total`, `export_part_duration_ms{p50,p95,p99}`

`download_range_requests_total`, `resumes_total`, `checksum_fail_total`

`storage_cost_estimate` и `egress_bytes_cdn`

Լոգա/աուդիտ

Ով ստեղծեց էքսպորտը, ֆիլտրերը, watermark-ը, ներբեռնումների ցանկը (IP/UA/ժամանակը)։

Հեշի մասերը և հավաքումը հաճախորդի կողմում (հաստատումը)։

Թրեյսինգը

Քնած են փուլերի վրա ՝ wwww.apshot no serialize diupload part pinalize։

12) Արտադրողականությունը և արժեքը

Զուգահեռ 'ստեղծեք մի քանի մասեր միաժամանակ (N worker), բայց սահմանեք I/O.

Հիշողությունը 'հոսքի շարքը (iterators, BD կուրսորներ, 4-16 MB)։

Dedup: Հաճախ կրկնվող օրինակների համար խելացի cache of parts ֆիլտրերի/հեշի միջոցով։

CDN 'շահավետ «ընդհանուր» հանրային հավաքածուի համար։ անձնական համար 'զգույշ (անվտանգություն/PII)։

13) Ինտերֆեյսների օրինակներ

13. 1 Էքսպորտի ստեղծում (REST)

http
POST /exports
Content-Type: application/json
Authorization: Bearer <token>

{
"format": "parquet+zstd",
"filters": {"date_from":"2025-10-01","date_to":"2025-10-31","tenant":"acme"},
"split_size_mb": 256,
"encryption": {"mode":"server-side-kms","key_id":"kms/keys/exp"}
}

Պատասխանը

json
{
"id":"exp_2025_10_31_001",
"status":"queued",
"estimated_parts": 12,
"manifest_url": "/exports/exp_2025_10_31_001/manifest. json"
}

13. 2 Հատվածներ Range-ից

http
GET /exports/exp_.../part-00003. parquet. zst
Range: bytes=1048576-

13. 3 Կեղծ վորկեր

pseudo snapshot = db. begin_snapshot()
for shard in plan_shards(snapshot):
part_stream = encode_stream(shard. rows, format="parquet", compress="zstd")
url = object_store. upload_stream(part_stream, part_name, encryption=KMS)
manifest. add(part_name, size, sha256, url)
write_manifest(manifest)

14) Դելտա-դելտայի պաթերոնները

Ամբողջական էքսպորտը N-ում (օր/շաբաթ) + 108 դու ամեն ժամ «delated _ at> watermark»։

Սպառողի կողմում 'կիրառեք դելտաները ըստ կարգի' հավատալով «version »/« seq»։

Պահեք վերջին watermark սպառողի և մանիֆեստի մեջ։

15) Anti-patterna

Էքսպորտը (սինխրոն) - թայմաուտներ և OFC։

Մի հսկա ֆայլ առանց ապամոնտաժման անհնար է։

Noksum-ի և մանիֆեստի բացակայությունը չի կարող ապացուցել ամբողջականությունը։

Մշտական հանրային հղում անձնական տվյալների վրա։

Buferization SSE/CDN կամ անջատված Range-ը կոտրում է «ավելցուկը»։

«Կեղտոտ» տվյալների արտահանումը (առանց www.apshot/մեկուսացման)։

16)

  • Ձևաչափը և թեմը ՝ CSV/JSONL/Parquet + 'zstd/gzip "։
  • Համաձայնություն 'գործարքային intapshot կամ watermark/www.set։
  • Բաժանումը '64-512 ՄԲ մասեր, զուգահեռ արտադրություն և արագացում։
  • Մանիենկո 'մասերի ցանկը, չափսերը, SHA-256, սխեմայի տարբերակը, watermark։
  • Վերականգնումը 'HTTRANGE, աջակցություն' multipart/byteranges ", հաճախորդների ռետրեր։
  • Անվտանգություն: pre-signed CORS, TTL, կոդավորումը (KFC/AEAD), PII դիմակավորում։
  • Limits/քվոտաներ ՝ per-ten.ru, ամենօրյա ծավալները, ակտիվ ջոյի քանակը։
  • Դիտարկումը 'ջո/մասերի չափումներ, ներբեռնման աուդիտ, ալտերտեր www.ksum-fail-ում։
  • Արժեքը 'CDN հանրային հավաքածուի համար, TTL և auto-cleanup։
  • Runbooks/Game Days: Ցանցի բեկորները, սթորի անհասանելիությունը, կոտրելով BD-ն, KFC-ի ձախողումը։

17) Game Days (պլեյբուսներ)

Ցանցի փլուզումը, երբ պտտվում է, հաճախորդը պետք է շարունակի «Range» -ի հետ։

Մեկ մասի բեռնման ձախողումը 'հատվածի հոսքը առանց ամբողջ արտահանման փոխպատվաստման։

Գողերի անկումը 'ջոբան վերականգնվում է վերջին չհաստատված չանկից։

KFC-ն անհասանելի է. Անվտանգ դեգրադացիա (դադար), չթողարկվել)։

Տվյալների աճը 242: Ստուգել մրցույթի ժամանակը, վերաբաշխել զուգահեռականությունը, չսպանել BD-ը։

18) Արդյունքները

Հուսալի մեծ արտանետումները ասինխրոն ճարտարապետություն են + բաժանումը մասերի վրա + վերականգնում + ստուգված ամբողջականությունը։ Արեք apshot, գրեք մասեր զուգահեռ, հրապարակեք մանիֆեստ, աջակցեք HTTP Range-ին և կարճ հղումներին։ Մտածեք անվտանգության, սահմանների և դիտողությունների մասին, և հսկա օրինագծերը կդադարեն գիշերային մղձավանջը թիմերի և օգտագործողների համար։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։