Pull to refresh
16
0
Send message
и да, и не совсем :)
скорее, это практики, предложенные в книге Антихрупкость, в которой действительно, Н.Талеб очень много опирается на стоиков

В любом случае, с доброй улыбкой, рад услышать такой комментарий, Спасибо!
Формирование заказа это резервация товара, фактически флажек в базе.

Да, все именно так, обработка заказа — это другая система.

Модель должна быть сделана так, чтобы при обновлении появлялся diff

Админка, которую разрабатывали, самая сложная ее часть — ровно про это — как генерить diff в данных подготовленных для сайта используя только diff по исходным данным. При этом схема трансформаций — это 100+ узлов и в 2 раза больше связей между ними (в среднем 1,9 связей на 1 узел). Чтоб с этим справиться в плане поддержки/доработки — был составлен движок. Внутренности этого движка активно производят вычисления и дают основную нагрузку по админке. Сложности с кешированием — словили как раз для промежуточных результатов этих вычислений.
Об этом проекте — будет отдельный пост.
1. На первых порах взяли IMap с репликацией 1, в кластере из 4 узлов. То есть, для каждого шарда в кластере есть 2 узла, на которых он представлен. Но, когда узел «отваливался» из кластера — вот на нем то данных и не хватало.
Сейчас перешли на ReplicatedMap.

2. Здесь я указал данные по админке, которые нужны в ETL-расчетах — в основном для обеспечения вычислений по дельтам данных (флаги, что где проходило ранее). Немного про эту систему будет в следующей части статьи. И, возможно, подробно расскажу про наш дельта-процессор отдельным постом. Но это объемно и не скоро )
Остатки распределены, и по складам и по магазинам (выступают в роли складов). Но отображать на сайте требуется не только остатки, но и условия доставки (уровень сервиса) — а на это влияют еще характеристики самого товара (крупно/мелко-габаритный, группы). В итоге, расчетов достаточно.
Как обстоят дела с распределением запросов по товарам на сайте именно сейчаc — не знаю, не могу сказать есть ли ярко выраженные пики (или наоборот, long-tail). Раньше не было.
в данных, которые использует сайт — достаточно активно обновляются остатки товара, из-за чего происходит пересчет доступности.
Все данные, которые отображаются на сайте и не являются хардкодом — попадают через базу, и почти все кешируются. Это и банеры, плашки, публикации, меню, настройки и все-все-все.
Хотелось бы деталей касательно профиля.

Профиль нагрузки в задачах админки того времени: put/get запросы в любой пропорции и за объектами любого размера.
Точной картинки спектра не сохранилось, но примерно:
* пропорция put/get в основном попадает в диапазон от 1:2 до 1:10, но есть несколько пиков в районе 1:100 и 1:10 000
* размер объектов — от небольших с 2-5 полями, до слонопотамов с 15 этажами вложенности (в сериализованном виде 10Кб, и несколько объектов поболее 100Кб)

на этом этапе Hazelcast кое-как устраивал. То есть, было плохо, в заданные рамки 10^5 RPS мы совершенно не укладывались, но была надежда, что можно что-то подкрутить, что-то вынести в специальный «горячий» кеш в памяти (тех самых итоговых слонопотамов, которых генерили в ETL). Была надежда, что потом еще что-нибудь в логике оптимизируем и будет нормально.

Но условия поменялись.
Добавилось очень, очень много запросов, когда по ключу нужно хранить только true/false.
И вот здесь стало совсем плохо.
То, что должны были выполнять за 10 минут — работало более 30 часов. То есть, через 30 часов тест прекратили, за сколько он отработал бы — осталось не известно.
В чем конкретно это выражалось на клиентской и серверной частях и как долго продолжалось?

На проде мы такой неприятности не ловили. Подготовились благодаря тестам на uat.
Для Hazelcast версий 6-ти летней давности, при запуске в сетевом окружении того времени — узлы довольно часто теряли друг друга из вида, из-за чего кластер перестраивался. Потом кластер восстанавливался, но на некоторое время узел мог остаться без части данных. Потребовалось время, чтоб разобраться в настройках. Сейчас такой проблемы нет.
для админки к товарному контуру, в 2017 было требование прогонять все данные за 10 минут. Прогреть кеш — в нашем случае можно было только запустив ETL на всех данных. Это порядка 30Гб сериализованных данных для результатов промежуточных вычислений.
Можно поподробнее, что такое «кеш рухнул»?

Очень подробный и точный ответ дан в предыдущем комментарии, от miksir

Добавлю только, что прогрев кеша на продакшн-объемах данных — в редкой системе не приведет к выходу даунтайма за рамки SLA.
Да, доклад и статья — написаны по мотивам одних и тех же событий :)
Доклад был раньше
да, не всегда. Задача как раз в том, чтоб не доводить до такой ситуации и подготовиться/подстраховаться заранее
Да, картинка, которая встретилась первой — была без рамки и подписи автора. Исправил.
Спасибо!
Сайт Спортмастер работает на платформе, которую написали самостоятельно, «с нуля».
Есть еще два-три десятка торговых марок, которые принадлежат компании и для которых есть сайты разного уровня — от визитки до интернет-магазина. Сейчас переводим на свое решение, перевели практически все.
В компании есть отдел с очень сильной компетенцией по Delphi. Есть круг задач, которые очень хорошо с помощью Delphi научились решать, что ценно для внутренних заказчиков, которые привыкли и любят решения на этом продукте. Это все, что могу подсказать. Возможно, ребята из отдела Oracle смогут рассказать подробней.

Для онлайн-проектов стек технологий — Java ecosystem.
Да! Спасибо за поддержку и активное участие в моменты, поворотные для проекта!
Ребята, кто сейчас допиливает Hazelcast на проде, обозначили поинты, которые сыграли важную роль:
  1. Когда использовать распределенный кэш (hazelcast), а когда достаточно локального (caffeine) с инвалидацией данных через тот же hazelcast.
  2. Разобрались когда использовать IMap + NearCache, а когда ReplicatedMap.
  3. Отказались от дефолтной сериализацию в пользу Cryo
  4. Провели мелкую донастройку.
    Например, проставили hazelcast.map.invalidation.batch.enabled=false
    Без этой настройки были проблемы на тестовом (не нагруженном) окружении — ломались seleinum тесты.
с Hazelcast история особая — с острыми сюжетами в проде, с заявками к разработчикам Hz, и как минимум двумя серьезными патчами с нашей стороны. Но это в 2014-2015.
Сейчас, или, собственно после того как научились его готовить, Hazelcast показывает себя отлично, никаких технически проблем с ним нет и отказываться от него не планируем. Удобный инструмент под свои задачи.
Мы именно «подхватили» работы над сайтом — взяли дизайн который тогда крутился в проде. Новый дизайн пришел уже в виде готовых макетов.
То есть, согласовывали — здесь не про то, что мы предложили и подали на согласование, но наоборот — дизайн, который был разработан для всей компании (розница, маркетинг, все коммуникации) в том числе содержал предложение для сайта, проработанное до каждой кнопочки и плашки. Нам досталась только проверка на полноту и непротиворечивость контента.
Нет не хайбрис.
Сумма сделки при покупке Hybris официально не раскрыта. А вот по «самой дорогой платформе» — сумма очень круглая, можно найти в Топ-15 крупнейших сделок интернет-проектов.
1

Information

Rating
Does not participate
Works in
Registered
Activity