Tarantool 2.10: сжимаем данные, шифруем трафик, помогаем расследовать инциденты

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В Tarantool 2.10 добавили новые инструменты как для Enterprise версии, так и для Community Edition. А еще мы запустили Tarantool по модели DBaaS в облаке VK Cloud Solutions. Далее подробно расскажем про главные обновления: шифрование соединений между репликами и клиентом, сжатие данных в памяти, расширенные возможности аудита и поделимся ссылкой на полный список изменений

Сжатие 

Tarantool всегда умел сжимать данные на диске. Теперь Tarantool Enterprise позволяет сжимать данные, которые хранятся в оперативной памяти. Это позволяет экономить место в памяти, что снижает потребность в закупке дополнительного железа. Особенно это актуально, если вы храните в памяти длинные строчки и/или JSON объекты. На некоторых датасетах можно снизить объем хранимых данных в оперативной памяти до 60%.

Сжатие можно запустить прямо на работающем кластере. При этом продолжать обслуживать запросы как обычно. Это уменьшит размер хранимых данных и позволит сократить количество используемых серверов или продлить время возможного ожидания закупок. 

Поддерживаются алгоритмы ZSTD, LZ4. Первый сжимает лучше, но тратит чуть больше времени на процесс компрессии. Второй сжимает менее эффективно, но и работает быстрее.  

Для использования сжатия не нужно пересоздавать спейс с данными. Просто укажите, какие поля необходимо сжимать в функции space:format(). Потом запустите фоновую миграцию через space:upgrade({ background = true }). Дальше все работает прозрачно: при записи данные сами сжимаются, при чтении разжимаются. 

Сжимать данные можно в том числе в уже существующих хранилищах. 

Ссылка на документацию.

Шифрование

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

Раньше у Tarantool не было встроенных инструментов для безопасного общения с сервисами внутри компании. Были кастомные решения, которые делались под клиента. Теперь такой инструмент появился в продукте — в новой версии Tarantool Enterprise весь трафик шифруется.

Шифрование позволит:

  • защитить взаимодействие сервисов с Tarantool;

  • защитить взаимодействие инстансов Tarantool между собой;

  • выставлять доступ к Tarantool напрямую в интернет.

Злоумышленник не сможет прочитать данные, даже если он смог перехватить ваш трафик.

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

В новой версии поддерживается протокол TLS. Работает это с помощью алгоритма ГОСТ 34.10-2018ГОСТ, а также популярных зарубежных алгоритмов. Это позволяет использовать Tarantool в стеке и удовлетворить требованиям информационной безопасности любой компании.

Ссылка на документацию.

Аудит

Неправомерное использование данных сотрудниками, попытки хакерских атак и другие инциденты — это то, от чего не защищена ни одна компания. В новом релизе мы расширили возможности аудит-лога в Tarantool Enterprise. Теперь расследовать инциденты будет проще. 

Система аудита позволит быстро понять: 

  • что происходило в тот или иной момент времени в системе;

  • какие запросы и изменения выполнялись конкретными пользователями. 

Логи теперь можно писать в JSON, CSV. Сами записи конфигурируются. Работает по тому же принципу, что и в других распространенных базах данных. Типы событий, которые необходимо логировать, можно фильтровать. Также можно создавать собственные типы событий через API Tarantool.

Аудит-лог по-прежнему включается через опцию audit_log в box.cfg{}. Ничего не поменялось.

А что еще?

Tarantool в облаке

Community-версия Tarantool теперь доступна как управляемая база данных на облачной платформе VK Cloud Solutions. Tarantool в облаке уже настроен и полностью готов к загрузке данных. Облачная версия снижает порог входа: для работы с Tarantool в облаке не нужно программировать на Lua, разбираться в шардировании и самостоятельно администрировать решение.

Для Community и Enterprise версии

  • Добавили поддержку ограничений на значения полей. Это позволит проверять записываемое значение перед вставкой с помощью:

    1. любой пользовательской Lua-функции; 

    2. внешнего ключа.

Эти механизмы называются Constraints и Foreign keys соответственно.

Пример API для constraints: 

box.schema.func.create('check_day_of_year', 
  										 { language = 'LUA', 
    										 is_deterministic = true, 
    										 body = 'function(x, c) return x >= 1 and x <= 366 end'})
space:format({.., { name = 'day_of_year', constraint = 'check_day_of_year'}, ..})

Пример API для Foreign keys:

space:format({.., { name = 'country_id', 
    							  foreign_key = { 
        							country = { space = 'countries', field = 'id'}
      							}
    							}, ..
  					})
  • Ускорили шардинг: вызовы удаленных хранимых процедуры с vshard ускорились до 70%. Если используется модуль crud, то вы также заметите прирост производительности.

  • Сэкономили место: маленькие строчки теперь хранятся оптимальнее — на одну строчку в памяти нужно на 4 байта меньше. За счет этого можно сэкономить до нескольких сотен МБ на некоторых датасетах. Доступно после обновления. Дополнительно настраивать ничего не нужно.  

  • Расширили поддержку транзакций в протоколе для коннекторов: теперь можно держать транзакции открытыми и при этом выполнять другие операции.

Только в Tarantool Enterprise: 

  • ⚡️ Научились менять схему данных в фоновом режиме. Теперь не нужно вручную мигрировать данные в новый спейс и тратить время на написание, обкатку и запись миграционного скрипта.

    Как это работает? Всё это будет работать через функцию space:upgrade()

    • выполнение команды space:upgrade() приводит к моментальной смене формата спейса (так что вставка новых данных и выборка должна соответствовать новому формату);

    • спейс не блокируется на чтение/запись, вместо этого выборка отдает кортежи в новом формате (вне зависимости сконвертированы они уже или нет);

    • команда запускает фоновую задачу, которая обходит все кортежи спейса и приводит их к новому формату согласно upgrage_function.

  • ⚡️ Реализовали поддержку LDAP. Все привычно и есть то, что ожидается. Почитать документацию можно тут.

  • ⚡️ Начали записывать внутреннюю информацию и статистику Tarantool на диск.   Назвали это Flightrec. Это позволит быстрее понимать нашей технической поддержке — что случилось и как решать проблему.

  • Полный список изменений на github.

  • Скачать Tarantool можно на официальном сайте.

  • Получить помощь можно в Telegram-чате.

  • Познакомиться с базовыми возможностями платформы можно прямо в браузере с помощью сервиса Try Tarantool.

Источник: https://habr.com/ru/company/vk/blog/663240/


Интересные статьи

Интересные статьи

Привет! Меня зовут Саша Шутай, я тимлид в AGIMA. В прошлой статье я рассказывал, что делать, если на проекте Bitrix сожительствует с Vue.js и поисковые боты не видят контента сайта. А в этой помогу ра...
Вопрос производительности всё чаще обсуждается во фронтенд сообществе, поскольку продукты, приложения и сайты становятся сложнее — данные, графика, онлайн взаимодействие ...
В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU. Дано Корпоративн...
Те, кто собираются открывать интернет-магазин, предварительно начитавшись в интернете о важности уникального контента, о фильтрах, накладываемых поисковиками за копирование материалов с других ресурсо...
Зачем такой корпорации, как МегаФон, Tarantool в биллинге? Со стороны кажется, что обычно приходит вендор, приносит какую-то большую коробку, втыкает штекер в розетку — вот и биллинг! Когда-то та...