Есть ли у кого-нибудь хороший ресурс по реализации стратегии пула общих объектов для ограниченного ресурса в духе объединения каналов Sql? (т.е. будет полностью реализовано, что он является потокобезопасным).
Чтобы следить за запросом @Aaronaught для разъяснения, использование пула для запросов на балансировку нагрузки для внешней службы. Положить его в сценарий, который, вероятно, будет легче сразу понять, в отличие от моего прямого подхода. У меня есть объект сеанса, который работает аналогично объекту ISession
из NHibernate. Каждый уникальный сеанс связывает его с базой данных. В настоящее время у меня есть один длинный сеансовый объект, и я сталкиваюсь с проблемами, когда мой поставщик услуг снижает ставку за использование этого отдельного сеанса.
Из-за отсутствия ожиданий того, что один сеанс будет рассматриваться как долговременная учетная запись службы, они, по-видимому, рассматривают его как клиента, который забивает их службу. Это подводит меня к моему вопросу здесь, вместо того, чтобы иметь 1 отдельный сеанс, я создавал бы пул разных сеансов и разбивал бы запросы до службы через эти несколько сеансов вместо создания одной фокальной точки, как это было раньше.
Надеюсь, этот фон предлагает некоторую ценность, но для прямого ответа на некоторые из ваших вопросов:
Q: Являются ли объекты дорогими для создания?
A: Нет объектов - пул ограниченных ресурсов
Q: Будут ли они приобретены/выпущены очень часто?
A: Да, еще раз можно подумать о NHibernate ISessions, где 1 обычно приобретается и выпускается в течение всего запроса каждой страницы.
Q: Будет ли простой доступ для первого приема достаточным или вам нужно что-то более интеллектуальное, т.е. это предотвратит голодание?
A:. Простое распределение типа циклического типа было бы достаточным, голодом я предполагаю, что вы имеете в виду, если нет доступных сеансов, которые вызывающие блокируются в ожидании релизов. Это не применимо, так как сеансы могут использоваться разными абонентами. Моя цель - распределить использование на нескольких сеансах, а не на один сеанс.
Я считаю, что это, вероятно, расхождение с обычным использованием пула объектов, поэтому я изначально оставил эту часть и планировал просто адаптировать шаблон, чтобы позволить совместное использование объектов, а не позволять ситуации голодания когда-либо возникать.
Q: Как насчет таких вещей, как приоритеты, ленивые против нетерпеливой загрузки и т.д.? A: Нет приоритетов, для простоты просто предположим, что я создам пул доступных объектов при создании самого пула.