Хотя большие данные по-прежнему являются модным словом для многих людей, продуктивных, легко масштабируемых и экономичных решений для больших данных, мы решили описать тип инструментов больших данных, которые использует ИТ Свит.

Как мы уже упоминали в одной из наших предыдущих статей, большие данные описываются тремя буквами V:

  • Объем
  • Разнообразие
  • Скорость

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

Базы данных больших данных: Redis, Cassandra, MongoDB

Redis хорошо зарекомендовал себя в качестве базы данных ключ-значение в памяти, используемой для создания децентрализованной очереди для анализа текстового контента. Это было необходимо для того, чтобы наш проект мог собрать данные для дальнейшей обработки.

Cassandra, хорошо известный и проверенный выбор для хранения и управления сортированными данными (например, историческими данными в некотором диапазоне, например, телеметрия), оправдал наши ожидания и обеспечил высокую отказоустойчивость, легко справляясь с исключительными рабочими нагрузками ввода-вывода, которые мы использовали, когда работа с алгоритмом нашего проекта. Это стало возможным благодаря встроенным возможностям сегментирования, и Cassandra действительно показала отличные результаты в хранении и обработке потока данных, легко масштабируясь по мере необходимости.

MongoDB, база данных, ориентированная на документы, обслуживала наши запросы по хранению различных данных для небольших проектов, которые позже легко обрабатывались и заменялись остальными базами данных. Его масштабируемость и гибкость помогли нам справиться с запросами и индексированием наборов данных.

Асинхронные приложения

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

Брокеры очередей RabbitMQ и SQS

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

Выводы

Таким образом, мы можем проектировать, развертывать, настраивать и поддерживать любую инфраструктуру, используя проверенные и надежные инструменты для работы с большими данными. Мы имеем достойный опыт работы как над краткосрочными, так и над долгосрочными проектами любой сложности и готовы предоставить нашим клиентам первоклассные услуги.

Первоначально опубликовано на https://itsvit.com/blog/