Nano Hash - криптовалюты, майнинг, программирование

использование magento apis для веб-сайта электронной коммерции

Я новичок в magento и работаю над созданием веб-сайта с использованием magento. Я заметил, что у magento есть большое количество API, которые раскрывают все функции, которые мне понадобятся для создания веб-сайта электронной коммерции. Итак, я хотел бы использовать apis magento для извлечения данных, но разрабатывать пользовательский интерфейс отдельно без каких-либо зависимостей от magento. Я нашел много ссылок, которые разрабатывают веб-сайт с помощью темы magento, но не тех, где пользовательский интерфейс разработан в отдельном MVC и использует magento исключительно как уровень обслуживания. Есть ли проблемы/вопросы в моем подходе?

Изменить: я получил много ясности в отношении производительности db в API и того, как внешнее кэширование может облегчить проблему, но я до сих пор не понимаю, почему magento в качестве сервисного уровня не приводит в восторг (т.е. подпитывает веб-сайт с помощью magento apis) , есть ли у них какие-либо другие ошибки?

28.09.2012

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

Ответы:


1

Вот как мы преодолели медлительность в API Magento:

  1. Создан поставщик веб-сервисов в J2EE, Spring MVC, который действует как прокси между Magento и конечными пользователями.
  2. Поставщик веб-сервисов J2EE предоставляет почти все API-интерфейсы, которые есть у Magento, но также поддерживает JSON с REST, а также SOAP и RPC.
  3. Поставщик веб-служб J2EE использует базу данных на основе документов (MongoDB) для хранения моментального снимка каталога продуктов в MongoDB.
  4. Поставщик веб-сервисов J2EE использует собственное кэширование MongoDB для быстрого обслуживания данных без выполнения каких-либо дорогостоящих SQL-запросов.
  5. Чтобы избежать проблем с грязным кэшированием, мы создали хук в администраторе Magento, чтобы передавать данные в MongoDB всякий раз, когда данные изменяются в Magento.

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

