인벤토리에 따라 샤딩 (또는 피드를 여러 개로 분할) 파일)가 필요할 수 있습니다.
<ph type="x-smartling-placeholder">샤딩을 사용해야 하는 경우
파일 1개의 피드가 200MB를 초과함 (gzip 압축 후)
- 예: 생성된 이용 가능 여부 피드는 1GB입니다. 이 이름은 5개 이상의 개별 파일 (또는 샤드)로 샤딩됩니다.
파트너 인벤토리가 시스템 또는 리전에 분산됨 인벤토리를 조정하기가 어렵습니다.
- 예: 파트너가 서로 다른 위치에 있는 미국 및 EU 인벤토리를 보유한 경우
있습니다 피드는 2개의 파일(또는 샤드)(미국의 경우 1개,
같은
nonce
를 갖는 EU의 경우 1,generation_timestamp
- 예: 파트너가 서로 다른 위치에 있는 미국 및 EU 인벤토리를 보유한 경우
있습니다 피드는 2개의 파일(또는 샤드)(미국의 경우 1개,
같은
일반 규칙
- 파일 1개에 대해 각 샤드는 200MB를 초과할 수 없습니다 (gzip 압축 후).
- 피드당 샤드는 20개를 넘지 않는 것이 좋습니다. 타당한 비즈니스 근거가 있는 경우 필요한 경우 지원팀에 문의하여 추가 안내를 받으세요.
-
개별 레코드 (예: 하나의
Merchant
객체)는 하나의 샤드로 전송해야 합니다. 여러 샤드로 분할할 수 없습니다. 하지만 샤드에서 전송할 필요는 없습니다. 향후 피드에도 동일한shard_number
를 사용합니다. - 성능 향상을 위해 모든 샤딩된 파일의 크기가 비슷하도록 합니다.
피드를 샤딩하는 방법
각 파일 (또는 샤드)의 FeedMetadata
을
있습니다.
processing_instruction
설정됨PROCESS_AS_COMPLETE
shard_number
을(를) 피드의 현재 샤드로 설정 (0부터total_shards
까지 - 중단 없이 1까지)total_shards
를 피드 (1부터 시작)nonce
가 동일한 고유 식별자로 설정됨 동일한 피드의 모든 샤드에 있지만 사용할 수 있습니다.nonce
는 양의 정수 (uint64
)여야 합니다.generation_timestamp
는 Unix 및 EPOCH의 타임스탬프입니다. 형식으로 입력합니다. 이는 피드의 모든 샤드에서 동일해야 합니다.
권장: 각 파일 (또는 샤드)에 대해 파일 이름이 피드 유형, 타임스탬프, 샤드 번호 및 총 있습니다. 샤드는 크기가 거의 같아야 하며 모두 한 번 처리됩니다. 샤드가 업로드됩니다
Example:
“availability_feed_1574117613_001_of_002.json.gz”
샤딩된 이용 가능 여부 피드의 예
샤드 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" } ] } ] }
파트너 분산 인벤토리에 샤딩 사용
파트너가 분산된 인벤토리를 통합하기 어려울 수 있음 단일 피드로 만들 수 있습니다 샤딩은 각 샤드를 각 샤드와 일치하도록 설정하여 조정 문제를 해결하는 데 사용됩니다. 인벤토리 세트를 지정합니다
예를 들어 파트너의 인벤토리가 두 지역 (미국과 EU)으로 분리되어 있다고 가정해 보겠습니다. 2개의 개별 시스템에 있는 인벤토리)
파트너는 각 피드를 다음과 같은 2개의 파일 (또는 샤드)로 나눌 수 있습니다.
- 판매자 피드: 미국의 경우 샤드 1개, EU의 경우 샤드 1개
- 서비스 피드: 미국의 경우 샤드 1개, EU의 경우 샤드 1개
- 이용 가능 여부 피드: 미국의 경우 샤드 1개, EU의 경우 샤드 1개
피드가 제대로 처리되도록 하려면 다음 단계를 따르세요.
- 업로드 일정을 결정하고 각 인벤토리 인스턴스를 구성하여 일정을 따릅니다
- 각 인스턴스에 고유한 샤드 번호를 할당합니다 (예: US = N, EU = N + 1).
total_shards
를 총 샤드 수로 설정합니다. - 예약된 각 업로드 시간에
generation_timestamp
및nonce
FeedMetadata
: 모든 인스턴스가 다음에 동일한 값을 갖도록 설정 확인할 수 있습니다.generation_timestamp
은(는) 현재 또는 최근 날짜여야 합니다. (파트너의 읽기 데이터베이스 타임스탬프가 이상적임)
- 모든 샤드가 업로드되면 Google은 다음을 통해 샤드를 그룹화합니다.
generation_timestamp
및nonce
각 샤드가 하나의
다른 지역에 있는 게시자라면
generation_timestamp
모든 샤드에서 동일합니다.
지역별 샤딩된 이용 가능 여부 피드 예시
샤드 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 - EU 인벤토리
{ "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" } ] } ] }