Передовой опыт использования сторонних API для электронной коммерции

StackOverflow https://stackoverflow.com/questions/1425629

  •  07-07-2019
  •  | 
  •  

Вопрос

Что было бы наилучшей практикой для следующей ситуации. У меня есть интернет-магазин, который торгует на уровне запасов у дистрибьютора. Должен ли сайт каждый раз, когда пользователь загружает страницу сведений о продукте, использовать сторонний API для самых актуальных данных? Или сайт должен использовать сторонние API, а затем хранить эти данные в течение определенного времени в собственной системе и периодически обновлять его?

Мне кажется очевидным, что его следует обновлять каждый раз при загрузке страницы сведений о продукте, но как насчет интернет-магазинов с высоким трафиком? В этом случае используются совершенно разные решения?

Это было полезно?

Решение

В этом случае я бы определенно кэшировал результаты с сайта дистрибьютора в течение некоторого промежутка времени, а не обращался к ним каждый раз, когда получал запрос. Однако я не просто использовал бы общий 5-минутный или 30-минутный тайм-аут для всех записей кэша. Вместо этого я бы использовал некоторые эвристики. Если возможно, например, если ваше приложение написано на языке, подобном Python, вы можете прикрепить простой скрипт к каждому продукту, который реализует время ожидания.

Таким образом, если это элемент, который запрашивается нечасто, или элемент которого имеет большой запас, вы можете кэшировать его в течение более длительного времени.

if product.popularityrating > 8 or product.lastqtyinstock < 20:
   cache.expire(productnum)
distributor.checkstock(productnum)

Это дает вам гибкость, к которой вы можете обратиться, если вам это нужно. Изначально вы можете установить для всех правил что-то вроде:

 cache.expireover("3m",productnum)
 distributor.checkstock(productnum)

На самом деле, сценарий, вероятно, не будет включать вызов функции checktock, потому что это будет в основном приложении, но он включен здесь для контекста. Если Python кажется слишком тяжелым, чтобы включать только это небольшое количество гибкости, то взгляните на TCL, который был специально разработан для этого типа работы. Оба могут быть легко встроены в приложения C, C ++, C # и Java.

Другие советы

На самом деле, есть другое решение. Ваш дистрибьютор хранит каталог продуктов на своих серверах и предоставляет вам доступ к нему через открытый интерфейс каталога . Когда пользователь хочет сделать заказ, он перенаправляется на место в каталог дистрибьютора, выбирает товары и передает выбор обратно в ваш магазин.

Он широко используется в филиале SRM (Управление взаимоотношениями с поставщиками).

Это зависит от многих факторов: трафика на ваш сайт, от того, как часто меняются уровни инвентаризации, влияние вытеснения устаревших данных на бизнес, как часто сторонние поставщики позволяют вызывать их API, SLA их API с точки зрения доступности и производительности. , и так далее.

Когда у вас есть эти ответы, здесь, конечно, есть много возможностей. Например, для сайта с низким трафиком, где важно правильно провести инвентаризацию, вы можете вызывать сторонний API при каждом вызове, но вернуться к некоторому альтернативному поведению (например, использовать кэшированные данные), если API не отвечает в течение определенного времени ожидания.

Иногда хорошо разработанные API-интерфейсы включают подсказки относительно срока действия данных. Например, некоторые API-интерфейсы REST-over-HTTP поддерживают различные заголовки элемента управления HTTP Cache, которые можно использовать для указания периода действия или для извлечения данных только в том случае, если они изменились с момента последнего запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top