Вы, вероятно, имеете в виду объекты, а не классы; -)
Архитектура масштабируемой обработки обычно включает в себя следующее:
В любой момент времени в памяти может быть только ограниченное количество объектов (может быть один, может быть десять, может быть сотня, но если это должно быть "сколько мне понадобится", то вы должны переосмыслить свой дизайн).Это гарантирует, что вы никогда не исчерпаете память, потому что максимальное использование памяти фиксировано.
Все объекты хранятся в базе данных.Когда вам нужен объект, которого нет в памяти, загрузите его из базы данных.Не храните его, если он не является частью ранее упомянутого краткого списка объектов.
Чтобы воспользоваться памятью, не используемой вашим коротким списком, вставьте слой кэширования между вашим кодом и базой данных, чтобы, если вы в конечном итоге извлекаете один и тот же объект много, затраты на это будут снижены.,Стратегия кэширования означает, что ваше программное обеспечение будет обменивать память на скорость только при наличии доступной памяти.
Попробуйте работать с небольшими транзакциями, которые читают некоторые вещи, записывают некоторые вещи обратно, затем начинают снова.Это помогает вашему программному обеспечению возобновить работу с того места, на котором оно было оставлено, в случае сбоя или сбоя во время его обработки.База данных должна быть достаточной, чтобы начать все заново с того места, где она ушла.
Работая с независимыми транзакциями, можно иметь несколько рабочих процессов (либо на одном компьютере, либо в вычислительной сетке), работающих в одной базе данных.Если вы можете, реализация транзакционной модели, основанной на работниках, очень важна для производительности и упрощает просто добавление большего количества компьютеров к проблеме.