Распределенные блокировки в PostgreSQL

Мне известны следующие варианты:

  1. Advisory lock - придумываем константу и используем pg_advisory_lock и pg_try_advisory_lock
  2. Создаем таблицу блокировок и в этой таблице создаем запись. Если запись создана, то блокировка успешна. Для удаления блокировки удаляем запись.
  3. Можно переиспользовать shedlock и соорудить что-то типа https://github.com/batsura-sa/distributed-lock-shedlock/blob/master/src/main/java/org/j262/lock/api/DistributedLock.java

Read more

Бесплатный программист от Atlassian

Вчера попробовал acli rovodev https://developer.atlassian.com/cloud/acli/guides/install-linux/. Плюсы: 1. Бесплатный пока бета 2. Суточный лимит 20 миллионов токенов и много запросов 3. Прилежный 4. За час он создал реактивный гейтвей https://github.com/batsura-sa/reactive-gateway-project Минусы: 1. Требует VPN

By Sergei Batsura

Помним про оверхед, при использовании JSON вместо PROTOBUF

В 2024 году Андрей Комягин в докладе "Глубокое погружение в архитектуру Kafka" привел такие цифры для 100 атрибутов в сообщении: 1. PROTOBUF в среднем компактнее в 2.5 раза 2. Скорость сериализация PROTOBUF выше в 2 раза 3. Скорость десериализации PROTOBUF выше в 6 раз! 4. Производительность сериализации/

By Sergei Batsura

Можно ли использовать ThreadLocal контейнер с VirtualThreads? Да, можно!

Для ответа на этот вопрос решил написать тесты https://github.com/batsura-sa/java-samples/tree/main/thread-local-in-threads/src/test/java/org/example Кратко резюме такое в Java 21 ThreadLocal с VirtualThread работают, что в общем-то и указано в https://openjdk.org/jeps/444 , однако, поскольку виртуальных потоков может быть очень много,

By Sergei Batsura