
Записи в разные ветки не обязательно должны ждать друг друга. В GitHub меняют механизм согласования записи: вместо одной очереди на репозиторий операции упорядочиваются по отдельным ссылкам Git — например, веткам и тегам. Во внутренних тестах параллельная запись в разные ссылки дала в 3–4 раза большую пропускную способность; перестройка инфраструктуры идёт поэтапно.
Это полезный пример для разработчиков многопользовательских систем. Иногда производительность ограничивает слишком крупная область блокировки: независимые действия вынуждены стоять в одной очереди.
Посмотрите, что именно защищают ваши блокировки: весь проект, одного клиента или отдельный объект. Если операции независимы, проверьте возможность сузить область согласования. Изменения, затрагивающие несколько объектов сразу, всё равно потребуют общей координации.
Библиотека программиста