Вам нужна атомарная операция CAS (сравнить и поменять). Если хранилище является общим хранилищем, как в СУБД, вы можете сделать это с помощью блокировки на уровне строк. Другими словами, если ваши экземпляры микросервиса обращаются к общей СУБД, вы сможете сделать это с помощью блокировки на уровне строк.
Если ваше хранилище реплицируется и распределяется, и клиент или микросервис могут подключаться к любому узлу или реплике и записывать на них, как в Cassandra, вам нужна реализация согласованного алгоритма, которая позволит системе в целом договориться о том, какой клиент хранит заблокировать, а затем сделать обновление. В частности, в Cassandra вы можете использовать легковесную транзакцию, которая реализует Paxos и выставляет ее как CAS.
Если вы не используете ни одну из вышеуказанных баз данных, вы можете использовать любые другие согласованные системы, такие как ZooKeeper (ZAB), etcd (Raft) и т. Д.
Apache Curator - это библиотека высокого уровня поверх ZooKeeper. Вы можете обратиться к этому рецепту: https://curator.apache.org/curator-recipes/distributed-atomic-long.html