Pattern

Блог Tarantool

BackIcon

Кэширование и переход от Redis к Tarantool

Кэширование и переход от Redis к Tarantool

CalendarIcon

05.11.2024

scroll iconScroll

Быстрый доступ к данным для обработки — ключевой запрос для многих компаний. И подходов к обеспечению требуемого уровня скорости доступа к данным много. Вместе с тем не всегда решения и технологии, ставшие «классическими», способны справляться с современными запросами.

В этой статье разбираемся, как обеспечивать быстрый доступ к данным и какие преимущества дает возможность их обработки в реальном времени.

Подходы к обеспечению быстрого доступа к данным и их оперативной обработки

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

  • Перенос данных и вычислений в оперативную память. Использование систем хранения данных в памяти (in-memory databases) позволяет значительно ускорить выполнение операций чтения и записи данных. Такие системы могут работать в несколько раз быстрее, чем традиционные хранилища данных на жестких дисках.
  • Декомпозиция и распараллеливание. Разделение задачи на множество мелких частей и их параллельное выполнение может значительно ускорить общий процесс. Это применимо как в многопроцессорных системах, так и в системах с одним процессором, с использованием многопоточности.
  • Технология репликации данных. Развертывание дополнительных копий базы данных (реплик) на разных серверах и распределение нагрузки между ними. Репликации могут использоваться для масштабирования и повышения производительности системы.
  • Кэширование. Перенос наиболее часто используемых данных в отдельную систему для обеспечения быстрого доступа к ним. Это позволяет значительно сократить время выполнения операций и повысить производительность системы.

1.jpg

На практике подходы часто комбинируются — например, данные могут предварительно обрабатывать, сжимать и только после кэшировать. Вместе с тем одной из ключевых практик обеспечения быстрого доступа к данным зачастую считалось именно кэширование данных, которое:

  • имеет понятные алгоритмы работы;
  • позволяет гибко масштабировать системы;
  • помогает оптимизировать использование ресурсов;
  • снижает нагрузку на основное хранилище и повышает отказоустойчивость ИТ-систем за счет исключения «единой точки отказа».

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

К решениям, реализующим такой подход к хранению данных, относят Memcached, Hazelcast, MongoDB и Redis. Причем Redis, как стабильная и быстрая БД, в какое-то время стала не только самым популярным решением данного класса, но и де-факто стандартом отрасли. Так было до определенного времени.

Переход от Redis к Tarantool

Redis отличает ряд свойств:

  • Повышенная производительность, которую обеспечивает хранение данных в оперативной памяти сервера.
  • Отсутствие языка SQL (вместо этого используется get/set интерфейс).
  • Хранение данных в формате строк, списков, хешей и других структурированных представлений.

Redis выгодно выделялся параметрами и архитектурой среди аналогов. Как результат, многие компании строили свой стек для работы с данными с применением Redis.

Но по разным причинам (как на уровне законодательства РФ, так и на уровне реализации рисков vendor lock-in) российские компании столкнулись с невозможностью работать с Redis в будущем.

В результате перед бизнесом стал выбор между несколькими вариантами.

  • Сделать свой форк Redis и внести его в реестр отечественного ПО. Но этот вариант слишком трудозатратен, поскольку подразумевает выделение отдельной команды разработчиков и администраторов для поддержания и регулярного обновления продукта.
  • Использовать форк Redis от сторонней компании. В этом случае возникают риски vendor lock, а также зависимость от вендора продукта (в том числе в части выбранной им частоты и полноты обновления форка).
  • Найти замену Redis среди in-memory инструментов. В идеале — со сходной функциональностью и уже внесенную в реестр отечественного программного обеспечения.

С точки зрения ресурсозатрат и рисков третий вариант с переходом на аналог — приоритетный. И таким аналогом вполне может стать российская БД Tarantool DB.

Для выбора Tarantool DB в качестве альтернативы Redis есть несколько весомых причин.

  • Tarantool относится к тому же классу решений, что и Redis.
  • Tarantool и Redis имеют сходный набор возможностей.
  • Tarantool и Redis одинаково эффективно применяются в сходных сценариях.
  • Tarantool DB входит в реестр отечественного ПО (реестровая запись № 23005 от 28.06.2024).

Сложности перехода (и как их преодолеть)

К сожалению, переход с Redis на Tarantool осложняет то, что протоколы взаимодействия приложений в Redis и Tarantool различаются. Чтобы обеспечить клиентам возможность бесшовного перехода с инструмента на инструмент, нам требовалось разработать «прокладку», с помощью которой Tarantool сможет работать со скриптами, написанными под Redis.

Благодаря опыту команды Tarantool мы сделали подобную реализацию, и сейчас мы можем без внесения изменений в скрипты подменять Redis на Tarantool. То есть обеспечили возможность абсолютно бесшовного перехода на новый стек без необходимости перестройки архитектуры, получения многочисленных согласований и изменения алгоритмов взаимодействия. Благодаря такому «коннектору», для клиентов всё сводится к запросу «раскатить Tarantool DB с Redis-протоколом».

2.jpg

После этого достаточно перезагрузить приложение, чтобы БД подключалась по новому адресу.

Действительно ли так важна возможность работы с данными в real-time

Всё сказанное выше о полезности Redis и Tarantool справедливо только в том случае, если с данными действительно важно работать в реальном времени. Давайте определим, что дает бизнесу возможность обрабатывать данные на лету:

  • Быстрое реагирование. Обработка данных в реальном времени позволяет своевременно реагировать на любые чувствительные изменения, например в работе приложения или других систем. Это важно в ИТ, промышленности, телемедицине и не только.
  • Безопасность и мониторинг. Использование инструментов для обработки данных в режиме реального времени позволяет осуществлять непрерывный мониторинг ситуации и оперативно реагировать на инциденты, в том числе в сфере киберугроз или для выявления отклонения от привычных паттернов.
  • Улучшение обслуживания клиентов. Аналитическая обработка данных в реальном времени позволяет персонализировать предложения для клиентов. Например, интернет-магазины могут предлагать товары на основе предыдущих покупок клиента. Чаще это относится к системам, которые решают задачи аналитики для ритейла, телекома, банкинга.
  • Предсказание и предотвращение проблем. С помощью анализа данных в режиме реального времени бизнес может предсказывать потенциальные проблемы и принимать меры до того, как они возникнут. Например, принятие решений в реальном времени помогает выявлять потенциальное мошенничество еще до выдачи кредита, оформления страховки или заключения договоров.

Что в итоге

Возможность принятия бизнес-решений в реальном времени становится все более востребованной во многих направлениях и практически критической необходимостью в сферах, где контакт компании и клиента непродолжительный, а «время жизни» его интересов незначительно. Соответственно, важность качества и своевременности взаимодействия с клиентами возрастает.

Чтобы соблюдать эти условия, нужно не только держать данные рядом, но и иметь возможность оперативно обрабатывать и даже анализировать их. Эффективно помочь в этих задачах могут продукты Tarantool.

Читайте также

Кейсы антифрода и рекомендательной системы на базе Tarantool

ArrayIcon

Сложности проектирования высоконагруженных систем и как их преодолеть

ArrayIcon

Сертификация ФСТЭК для ПО Tarantool

ArrayIcon