День 1877. #ЧтоНовенького
Garnet — Быстрое Хранилище Кэша с Открытым КодомИсследователи Microsoft уже почти десять лет работают над механизмами хранения данных для поддержки быстрого развития интерактивных веб-приложений и сервисов. Новая система хранения кэша Garnet, которая предлагает ряд преимуществ по сравнению с другими хранилищами кэша, была развернута в нескольких сервисах в Microsoft, например, в платформе Windows & Web Experiences, Azure Resource Manager и Azure Resource Graph, а также теперь
доступна для загрузки.
Проблема с хранилищем кэшаПрограммный уровень хранилища кэша, развернутый как отдельно масштабируемый удаленный процесс, может снизить затраты на запросы данных и повысить производительность приложений. Это способствовало развитию индустрии хранилищ, включая многие системы с открытым исходным кодом, такие как Redis, Memcached, KeyDB и Dragonfly.
Современные кэши предлагают богатые API и наборы функций: необработанные строки, аналитические структуры данных, такие как Hyperloglog, и сложные типы данных, такие как отсортированные наборы и хэши. Они позволяют пользователям задавать точки восстановления и восстанавливать кэш, создавать фрагменты данных, поддерживать реплицированные копии, а также поддерживать транзакции и пользовательские расширения.
Однако существующие системы достигают этого богатства функций за счёт сохранения простоты конструкции системы, что ограничивает возможность полного использования новейших аппаратных возможностей (например, нескольких ядер, многоуровневого хранилища, быстрых сетей). Кроме того, многие из этих систем специально не предназначены для лёгкого расширения разработчиками приложений или для хорошей работы на различных платформах и операционных системах.
GarnetВ Microsoft Research работу над базой данных «ключ-значение» начали в 2016 году, тогда она называлась FASTER. С 2021 года, основываясь на требованиях сценариев использования, в Microsoft начали создавать новое удаленное хранилище кэша со всеми необходимыми функциями – Garnet.
Преимущества1. Использует популярный протокол RESP, что позволяет использовать Garnet из немодифицированных клиентов Redis, доступных сегодня в большинстве языков программирования.
2. Предлагает гораздо лучшую масштабируемость и пропускную способность благодаря множеству клиентских подключений и небольшим пакетам, что приводит к экономии затрат для крупных приложений и сервисов.
3. Меньшие задержки на 99-м и 99,9-м процентилях, что имеет решающее значение для реальных сценариев.
4. Кроссплатформенный, расширяемый и современный. Cпроектирован таким образом, чтобы под него можно было легко разрабатывать ПО без ущерба для производительности. Благодаря использованию .NET, обеспечивает высочайшую производительность как в Linux, так и в Windows.
Возможности1. Широкий спектр API, включая необработанные строки, аналитические и объектные операции, описанные ранее.
2. Режим кластера с сегментированием, репликацией и динамической миграцией ключей.
3. Транзакции RESP на стороне клиента и хранимые процедуры на стороне сервера на C#, что позволяет пользователям определять собственные операции как с необработанными строками, так и с новыми типами объектов.
ПроизводительностьСудя по тестам в созданной Microsoft (sic!) утилите
Resp.benchmark, Garnet превосходит конкурентов по производительности. Подробности можно найти
здесь.
Кластерный режимПомимо выполнения на одном узле, Garnet поддерживает режим кластера, который позволяет пользователям создавать и управлять сегментированным и реплицируемым развёртыванием. Garnet также поддерживает эффективную и динамическую схему миграции ключей для перебалансировки узлов. Пользователи могут использовать стандартные команды кластера Redis для создания кластеров Garnet и управления ими, а узлы общаются между собой для обмена данными и развития состояния кластера.
Источник: https://www.microsoft.com/en-us/research/blog/introducing-garnet-an-open-source-next-generation-faster-cache-store-for-accelerating-applications-and-services/