Google PCD: Данные приложений, состояние и паттерны хранения — Руководство по подготовке

Часть Google Professional Cloud Developer — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Google, или пройдите тесты на время на ExamRoll.io.

Обзор

Современные приложения в Google Cloud обычно сочетают несколько хранилищ данных для достижения баланса между задержкой, согласованностью, масштабируемостью, стоимостью и операционной сложностью. Выбор подходящих сервисов и паттернов, а также понимание их режимов сбоя, является ключевым аспектом отказоустойчивого проектирования. В этом разделе обобщаются практические рекомендации для Cloud SQL, Cloud Spanner, Firestore, Bigtable, Memorystore и Cloud Storage, а также рассматриваются вопросы миграции, секционирования и защиты данных.

Реляционные данные в Cloud SQL

Cloud SQL предоставляет управляемые MySQL, PostgreSQL и SQL Server с привычной семантикой СУБД.

Распространенные режимы сбоев и способы их устранения:

Планетарно-масштабируемые реляционные данные в Cloud Spanner

Cloud Spanner обеспечивает горизонтальную масштабируемость с возможностью глобальной согласованности.

Компромиссы:

Операционные хранилища NoSQL: Firestore и Bigtable

Выбирайте модель NoSQL, соответствующую вашим шаблонам запросов и профилю пропускной способности.

Паттерны кэширования и объектного хранения

Миграция, согласованность, секционирование и защита данных

Практический сценарий

Компания Aurora Outfitters переносит монолитную платформу электронной коммерции в Google Cloud. Им необходимо: 1) выполнить lift-and-shift миграцию MySQL для снижения рисков, 2) обрабатывать загрузку медиафайлов продуктов объемом 500 МБ, не перегружая приложение, 3) масштабировать пропускную способность на чтение для каталогов продуктов и 4) применять ограничения скорости (rate limits) для каждого пользователя во время пиковых продаж.

Подход:

  1. Мигрировать MySQL в Cloud SQL с частным IP-адресом и региональной высокой доступностью (HA)

    • Обоснование: Частный IP-адрес устраняет доступ извне и необходимость в списках разрешенных IP, упрощая безопасное подключение из GKE и Compute Engine. Региональная HA защищает от сбоев на уровне зоны; ожидаются кратковременные разрывы соединений при отработке отказа, поэтому приложение будет реализовывать логику повторных транзакций и переподключения.
  2. Включить автоматическое резервное копирование и PITR, а также проверить восстановление

    • Обоснование: Автоматические резервные копии и журналы транзакций позволяют выполнять восстановление на определенный момент времени после ошибок пользователя или приложения. Еженедельное плановое восстановление в нерабочий экземпляр подтверждает пригодность резервных копий и позволяет измерить RTO.
  3. Добавить реплику для чтения для запросов к каталогу

    • Обоснование: Перенос запросов к каталогу на реплику для чтения снижает конкуренцию за ресурсы на основном экземпляре. Приложение читает с основного экземпляра, когда требуется согласованность «запись после чтения» (корзина/оформление заказа), и с реплики для просмотра каталога, учитывая компромиссы, связанные с задержкой репликации.
  4. Внедрить пулинг соединений на стороне приложения и ограничить параллелизм

    • Обоснование: PgBouncer/HikariCP ограничивает и повторно использует соединения, предотвращая «штормы» соединений во время автомасштабирования и отработки отказа HA. Размер пулов определяется количеством ядер ЦП, а не максимальным числом подов, что предотвращает перегрузку.
  5. Перенести загрузку медиафайлов в Cloud Storage с использованием подписанных URL и возобновляемых загрузок

    • Обоснование: Приложение выдает клиентам короткоживущие подписанные URL для прямой загрузки. Возобновляемые загрузки подходят для ненадежных сетей; медиасервис прослушивает уведомления о завершении из Pub/Sub для запуска обработки. Заголовки предварительных условий (например, ifGenerationMatch) защищают от гонок перезаписи.
  6. Внедрить Memorystore for Redis для кеширования страниц, сессий и ограничения скорости

    • Обоснование: Кеши со сквозным чтением (read-through) снижают нагрузку на базу данных для страниц продуктов с TTL, согласованным с частотой обновлений. Данные сессий хранятся в Redis как эфемерные с коротким TTL; состояние приложения остается в Cloud SQL. Стратегия токенов с фиксированным окном использует INCR/EXPIRE для ограничения количества запросов от пользователя. Кеш рассматривается как неавторитетный; приложение устойчиво к потере кеша и заполняет его при промахах.
  7. Подготовить поэтапный переход на Cloud Bigtable для функций просмотра каталога с высокой пропускной способностью

    • Обоснование: По мере роста трафика денормализованные, оптимизированные для чтения представления каталога переносятся в Bigtable. Ключи строк спроектированы как bucket#category#reverse_ts для распределения операций записи и поддержки списков, упорядоченных по времени, без создания «горячих точек».
  8. Установить процедуры миграции схемы и отката

    • Обоснование: Миграции являются аддитивными: добавляются столбцы/индексы, выполняется обратное заполнение с помощью идемпотентных заданий, развертывается код, который читает/пишет в оба формата, а затем старые поля удаляются. Флаги функций (feature flags) защищают новые пути выполнения кода; откат отключает запись в новые поля без деструктивных DDL-операций.
  9. Установить политики жизненного цикла и защиты данных

    • Обоснование: Бакеты Cloud Storage используют правила жизненного цикла для перемещения миниатюр в более «холодное» хранилище и удаления устаревших временных загрузок. Резервные копии Cloud SQL и (по мере внедрения) Spanner/Bigtable регулярно восстанавливаются для проверки. Журналы аудита фиксируют рабочие процессы удаления; в документации по соответствию требованиям признается, что сборка мусора (GC) в Bigtable является асинхронной.
  10. Внедрить повторные попытки на стороне клиента и сервера с усеченной экспоненциальной задержкой

    • Обоснование: Cloud Storage может возвращать ошибки 429/5xx во время всплесков нагрузки; экспоненциальная задержка сглаживает нагрузку и снижает частоту ошибок. В операциях с базами данных и кешем используются ключи идемпотентности для обеспечения безопасных повторных попыток, особенно во время отработки отказа и кратковременных сбоев в сети.

Этот план обеспечивает немедленное снижение рисков за счет использования Cloud SQL с частным подключением и HA, поддерживает отзывчивость и экономичность приложения с помощью кеширования и загрузок по подписанным URL, а также создает четкий путь к масштабированию пропускной способности на чтение и устойчивости данных по мере роста трафика.


Проектирование API · Все домены · Идентификация

Отработать эти вопросы → · Тесты на время на ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Сдайте экзамен →

Просмотреть Google →

Related guides

Все включено

Одна подписка. Каждый экзамен.

Каждый план открывает неограниченный поиск ответов, практические тесты, объяснения AI и полную библиотеку ресурсов — на более чем 20 языках.

Ежемесячно
24.87
Just €0.83/day
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

Лучшая цена
12 месяцев
179.87
Just €0.49/daySave 40%
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

✓ Включен бесплатный план · ✓ Отмена в любое время · ✓ Все планы открывают полный продукт