Как мы подружили брокер сообщений RabbitMQ с Bitrix24
Кейс по распределению нагрузки на сервер с Битрикс24 при большом объеме обменов с внешними системами
У крупных компаний, которые параллельно используют много разнонаправленных корпоративных информационных систем (КИС), часто встают сложные интеграционные задачи. Бизнес-процесс начинается в одном ПО, продолжается в другом, а заканчивается в третьем. При этом данные по результатам процесса должны оказаться еще в 4 системах.
Для того, чтобы не перегружать ни одну из КИС и быть уверенными в том, что каждый запрос точно дойдет до нужной системы, чтобы организовать асинхронное взаимодействие между различными сервисами многие компании используют так называемые сервера очередей или брокеры сообщений. Одним из популярных решений является RabbitMQ. Данный брокер сообщений обеспечивает надежную доставку сообщений и возможность масштабирования системы.
Для того, чтобы не перегружать ни одну из КИС и быть уверенными в том, что каждый запрос точно дойдет до нужной системы, чтобы организовать асинхронное взаимодействие между различными сервисами многие компании используют так называемые сервера очередей или брокеры сообщений. Одним из популярных решений является RabbitMQ. Данный брокер сообщений обеспечивает надежную доставку сообщений и возможность масштабирования системы.
Так и наш клиент, компания Boxberry, использовала RabbitMQ как основного посредника между многочисленными сервисами. Перед нами, как перед интеграторами Битрикс24, стояла задача лаконично встроить Битрикс в общую инфраструктуру клиента. А значит необходимо было написать микросервис, который позволил бы использовать REST API Bitrix24 через RabbitMQ.
В современном мире все больше и больше компаний ориентируются на использование микросервисной архитектуры для создания своих приложений. Один из языков программирования, который пользуется большой популярностью в данной области, это Golang. С его помощью можно создавать быстрые, надежные и масштабируемые микросервисы, которые с легкостью могут работать в условиях высокой нагрузки.
Для того, чтобы работать с Bitrix24, нам нужно использовать его REST API. Это простой и удобный способ взаимодействия с сервисом, который позволяет выполнять различные операции, такие как создание, редактирование и удаление записей в CRM, получение списка задач и т.д.
Для обработки запросов к REST API Bitrix24 мы используем брокер сообщений RabbitMQ.
Теперь давайте перейдем к рассмотрению самого микросервиса. Он написан на языке программирования Golang и использует библиотеку для работы с RabbitMQ. Основная задача сервиса - обрабатывать запросы к REST API Bitrix24, которые поступают в очередь RabbitMQ.
При запуске сервиса мы создаем соединение с RabbitMQ и начинаем формировать очередь обращений. Когда в очередь поступает новое сообщение, мы его извлекаем и передаем на обработку. Для этого мы используем REST API Bitrix24, которая позволяет выполнять различные операции. Перечислим некоторые из них на примере компании Boxberry:
- создание лидов в Битрикс24, приходящих из формы обратной связи на основном сайте;
- создание компании и контакта в Битрикс24, привязанных к лиду, после заполнения данных клиентом по окончании регистрации в личном кабинете интернет-магазина;
- заполнение реквизитов компании по данным от клиента.
Так, ранее в компании Boxberry при использовании синхронного обмена интеграционные запросы периодически падали по таймауту, не дождавшись ответа от Битрикс24. В итоге сторона, которая делала запрос, не получала необходимые данные обратно. Приходилось увеличивать лимит времени на обработку запросов, что негативно сказывалось на производительности системы. При переходе на RabbitMQ стал использоваться уже асинхронный метод обмена данными и запрашивающая сторона уже не ожидает ответа сразу, а стала получать его в любое доступное время после ответа Битрикс24 в очереди запросов.
Таким образом, наш микросервис позволяет эффективно использовать REST API Bitrix24 в условиях высокой нагрузки. Благодаря асинхронному взаимодействию с помощью RabbitMQ, мы можем обрабатывать большое количество запросов, не перегружая при этом сам сервис Bitrix24.
Используя микросервис, разработанный на Golang, Boxberry смогла обрабатывать запросы на API более эффективно, управлять нагрузкой и улучшить производительность своей системы. Кроме того, использование RabbitMQ позволило уменьшить число запросов на API, тем самым снижая нагрузку на сервер и ускоряя время ответа.
В целом, использование микросервисов и RabbitMQ является одним из наиболее эффективных способов управления нагрузкой на сервере и обработки больших объемов данных. Благодаря решению, предложенному Boxberry, компания может продолжать развиваться и расти, обеспечивая лучший сервис для своих клиентов.