Как спроектировать систему управления транзакциями для пользовательского хранилища значений ключей
Мое приложение использует пользовательское хранилище значений ключей в качестве слоя постоянства данных. Это хранилище значений ключей разработано собственными силами и имеет несколько API-интерфейсов для работы, однако оно не обеспечивает ничего, связанного с управлением транзакциями или блокировкой (особенно распределенной блокировкой).
Теперь нам, как пользователю этого хранилища значений ключей, необходимо разработать такую систему управления блокировками / транзакциями. Может ли кто-нибудь помочь показать, как можно реализовать такую распределенную блокировку? Стоит ли смотреть на Apache Zookeeper?
Мы используем Java 7.
Спасибо нн
1 ответ
Есть множество вариантов, многие из них даже скажут вам, как это сделать:
- Zookeeper, о котором вы упомянули, они даже говорят, как это сделать в своей кулинарной книге. Вы можете проверить документацию Zookeeper, в которой немного говорится о реализации распределенных блокировок.
- Hazelcast, который представляет собой распределенную сетку данных в памяти, имеет реализацию распределенной блокировки
- У Redis тоже есть!
Все, что распределяется и хранится в памяти, может быть хорошим кандидатом (и это действительно работает), является хорошим кандидатом. Лично на работе мы используем ZK (точнее, куратор, чтобы сделать его еще проще), и он работает хорошо. Некоторые из библиотек, которые мы используем, делают это с Hazelcast, и это не выглядит немного хуже