Parça feed'i dosyaları (eski)

Envanterinize bağlı olarak, feed'leri parçalama (veya birden fazla dosyaya bölme) 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 müsaitlik durumu feed'i 1 GB'tır. Bu dosya, 5'ten fazla ayrı dosyaya (veya parçaya) bölünmelidir.
  • İş ortağı envanteri, sistemler ve/veya bölgeler arasında dağıtılır. Bu durum, envanterin mutabık kılınmasını zorlaştırır.

    • Örnek: İş ortağı, ayrı sistemlerde bulunan ABD ve AB envanterine sahiptir. Feed, aynı nonce ve generation_timestamp değerlerine sahip AB için 1, ABD için 1 ve 2 dosya (veya parça) ile oluşturulabilir.

Genel kurallar

  • Her bir parça, 1 dosya için (gzip sıkıştırmasından sonra) 200 MB'ı aşamaz.
  • Feed başına en fazla 20 parça kullanılmasını öneririz. Bu miktardan daha fazlasını gerektiren bir işletme gerekçeniz varsa daha fazla talimat için lütfen destek ekibiyle iletişime geçin.
  • Bağımsız kayıtlar (ör. bir Merchant nesnesi) tek bir parça halinde gönderilmelidir. Bunlar, birden fazla parçaya bölünemez. Ancak gelecekteki feed'ler için aynı shard_number ile parçada gönderilmesi gerekmez.
  • Daha iyi performans için verilerinizin parçalar arasında eşit olarak bölünmesi gerekir. Böylece, tüm parçalanmış dosyalar benzer boyutta olur.

Feed'leri parçalama

Her dosya (veya parça) için FeedMetadata öğesini şu şekilde ayarlayın:

  • processing_instructionPROCESS_AS_COMPLETE olarak ayarlandı.
  • shard_number, feed'in geçerli parçasına ayarlandı (0 ile total_shards arasında başlangıç - süreksizlikler olmadan 1)
  • total_shards, feed için toplam parça sayısına ayarlanır (1'den itibaren).
  • nonce, aynı feed'in tüm parçalarında aynı ancak diğer feed'lerin değerinden farklı olan benzersiz bir tanımlayıcıya ayarlanır.
  • generation_timestamp, unix ve EPOCH biçimindeki zaman damgasıdır. Bu değer, feed'in tüm parçalarında aynı olmalıdır.

Önerilen: Her dosya (veya parça) için feed türünü, zaman damgasını, parça numarasını ve toplam parça sayısını gösterecek şekilde dosya adını ayarlayın. Parçalar yaklaşık olarak eşit boyutta olmalıdır ve tüm parçalar yüklendikten sonra işlenir.

  • Example: “availability_feed_1574117613_001_of_002.json.gz”

Parçalı Stok Durumu 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çalamayı kullanma

İş ortaklarının, birden fazla sisteme ve veya bölgeye dağıtılmış envanteri tek bir feed'de birleştirmesi zor olabilir. Parçalama, her bir parçayı her bir dağıtılmış sistemin envanter grubuyla eşleşecek şekilde ayarlayarak mutabakat sorunlarını çözmek için kullanılabilir.

Örneğin, bir iş ortağının envanterinin 2 ayrı sistemde bulunan 2 bölgeye (ABD ve AB envanteri) ayrıldığını varsayalım.

İş 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 doğru şekilde işlendiğinden emin olmak için aşağıdaki adımları uygulayın:

  1. Bir yükleme planı belirleyin ve her bir envanter örneğini planı takip edecek şekilde yapılandırın.
  2. Her örnek için benzersiz parça numaraları atayın (ör. ABD = N, AB = N + 1). total_shards öğesini toplam parça sayısına ayarlayın.
  3. Planlanan her yükleme zamanında, bir generation_timestamp ve nonce belirleyin. FeedMetadata bölümünde tüm örnekleri bu iki alan için aynı değerlere sahip olacak şekilde ayarlayın.
    • generation_timestamp, güncel veya yakın geçmişte olmalıdır (ideal olarak iş ortağının okuma veritabanı zaman damgası)
  4. Tüm parçalar yüklendikten sonra Google, kırıkları generation_timestamp ve nonce aracılığıyla gruplandırır.

Her bir parça, iş ortağı envanterinin farklı bir bölgesini temsil etse ve generation_timestamp tüm parçalarda aynı olduğu sürece günün farklı bir saatinde yüklenebilecek olsa da Google, feed'i tek bir feed olarak işler.

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"
        }
      ]
    }
  ]
}