Вышло крупное обновление для NServer — минималистичного Python-фреймворка, который позволяет легко создавать кастомные DNS-серверы с помощью понятного API.
Что нового:
Главная фишка версии 3.2.0 — полноценная многопоточность. Раньше всё работало в один поток, и если серверу нужно было сделать тяжелый блокирующий запрос (например, сходить в базу данных на 10–100 мс), пропускная способность моментально падала с 10 000 до 25 запросов в секунду.
Теперь архитектура разделена на три пула потоков:
1. Для приёма входящих DNS-запросов.
2. Настраиваемое количество воркеров для обработки логики.
3. Поток для отправки ответов.
По словам автора, с новой архитектурой сервер уверенно держит от 300 до 1200 запросов в секунду даже при наличии тех самых блокирующих задержек в коде. В синтетических TCP-бенчмарках NServer даже обошёл популярный CoreDNS (когда тот используется как балансировщик) и некоторые серверы, написанные на C.
Полный ченжлог: https://nhairs.github.io/nserver/latest/changelog/
@zen_of_python (теперь в VK и Max)
Post #4789
3.19K
- 👍 4
- 👏 1