Объекты Singleton, созданные в облачной среде

for row in resultproxy:
    row_as_dict = dict(row)
2
задан suish 13 July 2018 в 05:06
поделиться

2 ответа

Применение шаблона singleton в Java-мире почти автоматически означает создание одноэлементных объектов данного класса. Объекты классов живут в контексте JVM, «единственный» экземпляр - для VM-процесса.

На самом деле он может стать хуже, поскольку несколько загрузчиков классов с одной JVM могут приводить к нескольким " (например, в приложении JEE, где изолированы загрузчики классов).

Но singleton является шаблоном, он может абстрактным образом применяться к приложения или системы в целом. Конечно, технология или тип компонента, возможно, придется изменить.

Распределенные системы также могут иметь понятие «одноэлементный компонент». Хороший пример использования сервисов singleton для запуска кластера. Это, конечно, переопределяет масштаб объекта singleton, но это почти ничего нового, поскольку в любом случае мы всегда использовали отдельные экземпляры определенных типов (например, одну базу данных) в системе с несколькими приложениями.

1
ответ дан ernest_k 17 August 2018 в 13:39
поделиться
  • 1
    Рад, что вы добавили часть о «singleton». компонентов и привел пример. Я как раз собирался написать свой собственный ответ в этом отношении ;-) – GhostCat 13 July 2018 в 07:26

Объект singleton создается в контексте одного Java-процесса, работающего в одном экземпляре JVM. Это не имеет никакого отношения к тому, работает ли процесс и JVM на локальной физической машине или в контейнере или на виртуальной машине в облаке.

Кроме того, даже на одной машине несколько экземпляров того же процесса каждый будет генерировать собственный экземпляр объекта singleton. Нет ничего волшебного в синглтонах, которые могли бы привести к тому, что отдельные процессы разделили бы один экземпляр.

Наиболее типичным методом для создания одноэлементных объектов является статический член ссылки на тип экземпляра объекта. Поскольку типы создаются только один раз JVM, это подразумевает единственную уникальную ссылку на соответствующий объект (хотя нет ничего, что предотвращало бы создание нескольких экземпляров этого объекта в общем смысле).

Возвращаясь к ваш исходный вопрос - если предположить, что «облачная среда» означает распределенное приложение, развернутое на нескольких компьютерах, подключенных по сети, то опять же по умолчанию каждая машина, запускающая этот процесс, получит свой отдельный экземпляр «singleton», , если нет какой-либо другой распределенной структуры данных, которая лежит в основе «синглтонов», чтобы заставить их делиться государством и т. д.

Кстати, вы не спрашивали, но: Что так плохо в одиночных играх?

4
ответ дан Mike Dinescu 17 August 2018 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: