Новый демон D-Bus
Продолжается история замены штатного и порядком устаревшего сервиса D-Bus. После того, как не взлетел проект kdbus, а перспективы bus1 по включению в ядро и не просматриваются, было принято решение переписать имеющийся демон.
David Herrmann на днях предложил первый вариант новой реализации - dbus-broker.
Почему понадобилось переписывать начисто, вместо патчей к старой версии, которой, кстати, больше 15 лет, и как то ведь оно работает. Потому что, при всем уважении к разработчикам первой реализации, она была спроектирована не очень хорошо. Этому есть объяснение - было сложно увидеть общую схему взаимодействия приложений в то время. Поэтому архитектура получилась гродомздкой, реализация вышла неторопливой, а неизбежная сложность привела к увеличивающейся горе ошибок, некоторым из которых уже по 7 лет. Багрепорты варьируются, как указывает David, от ошибок обращения к памяти, до молчаливой потери сообщений и вызванных недостатками архитектуры дедлоков. Решить некоторые из этих проблем можно, но результат не будет соответствовать техническому заданию.
Поэтому было решено переписать брокер сообщений заново, внеся ряд важных архитектурных изменений:
- Вместо концепции общей шины данных, была реализована концепция отдельных узлов, которые независимо друг от друга общаются.
- Демон не использует сеть или другие IPC. Раньше это вызывало дедлоки, например, когда пользователи заведены в LDAP или NIS.
- Все ресурсы учитываются не по отдельным узлам, а по пользователям, инициировавшим соединения.
- О каждой ошибке теперь будет сообщаться. Если уведомить пользователя невозможно, то демон будет завершать работу аварийно.
В результате получился довольно простой локальный брокер сообщений (не работает по сети, другой шине, или через libastral), который использует только самые последний Linux-технологии, работает полностью в пространстве пользователя, и который довольно хорошо совместим с предыдущей референсной реализацией. Коллеги-аналитики уже анонимно обсуждают увиденное на Linux.org.ru и OpenNET.ru.
Пока непонятно, каково будущее у bus1, если реализация шины в userspace будет успешно работать.
Комментарии