
Как мы решали проблемы масштабирования с помощью клеточной архитектуры
17 июня 2025 г.Я поделился преимуществами клеточной архитектуры вмоя предыдущая статьяПолем В этом я буду проходить реальный сценарий, включающий проблемы масштабирования в нашей службе, вызванные ограничениями квоты в зависимости от обслуживания и тем, как мы преодолеем их с помощью клеточного подхода. Приняв эту архитектуру, мы запустили несколько ячеек для устранения ограничений квот и достигли очень масштабируемого обслуживания
Фон
Мы запустили наши услуги по производству без ячеек. Сервис представлял собой единый микросервис, который можно рассматривать как службу с фиксированной гигантской ячейкой. Каждый запрос отправлялся в один экземпляр Сервиса. После запуска его производства в течение 6 месяцев мы заметили масштабирование узких мест - одна из зависимостей ограничивает наше масштабирование. У них была фиксированная квота на счет. Единственный способ решения этой проблемы - запустить службы в нескольких учетных записях, чтобы каждая учетная запись получила фиксированную квоту. Запустив несколько экземпляров услуги в разных счетах (ячеек), мы могли бы потенциально обслуживать множество запросов и, следовательно, достичь желаемого масштабирования.
Запись о проблеме
Когда мы решили перейти к архитектуре на основе ячейки, мы обнаружили много проблем, таких как государственная служба и прямая зависимость и т. Д. Принятие архитектуры на основе ячейки стало сложной задачей для всей команды и требовало много усилий.
Службы государственных услуг препятствуют перемещению в сотовой архитектуре, поскольку они ограничивают обработку запроса в выделенный экземпляр Сервиса. Кроме того, прямая зависимость создает тесную связь между запросом и узлом обработки. Для достижения масштабируемости мы должны иметь возможность обрабатывать запросы на любой из наших случаев услуг.
План исполнения
После запуска службы в производстве в течение 6 месяцев мы получили справедливое понимание его компонентов. Итак, мы начали анализировать каждый компонент обслуживания, чтобы ответить на следующие вопросы для оценки стратегий принятия клеток:
- Какие компоненты должны быть перенесены в клеточную архитектуру?
- Каковы проблемы перемещения компонента в ячейку?
- Как можно сделать компонент/сервис без сохранения состояния?
- Что нужно, чтобы удалить прямую зависимость?
- Как может быть автоматизировано создание ячеек, которое включает в себя создание учетной записи, а затем добавлено в конвейер развертывания?
- Что нужно, чтобы сделать миграцию клеток? Можно избегать этого?
- Как будет выглядеть слой маршрутизации?
- Как будет конечная точка службы для внешних и внутренних пользователей/сервисов?
Основываясь на оценке, мы выяснили две важные вещи:
Служба без гражданства
Гибкий слой маршрутизации.
Служба без гражданства
Мы начали анализировать все компоненты хранения наших услуг. В основном у нас были DynamoDB и S3, где мы храним метаданные клиентов и метаданные обработки. Чтобы сделать обслуживание без сохранения состояния, мы создали услугу метаданных и перенесли все метаданные клиента и метаданные обработки, которые делали услугу государственным. Обнаружил функциональность уровня хранения с четко определенными API, чтобы мы могли получить к нему доступ из любой ячейки.
Гибкий тонкий слой маршрутизации
Мы использовали гибридный подход, где мы используем последовательное хеширование кольца и картирование таблиц. Последовательное кольцевое хэширование используется для сопоставления большинства запросов с картированием CEL, L и таблицы используется для переопределения некоторой конфигурации. Например, если мы хотим разделить обработку для большого клиента, мы используем картирование таблицы. Сопоставление таблицы доступно в памяти, так что мы держим слой маршрутизации как можно более тонким.
Исход
Благодаря созерцанию и тщательному анализу мы сделали наши услуги без сохранения состояния, что упростило принятие клеточного подхода в нашем продукте. Кроме того, следование передовым методам, таким как использование компонентов без состояния и поддержание тонкого уровня маршрутизации, помогло нам создать гибкую сотовую службу, способную постоянно поддерживать растущие требования к масштабе. Я настоятельно рекомендую вам исследовать архитектуру сотовой связи, чтобы сделать ваши услуги более масштабируемыми.
Оригинал