При поиске на такой объемной базе товаров Битрикс генерирует очень тяжелые запросы, которые нельзя поменять. Такие запросы получаются, например, когда Битриксу надо сформировать страницу списка кроватей из 120 тысяч SKU. Или при фильтрации, когда по свойствам надо сформировать и вывести нужные карточки товаров. Помимо свойств товаров, запрос должен учитывать ещё и их изображения. Какую именно картинку для товара выводить, заказчик задает через отдельное свойство-флаг.
2021 год - рассказываем преимущества микросервисов
P.S. Все уже с ними поигрались, споткнулись десятки раз и снова возвращаются к монолитам там где надо, а не как раньше лендинг на 100 сервисов (утрирую).
P.S. видимо люди на VC пишут, когда для хабра слишком глупы
P.S. писал статью видимо менеджмент, который не шарит, что юзеры смотрят на UI, а не на сервер и его архитектуру
2024 на курсах продолжают рассказывать а на собесах требовать.
Между тем, стоит сходить почитать доклады с хайлоад ру и волосы начнут шевелиться на разных местах - как многие жалеют что они перешли на микросервисы.
Тем более, что вертикальное масштабирование сейчас хоть до 200 потоков одновременных.
Если убогость архитектора не позволяет смотреть на бизнес процесс в целом, то да, лучше разбиться на команды, каждый делает свой кусочек. И всем молиться.
Позвольте полюбопытствовать, а по сравнению с какими протоколами Http вдруг стал "лёгким"?
Далеко не всегда стоит делать первую версию проекта с микро-сервисной архитектурой. Даже, если есть цель вырасти в сотни раз. Иногда, разбить монолит на части проще, чем запустить десяток взаимозависимых сервисов с самого начала.
“Большое делят на малые части не как удобно, а как оно лучше делится само. А если нет необходимости, то и не разделяют вовсе. Разделенное без нужды соединить бывает труднее, чем разделенное от нужды, когда нужда проходит.” — Владимир Тарасов.
Более 95% веб приложухам микросервисная архитектура не нужна от слова совсем.
Сервисы связываются между собой и с клиентами с использованием лёгких протоколов, например, HTTP. В результате...
Каждый сервис тратит процессорное время на кодирование-декодирование данных. Это вроде бы мизер в рамках одного сервисе, но когда их становится слишком много...
есть MySQL (база данных сайта), в нём по прежнему хранятся SKU,есть Elasticsearch, в него мы тоже поместили все SKU, когда нам нужны определенные SKU с определенными свойствами, мы эти параметры передаем в Elasticsearch и за 0,5 сек. получаем не сами SKU, а список их id-шников. Эти id мы отдаем в MySQL и говорим: «Выведи их на страницу».
А потом оказывается что то-то где-то не так с синхронизацией баз и одни SKU есть на сайте, но их нет в эластике, другие - наоборот.
Я не спорю, что микросервисы где-то и в чем-то хороши, но это не абсолютно. Честно говоря, я как-то затруднюсь себе представить более-менее крупную 100% монолитную систему. Это вообще как? Одна программа, которая делает все-все-все? Такое вообще бывает?
Зато могу себе представить (ибо сам работаю с такой) достаточно крупную систему, работающую на многопользовательской платформе, где каждый процесс выполняется в отдельном задании (job). Задания полностью изолированы друг от друга - в каждом может быть свое окружение построено. У каждого своя память (в нашей системе каждому заданию выделяется 16Гб памяти). Полное падение одного задания никак не влияет на все остальные. Общаться между собой задания могут любыми доступными средствами - сокеты, пайпы, очереди (не те, которые кафки различные, а системные, где они есть, очереди сообщений, очереди данных...). И каждый процесс в своем задании выполняет свою часть общей работы. Одновременно может крутиться тысячи и более различных заданий.
Хотите распараллелить обработку? Да не вопрос. Пишем классическую батчмашину, где родительское задание запускает сколько нужно обработчиков (каждый в своем отдельном фоновом задании), создает конвейер (ту же "очередь данных" - есть у нас такой тип объекта в системе), а дальше делает выборку нужных для обработки данных, формирует их в пакеты и выкладывает на конвейер. Обработчики оттуда подхватывают и делают что нужно.
Это микросервисы? Если да, то "изобрели" их очень давно. Еще во времена System/36..38 и всяких разных ЕС ЭВМ и БЭСМ. Если нет, то что это? Уж точно не монолит...
Комментарий недоступен