根据您的商品目录,可对 Feed 进行分片(或将 Feed 拆分为多个 文件)。
<ph type="x-smartling-placeholder">何时使用分片
Feed 中的 1 个文件超过了 200 MB(经过 gzip 压缩后)。
- 示例:生成的库存状况 Feed 为 1 GB。此值应为 分片为 5 个以上单独的文件(或分片)。
合作伙伴广告资源分布在多个系统和/或区域 因此难以对广告资源进行对账
- 示例:合作伙伴在美国和欧盟广告资源分属不同的版本
系统。生成 Feed 时可使用 2 个文件(或分片),1 个用于美国,
针对欧盟,具有相同
nonce
和generation_timestamp
。
- 示例:合作伙伴在美国和欧盟广告资源分属不同的版本
系统。生成 Feed 时可使用 2 个文件(或分片),1 个用于美国,
针对欧盟,具有相同
一般规则
- 对于 1 个文件(经过 gzip 压缩后),每个分片不得超过 200 MB。
- 我们建议每个 Feed 不要超过 20 个分片。如果您有正当的业务理由 要求超过该金额,请联系支持部门以获取进一步说明。
-
每条记录(例如一个
Merchant
对象)必须在一个分片中发送, 它们不能拆分为多个分片。但是,也不一定要在分片中发送 并使用相同的shard_number
。 - 为了获得更好的效果,您应该将数据平均分配给 以便所有分片文件的大小相近。
如何将 Feed 分片
对于每个文件(或分片),请将 FeedMetadata
设置为
以下:
processing_instruction
设置为PROCESS_AS_COMPLETE
。- 将
shard_number
设置为 Feed 的当前分片 (从 0 到total_shards
- 1,不连续) total_shards
设置为 Feed(最低 1)。nonce
设置为相同的唯一标识符 同一 Feed 的所有分片中,但其值不同于 其他 Feed。nonce
必须是正整数 (uint64
)。generation_timestamp
是 unix 和 EPOCH 中的时间戳 格式。在 Feed 的所有分片中,此值应该相同。
建议:对于每个文件(或分片),设置文件名来指示 Feed 类型、时间戳、分片编号以及 处理。分片应大致相等,并且 分片上传。
Example:
“availability_feed_1574117613_001_of_002.json.gz”
分片可用性 Feed 示例
分片 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" } ] } ] }
分片 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" } ] } ] }
分片 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" } ] } ] }
将分片用于合作伙伴分发的广告资源
对合作伙伴来说可能很难整合分散的库存 放入单个 Feed 中。分片可以 可用于解决协调难题 广告资源集
例如,假设某个合作伙伴的广告资源分为 2 个区域(美国和欧盟) 广告资源),它们位于 2 个独立的系统中。
合作伙伴可以将每个 Feed 拆分为 2 个文件(或分片):
- 商家 Feed:美国为 1 个分片,欧盟为 1 个分片
- 服务 Feed:美国为 1 个分片,欧盟为 1 个分片
- 可用性 Feed:对于美国为 1 个分片,对于欧盟为 1 个分片
请按照以下步骤操作,以确保 Feed 得到正确处理:
- 确定上传时间表,并对每个清单实例进行配置, 遵循时间表
- 为每个实例分配唯一的分片编号(例如 US = N,EU = N + 1)。
将
total_shards
设置为分片的总数。 - 在每个预定的上传时间,决定
generation_timestamp
和nonce
。在FeedMetadata
,将所有实例都设置为保持相同的值 这两个字段中- “
generation_timestamp
”应为当前或过去的时间 (理想情况下,应提供合作伙伴的读取数据库时间戳)
- “
- 上传完所有分片后,Google 会通过以下方式对分片进行分组:
generation_timestamp
和nonce
。
即使每个分片代表一个 Feed,Google 也会将其作为一个 Feed 进行处理
不同地区,并且可以在不同的区域
只要 generation_timestamp
都是相同的。
分片可用性 Feed 示例(按区域)
分片 0 - 美国库存
{ "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" } ] } ] }
分片 1 - 欧盟广告资源
{ "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" } ] } ] }