#hazelcast #distributed-lock
Вопрос:
Мы используем Hazelcast 3 для нашего приложения. Однако нам необходимо перейти на Hazelcast 4, так как срок службы Hazelcast 3 подходит к концу. Hazelcast 4 прекратил поддержку нескольких структур данных на основе точек доступа, таких как семафоры. Мы используем семафоры для координации распределенных процессов.
Семафоры на основе AP ведут себя иначе, чем их замены на основе CP. Семафоры на основе CP привязаны к сеансу CP. Продолжительность этого сеанса составляет 300 секунд (значение по умолчанию). По нашему опыту, это означает, что семафор не будет автоматически выпущен до тех пор, пока не пройдет 5 минут после того, как кластер получил последнее сердцебиение для сеанса CP.
Это означает, что другие процессы не смогут получить семафор до тех пор, пока эти 5 минут не пройдут. С семафорами на основе AP мы могли бы установить гораздо меньший тайм-аут (в нашем случае 5 секунд). Мы могли бы уйти чуть больше, чем за 5 секунд, но разница между 5 секундами и 5 минутами заключается в ошибке.
Хотя можно установить время до начала сеанса CP на меньшие значения, чем 5 минут, на своем собственном веб-сайте Hazelcast советует этого не делать.
Мы ищем способ безопасного выполнения распределенного управления процессами без необходимости полагаться на время работы глобальной сессии CP. Однако мы не смогли найти это в Hazelcast. Кто-нибудь знает, как это сделать?
Мы используем это, чтобы ограничить количество процессов, которые могут считываться из удаленной системы, до 1 за раз. Хотя удаленная система позволяет нескольким процессам подключаться одновременно, на самом деле она не может справиться с этим и начнет отправлять сообщения циклически, даже если этого не должно происходить.