Envanterinize bağlı olarak, parçalama (veya feed'leri birden fazla) dosyalar) gerekebilir.
Parçalama ne zaman kullanılır?
Feed, 1 dosya için 200 MB'ı aşıyor (gzip sıkıştırmasından sonra).
- Örnek: Oluşturulan stok durumu feed'i 1 GB'tır. Bu özellik, 5'ten fazla ayrı dosyaya (veya kırıka) bölündü.
İş ortağı envanteri sistemler ve/veya bölgeler arasında dağıtılır Bu da envanterin mutabakatını zorlaştırır.
- Örnek: İş ortağının ABD ve AB envanteri var ve bu envanterler ayrı yerlerde
sistemlerdir. Feed, ABD için biri olmak üzere 2 dosya (veya parçayla) ile oluşturulabilir,
ve aynı
nonce
ile AB için 1 vegeneration_timestamp
.
- Örnek: İş ortağının ABD ve AB envanteri var ve bu envanterler ayrı yerlerde
sistemlerdir. Feed, ABD için biri olmak üzere 2 dosya (veya parçayla) ile oluşturulabilir,
ve aynı
Genel kurallar
- Her kırık, 1 dosya için 200 MB'ı aşamaz (gzip sıkıştırmasından sonra).
- Feed başına 20 parçadan fazla olmamasını öneririz. İş gerekçesi, daha fazla bilgi için lütfen destek ekibiyle bağlantı kurun.
-
Bağımsız kayıtlar (örneğin, bir
Merchant
nesnesi) tek bir kırıkta gönderilmelidir. birden fazla parçaya bölünemezler. Ancak, bunların kırık içine gönderilmeleri gerekmez. gelecekteki feed'ler için aynıshard_number
ile. - Daha iyi performans için, verileriniz her iki taraf arasında eşit olarak bölünmelidir bu parçaların hepsinin benzer boyuta sahip olmasını sağlayın.
Feed'leri parçalama
Her bir dosya (veya kırık) için FeedMetadata
özelliğini
takip etmek için:
processing_instruction
şu değere ayarla:PROCESS_AS_COMPLETE
.shard_number
, feed'in mevcut kırığına ayarlandı (0 iletotal_shards
arasında başlar - süreksizlikler olmadan 1)total_shards
, şu öğe için toplam kırık sayısına ayarlandı: feed'i seçin (1'den itibaren).nonce
, aynı benzersiz tanımlayıcı olarak ayarlandı aynı feed'in tüm parçalarında diğer feed'lerdenonce
, pozitif bir tam sayı (uint64
) olmalıdır.generation_timestamp
, unix ve EPOCH'taki zaman damgasıdır biçimindedir. Bu, feed'in tüm parçalarında aynı olmalıdır.
Önerilen: Her dosya (veya kırık) için dosya adını feed türünü, zaman damgasını, parça numarasını ve parçalar. Parçalar aşağı yukarı aynı boyutta olmalı ve hepsi bir kez işlenmelidir parçalar yüklenir.
Example:
“availability_feed_1574117613_001_of_002.json.gz”
Parçalı Kullanılabilirlik feed'i örneği
Parça 0
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 3, "nonce": 111111, "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577275200, "merchant_id": "merchant1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
Parça 1
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 1, "total_shards": 3, "nonce": 111111, "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577620800, "merchant_id": "merchant2", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
Parça 2
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 2, "total_shards": 3, "nonce": 111111, "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1576670400, "merchant_id": "merchant3", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
İş ortağı tarafından dağıtılan envanter için parçalama kullanma
İş ortaklarının, dağıtılan envanteri birleştirmesi zor olabilir. verileri tek bir feed'de birleştirir. Parçalama, her bir parçayı her bir parçayla eşleşecek şekilde ayarlanarak mutabakat zorluklarını çözmek için kullanılır dağıtılmış sistemin envanterini belirleyin.
Örneğin, bir iş ortağının envanterinin 2 bölgeye (ABD ve AB) ayrıldığını varsayalım. ) 2 ayrı sistemde bulunur.
İş ortağı her bir feed'i 2 dosyaya (veya parçaya) ayırabilir:
- Satıcı feed'i: ABD için 1 parça, AB için 1 parça
- Hizmet feed'i: ABD için 1 parça, AB için 1 parça
- Kullanılabilirlik feed'i: ABD için 1 parça, AB için 1 parça
Feed'lerin düzgün bir şekilde işlendiğinden emin olmak için aşağıdaki adımları uygulayın:
- Bir yükleme planı belirleyin ve her bir envanter örneğini yapılandırarak takip etmek.
- Her örnek için benzersiz kırık numaraları atayın (ör. US = N, AB = N + 1).
total_shards
değerini toplam kırık sayısına ayarlayın. - Planlanan her yükleme zamanında
generation_timestamp
venonce
.FeedMetadata
, tüm örnekleri şunun için aynı değerleri tutacak şekilde ayarla: birlikte çalışır.generation_timestamp
, güncel veya yakın bir tarih olmalıdır. (ideal olarak, iş ortağının veritabanının okuma zaman damgası)
- Tüm parçalar yüklendikten sonra, Google kırıkları
generation_timestamp
venonce
.
Google, her kırık bir parçayı temsil etse bile feed'i tek bir feed olarak işler
iş ortağı envanterinin farklı bir bölgesine
generation_timestamp
, günün farklı bir saatinde
tüm parçalarda aynıdır.
Bölgeye göre Parçalı Stok Durumu feed'i örneği
Parça 0 - ABD Envanteri
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 2, "nonce": 111111, "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577275200, "merchant_id": "US_merchant_1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
Parça 1 - AB Envanteri
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 1, "total_shards": 2, "nonce": 111111, "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577620800, "merchant_id": "EU_merchant_1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }