Softonic — крупнейшее в мире приложение для скачивания apk.
Softonic — это крупнейшее в мире место для поиска программного обеспечения и приложений, а также один из самых посещаемых веб-сайтов в мире. Вы, вероятно, попадали на их сайт, когда вам нужно что-то скачать, и вы не единственный. Более 100 миллионов пользователей достигают Softonic - в месяц. Это руководство по приложениям, которое поможет вам найти лучшие приложения для вашего устройства, предлагая вам обзоры, новости, статьи и бесплатные загрузки.
CloudAMQP предоставляет размещенные кластеры RabbitMQ во всех крупнейших центрах обработки данных по всему миру, и Softonic является одним из наших многочисленных клиентов. Мы встретились с Риккардо Пикколи, разработчиком Softonic, на саммите RabbitMQ 2018 в Лондоне, где он любезно поделился с нами историей клиентов Softonic.
Эта статья разбита на две части; первая часть представляет собой обзор системы, в котором показаны простые варианты использования RabbitMQ архитектуры, основанной на событиях. Вторая часть — это глубокое погружение во внутреннюю архитектуру Softonic — плагины, которые они используют, и примеры событий, которые они отправляют.
Простой вариант использования RabbitMQ
Пользователи могут загружать файлы в Softonic. Все загружаемые файлы сканируются на наличие вирусов и собирается информация о файле, прежде чем он будет передан другим пользователям. Новые бинарные данные, прежде всего, сохраняются в выделенном сервисе, а уведомление о загрузке отправляется на шину событий. Другие сервисы собирают эту информацию, которая в итоге будет добавлена на сайт. В этом случае пользователь получает уведомление сразу после успешной загрузки, а событие сканирования просто помещается в шину событий для обработки другими службами. Шина событий, также называемая очередью сообщений, позволяет веб-серверам быстро реагировать на запросы вместо того, чтобы выполнять ресурсоемкий процесс на месте и вместо того, чтобы заставлять пользователя ждать.
Процесс сканирования является одной из таких услуг. Приложение для сканирования на вирусы принимает сообщение шины событий, такое как команда «ScanFile», и запускает обработку файла. В то же время другие пользователи могут загружать новые файлы в Softonic, а задачи обработки просто накапливаются в очереди. Событие «FileScanned» добавляется обратно в шину событий после того, как приложение-потребитель обработает событие.
Портал обнаружения программного обеспечения и приложений Softonic посещают более 100 миллионов пользователей в месяц, он обеспечивает более 2 миллионов загрузок в день и имеет постоянный поток событий и команд между своими службами. CloudAMQP встретились с Softonic, чтобы услышать их историю о том, как RabbitMQ, как шина событий между микросервисами, способствует созданию надежной, быстрой и эффективной архитектуры, идеально подходящей для их целей.
Подобная архитектура создает два простых приложения и низкую связь между отправителем и получателем. Пользователи по-прежнему могут загружать файлы, даже если приложение сканирования занято или находится на обслуживании.
Различные события или команды публикуются в шине событий, например, команда «ScanFile».
Softonic использует RabbitMQ в качестве шины событий, события или команды просто добавляются в очередь.
Приложение-потребитель извлекает событие и начинает его обработку. Некоторые данные сохраняются в базе данных, и другие события могут быть опубликованы обратно в другую очередь событий (подробнее об этом в разделе «Внутренняя структура RabbtiMQ»).
Приложение-потребитель хранит много информации в базе данных (MySQL).
Когда микросервис получает событие, он может обновить свои собственные бизнес-объекты, что может привести к публикации большего количества событий, и здесь именно так.
Внутренняя структура RabbitMQ
Пришло время глубоко погрузиться во внутреннюю архитектуру RabbitMQ и в приложение Softonic. Необходимо описать две концепции RabbitMQ, если вы еще не знакомы с ними. Softonic использует плагин для обмена согласованными хэшами и сегментацию RabbitMQ.
асинхронно Событие 0 будет обработано сразу, события 1, 2 и 3 будут повторно опубликованы в очереди, чтобы другие сегментированные потребители могли их обработать.