LINUX.ORG.RU

Распределенный семафор


0

1

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

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

Кто здесь чем пользуется для подобных вещей, делитесь опытом! ;)

Зачем это нужно - хочется управлять ресурсами, причем ресурсы это некоторые сервисы. Сам сервис ничего про это не знает. В рамках одной машины семафоры подходят идеально.

★★★★

самое лучшее это zookeeper, но мне кажется что должен же быть еще какой-то способ.

Кроме DLM? Можно на коленке написать процесс-менеджер, но это будет просто еще один корявый DLM.

tailgunner ★★★★★
()

А тебе точно нужен распределенный семафор? Сам ресурс не может иметь семантику интерфейса «act-then-check»? Семафор нужен если тебе нужно группу ресурсов контролировать.

dizza ★★★★★
()

erlang смотрит тебе в глаза и ждёт твоих объятий.

anonymous
()
Ответ на: комментарий от Reset

Помимо того что в нем это реализуется как-то криво, ничем. Просто думал что могут быть другие варианты.

OxiD ★★★★
() автор топика
Ответ на: комментарий от dizza

Не, сам ресурс может быть вообще мне не подконтролен.

Грубая аналогия - нас просят не превышать определенное количество одновременных запросов к серверу. Мы ставим семафор в значение равное ограничению и каждый клиент который хочет сделать запрос на сервер должен декрементить семафор.

OxiD ★★★★
() автор топика
Ответ на: комментарий от OxiD

DLM - это обобщенное название вида программ. Zookeeper - это DLM, есть Redhat DLM, Lustre DLM и т.д.

tailgunner ★★★★★
()
Ответ на: комментарий от OxiD

Есть другие варианты. У нас, например, есть свой велосипед, который делает это просто с точки зрения пользовательского кода, может быть когда-нибудь оно будет отдано в opensource :)

Reset ★★★★★
()

А сделать сервис, через который клиенты будут дергать ресурсы не вариант?

dizza ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.