Хранение большого количества состояния в кластере сервисной фабрики

У меня есть сценарий, где нам нужно хранить х *100 ГБ данных. В общем, данные являются хорошим кандидатом на постоянное состояние для субъекта (хорошо разделенного, используемого только конкретными субъектами) в самом кластере сервисных структур.

Рекомендуется ли для данных такого масштаба хранилище постоянной структуры обслуживания? (Наша вычислительная нагрузка будет довольно низкой, поэтому увеличение виртуальных машин только для сохранения состояния нежелательно).

Как величина постоянного состояния влияет на задержку перемещения разделов между узлами в кластере?

1 ответ

Решение

Что ж, давайте посмотрим, как состояние хранится в сервисе (это относится и к актерам).

Компонент, который хранит ваши данные в вашем сервисе, называется State Provider. Поставщики состояний могут быть только в памяти или в памяти + локальный диск. Поставщик состояния по умолчанию, который вы получаете со службой субъекта, - это оперативная память + локальный диск, но он хранит только горячие данные в памяти, поэтому ваши требования к хранению не ограничиваются памятью. Сравните это с поставщиком состояния Reliable Collections, который в настоящее время хранит все данные как в памяти, так и на локальном диске, хотя в будущем выпуске у него также будет возможность хранить только горячие данные в памяти и выгружать оставшиеся данные на локальный диск.

Учитывая, что вы используете акторы, вы можете использовать поставщика состояния актера по умолчанию, что означает, что ваша емкость данных ограничена локальным дисковым хранилищем на ваших машинах или виртуальных машинах, что должно быть разумным для хранения 100 ГБ. Как правило, мы не перемещаем целые разделы, но иногда Service Fabric необходимо перестраивать реплику вашей службы, и чем больше у вас данных, тем больше времени потребуется для создания реплики. Однако это на самом деле не влияет на задержку вашей службы, поскольку у вас есть несколько реплик в службе с состоянием и обычно у вас достаточно копий, чтобы вам не нужно было ждать, пока другая будет перестроена. Восстановление реплики обычно происходит "в стороне".

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

Другие вопросы по тегам