01.10.2012
  • спасибо, интересно услышать, что вы использовали mongodb. Сталкивались ли вы с какими-либо проблемами истечения срока действия сеанса, как упоминалось JMC. 01.10.2012
  • Нет, мы не сталкивались с какой-либо ошибкой истечения сеанса от Magento даже при имитации большой нагрузки от нескольких узлов Jmeter. 02.10.2012
  • Я также обнаружил, что API-интерфейсы корзины покупок, такие как добавление в корзину, выполняются довольно медленно по сравнению с тем, что можно сделать на домашней платформе. Я заметил, что вы упомянули, что использовали mongodb для атрибутов продукта, но как насчет этих других API/функций? 02.10.2012
  • Извините, забыл упомянуть ранее, что мы не используем управление заказами Magento. Мы храним состояния корзины покупок и заказы непосредственно в самой MongoDB. 02.10.2012
  • возникает вопрос, зачем вообще использовать magento, если вы, кажется, делаете большую часть вещей вне его? 02.10.2012
  • Верно, и мы много раз задавали этот вопрос себе, и ответ заключался в том, чтобы в основном использовать их панель администратора каталога и не делать это снова и снова самостоятельно. 02.10.2012
  • давайте продолжим это обсуждение в чате 02.10.2012

  • 2

    API-интерфейсы Magento медленные, вы столкнетесь с серьезными проблемами производительности, пытаясь запустить сайт без него.

    Из-за сложного характера модели EAV вам может быть сложно управлять продуктами только через API.

    Есть ли у вас особые опасения по поводу использования собственного интерфейса Magento? Поначалу это сложно, но как только вы поймете систему макета, она станет очень мощной и настраиваемой.

    28.09.2012
  • Спасибо, что делает magento apis медленнее, чем использование интерфейса magento? Меня беспокоят отзывы, которые я получил от нескольких человек, которые работали над magento, относительно возможности точного управления элементами пользовательского интерфейса. Как совершенному аутсайдеру, мне нравится идея разработки пользовательского интерфейса с полным контролем и использованием набора API-интерфейсов для обеспечения функциональности каталога, поиска, корзины, рекламных акций, оформления заказа и т. д. Это кажется более естественным способом разработки. 28.09.2012
  • Это требует некоторых навыков, но в целом для магнето можно создать любой пользовательский интерфейс, который вы хотите. 30.09.2012
  • Если вы используете API, то у вас есть накладные расходы на использование веб-запросов вместо прямого доступа к модели. Даже при непосредственном использовании моделей API я нахожу их медленнее, чем прямое обращение к ядру. Я предполагаю, что они проводят много проверок, которые не выполняются основными моделями. 01.10.2012
  • @ 142857: API-интерфейсы Magento очень медленные, потому что они не используют различное кэширование, которое используется их пользовательским интерфейсом. Объектная модель базы данных Magento довольно сложна (такая же, как у Ofbiz), и получение информации на одной странице продукта преобразуется в несколько запросов с несколькими соединениями, и в отсутствие какого-либо кэширования эти запросы имеют тенденцию замедляться при постоянной нагрузке. 01.10.2012
  • @anubhava, спасибо за ответ. Итак, если я использую слой кэширования, такой как memcached, для кэширования результатов выборки продукта apis esp, тогда все должно быть в порядке? 01.10.2012
  • Да, если вы используете уровень кэширования, тогда он будет работать лучше, однако вам нужно создать механизм, чтобы избежать грязного кеша и очищать кешированный контент, когда и когда сведения о продукте изменяются через их панель инструментов. Я могу опубликовать подробности о моей реализации, если хотите. 01.10.2012
  • @anubhava, хотелось бы узнать подробности. Спасибо. 01.10.2012

  • 3

    Технически запустить сайт можно только через API.

    Проблема, с которой вы можете столкнуться, носит практический характер: вместо того, чтобы тратить время на изучение всех вызовов API, вы можете узнать, как реализовать текущий пользовательский интерфейс в Magento.

    Преимущество этого подхода заключается в том, что вы также лучше поймете, как Magento работает внутри, что позволит вам использовать его функциональность для ваших уникальных бизнес-потребностей.

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

    28.09.2012

    4

    Я регулярно сталкиваюсь с проблемами «истечения срока действия сеанса» при доступе к API Magento как через SOAP, так и через XMLRPC. Все мои вызовы требуют обработки исключений, чтобы избежать остановки выполнения. Я полагаю, что одно это создало бы кошмар при построении всего поверх API.

    Лучший ответ, который вы получите, — это нагрузочное тестирование API, прежде чем вы начнете программировать. Подробно регистрируйте тесты и ищите ошибки. Если вы видите ошибки на нормальной основе, это должно ответить на ваш вопрос. Даже если вы найдете документацию, в которой говорится, что можно делать то, что вы пытаетесь сделать, вам все равно придется настраивать API для правильной работы под нагрузкой, необходимой для запуска магазина.

    Будет полезно узнать, с чем вы столкнетесь, прежде чем тратить часы на разработку.

    28.09.2012
  • не могли бы вы объяснить немного больше. Я пробовал немного играть с API и не сталкивался с такой проблемой. 01.10.2012
  • Иногда, когда к API выполняются два одновременных вызова, даже если вызовы исходят от разных веб-пользователей API, magento возвращает срок действия сеанса одному из двух вызовов. Истечение сеанса действует как фатальная ошибка для скрипта с истекшим сроком действия и останавливает выполнение, если не выполняется надлежащая обработка. Это может быть просто моя конфигурация, но мое оборудование и конфигурация php более чем достаточны для обработки нагрузки. Не удивляйтесь, если вы столкнетесь с этой проблемой при попытке вызова API от сотен до тысяч раз в минуту, что потребуется для запуска всего магазина. 01.10.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..