AppSharding

HighLoad++
Service Mesh Big Survey. Провели обзор текущих подходов к построению Service Mesh совместно с разработчиками Synapse
Joker 2022
Proxyless Service Mesh for gRPC Java Services. Поговорили о микросервисах и паттернах Service Mesh. Что это такое и для чего придумано?
Saint HighLoad++
Евгений Лукин, Chief IT manager из команды Synapse, описал кейс успешной замены иностранной шины данных в Сбере
HighLoad++ Foundation
Максим Чудновский, TechLead из команды Synapse, выступил на HighLoad++ Foundation с докладом «Istio Service Mesh в федеративных топологиях»
Synapse на Habr
Как AppSharding помогает вам

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

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

Перенос данных между наборами данных без недоступности для дедубликации пользовательских данных, перенос данных между приложениями различных версий или выделение тенанта в отдельный шард

Создание шардированного приложения с единым пространством данных приложения при использовании различных стратегий шардирования - поиск по индексу, диапазон, консистентный хеш, тенантная принадлежность, версии приложения, а также некоторые их комбинации
Легко реализуемое горизонтальное масштабирование наборов данных с сохранением стратегии шардирования
Возможность создания сервисов с различным уровнем тенантной изоляции

Компонент позволяет объединить в единое пространство данные приложений различных версий, например, несовместимые по модели данных или построенные на базе данных различных вендоров. Шардирование с учетом тенантов позволяет обеспечить в рамках одного прикладного сервиса как физическую тенантную изоляцию (один или несколько датасетов), так и коммунальное размещение данных тенантов (в одном или нескольких датасетов) для уменьшения затрат потребителей.
Шардирование на уровне приложений обеспечивает поддержку создания приложения с шардами, поддерживающими различные уровни обслуживания.
Возможность предоставлять различные уровни позволяет привлечь большее количество потенциальных потребителей, а также снизить загрузку и резервирование ресурсов

Снижение стоимости размещения сервисов на платформе при сохранении требуемого уровня обслуживания потребителей сервиса
Возможность создания сервисов с коммунальным размещением данных тенантов для снижения расходов

Возможность использования приложениями любого количества шард в отрыве от конкретного вендора
Предоставляет возможность настройки как с помощью файлов конфигурации (концепция Everything-As-A-Code), так и с помощью удобного АРМ пользователя
Архитектура и как это работает
Application Router
Выступает в роли Application Load Balancer и проксирует запросы L7 в сконфигурированную группу развертывания (Availability Zones – AZ) для определенной инсталляции
Route EFS
Компонент предназначен для определения актуального маршрута (FQDN) на основе ключа шардирования, полученного от APPR, а также заранее сконфигурированных гибких стратегий маршрутизации
Cross-cluster index
Ведение распределенного индекса - реестра соответствий ключей шардирования и кодов шардов.
Поддерживает:
- Получения кода шарда по запросу
- Изменение записей в индексе
- Первичная загрузка индексов
- Автоматическое удаление ключей из индекса
Data Transfer
Оркестрирует перенос ваших данных между шардами приложения при использовании механизма AppSharding, а также помогает:
- Упростить миграцию данных между шардами
- Гибко распределять данные между шардами вашего приложения с использованием Cross-cluster index (CCI)
- Плавно переносить данные с одной версии приложения на другую