Ткань Azure Service Fabric, по-видимому, ориентирована на сценарии, в которых все данные могут вписываться в ОЗУ, а постоянство используется в качестве хранилища резервных копий. Надежные службы предназначены для хранения информации в надежных коллекциях, в которых используется log-checkpoint system, где записанная информация записывается в ОЗУ. Между тем, для Надежных Акторов default actor state provider - это «распределенное хранилище ключей, предоставляемое платформой Service Fabric». Это, по-видимому, указывает на то, что будут применяться те же ограничения.Переход между службой состояния и внешним сохранением в лазурной службе Fabric
Могут быть, однако, ситуации, в которых вы хотели бы использовать Сервисную ткань для «горячих данных», но пишите «холодные данные» в какую-то постоянную память. Каковы наилучшие методы обработки этого перехода?
В Орлеане это, кажется, обрабатывается автоматически, используя хранилище сохранения, такое как таблицы Azure. Но, по-видимому, основная цель дизайна Сервисной ткани и надежных коллекций заключается в том, чтобы избежать необходимости использования внешних сервисов, тем самым улучшая местоположение данных. Текущая документация предвидит возможность переместить данные в какой-либо постоянный магазин для disaster recovery and analytics, но в нем не обсуждается возможность перемещения данных взад и вперед между поддерживаемыми постоянством актерами в памяти и более постоянными формами хранения.
Возможный ответ заключается в том, что Сервисная ткань уже делает это. Возможно, надежный словарь имеет встроенный механизм переключения между хранящимся в памяти хранилищем и постоянным хранилищем.
Или, может быть, ответ заключается в том, что нужно управлять этим. Один из подходов может заключаться в том, чтобы актер следил за тем, как он «горячий», и, при необходимости, переключая его хранилище персистентности. Но это жертвует одним из преимуществ модели Actor, автоматического распределения и освобождения актеров. Аналогичным образом мы можем периодически удалять элементы из надежного словаря и добавлять его в какой-либо другой хранилище сохранения, а затем добавлять их обратно. Опять же, это требует знания того, когда имеет смысл сделать переход.
Несколько примеров могут помочь кристаллизовать это: «номеров»
(1) Предположим, что мы реализуем многопользовательскую игру с различными Нам не нужны все комнаты в памяти сразу, но мы должны перенести их в память и использовать локальное сохранение в качестве резервной копии, когда игроки присоединятся к ним.
(2) Предположим, что мы реализуем только B-Tree с добавлением только как часть базы данных. Искушение состояло бы в том, чтобы каждый узел B-Tree был субъектом с точки зрения состояния. Мы хотим, чтобы горячие b-деревья оставались в памяти, но, конечно, весь индекс не может быть в памяти. Похоже, что это основной сценарий, который уже реализован для таких вещей, как DocumentDB, но мне не ясно, из документации, как это сделать.
Связанный вопрос, который я нашел, это here. Но этот вопрос фокусируется на том, когда использовать Azure Service Fabric и внешние сервисы. Мой вопрос в том, есть ли необходимость перехода между ними, или у Azure Service Fabric уже есть все возможности, необходимые здесь.
Благодарим вас за разъяснение. Таким образом, KVS-магазин отличается от надежных коллекций тем, что не стремится постоянно сохранять все состояние в памяти. (Или, может быть, надежные коллекции также иногда попадают в и из памяти, несмотря на документацию, которая, как представляется, предлагает иначе?) Это имеет гораздо больший смысл. Конечно, в какой-то момент у хранилища KVS на диске будет нехватка памяти, но я предполагаю, что этого можно избежать путем мониторинга. – user357783
Надежные коллекции также сохраняют свое состояние на диске. В документации на этой странице указано это явно. http://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-reliable-collections/. «Сохранено: данные сохраняются на диске для обеспечения долговечности от крупномасштабных отключений (например, отключения питания центра обработки данных)». Было ли какое-либо место в документации, которая говорила иначе? –
Кроме того, чтобы решить проблему нехватки дискового пространства, вы можете прочитать статью о масштабируемости (http://azure.microsoft.com/en-us/documentation/articles/service-fabric-concepts-scalability/) для стратегии масштабирования вашего обслуживания и избежать этой ситуации. Мониторинг также является хорошей идеей, как вы уже указывали. –