LINUX.ORG.RU

В рамках проекта D-Bus Broker развивается замена шины D-Bus

 ,


2

5

Дэвид Герман (David Herrmann), в своё время разработавший шину обмена сообщениями Bus1 для ядра Linux, представил новый проект D-Bus Broker, в рамках которого предпринята попытка переосмысления D-Bus и создания новой реализации, устраняющей недостатки штатного демона D-Bus. Код проекта написан на языке Си и распространяется под лицензией Apache 2.0.

Мотивом создания новой реализации стала излишняя раздутость и переусложнённость dbus-daemon, в сочетании с обилием отражённых в системе отслеживания ошибок проблем - от неконтролируемого расходования памяти и пропадании сообщений, до возникновения взаимных блокировок и крахов процесса. Некоторые из проблем остаются нерешёнными до 7 лет, в большей части из-за того, что их принципиально невозможно устранить без нарушения гарантированной в dbus-daemon функциональности и существенных архитектурных изменений.

В отличие от Bus1 проект D-Bus Broker реализован целиком в пространстве пользователя, остаётся полностью совместим с эталонной реализацией D-Bus и может быть использован для прозрачной замены dbus-daemon. При этом новая реализация спроектирована с оглядкой на поддержку востребованной на практике функциональности и уделяет главное внимание работе по увеличению производительности и повышению надёжности. В D-Bus Broker также принципиально не реализованы функции, помеченные как устаревшие, и расширенные возможности, не отражённые в спецификации D-Bus.

Ключевые архитектурные изменения в D-Bus Broker:

  • Уход от идеи глобальной совместной шины (Shared Medium), к которой соединяются все обработчики сообщений и через которую осуществляется отправка сообщений. Вместо общей шины предложена концепция отдельных пиров, не имеющих глобального состояния. Когда какой-то пир отправляет сообщения, эта операция рассматривается как транзакция между отправителем и одной или несколькими точками назначения.
  • Отказ от использования дополнительных IPC-механизмов, так как D-Bus сам по себе является IPC и создание надстроек IPC над IPC приводит к появлению взаимных блокировок. Иными словами D-Bus Broker является самодостаточным процессом, который позволяет оперировать только локальными данными и не привязан к внешним обработчикам, таким как чтение файлов и обращение к NSS.
  • Учёт ресурсов в привязке к пользователям. Каждый ресурс и переданный в шину объект привязан к конкретному пользователю. Таким образом, существенно упрощается реализации ограничений и лимиты больше не привязываются к пиру (ограничения теперь зависят от активности каждого пользователя, а не от общей нагрузки на обработчик).
  • Воплощение принципа, что сообщение никогда не может быть потеряно без обработки ошибки. В случае возникновения проблем не допускается возникновения неопределённых ситуаций, каждая ошибка доставки должна быть выявлена и обработана, а в случае невозможности обработки ошибки процесс должен завершить свою работу, а не просто игнорировать возникшие проблемы.

Что касается высокой производительности D-Bus Broker, то её ценой является привязка к современным окружениям Linux - для своей работы проект требует наличия ядра Linux 4.10 и glibc 2.16, и принципиально не может быть использован в старых дистрибутивах Linux или в других ОС. Предоставляются опциональные компоненты для интеграции с systemd и SELinux. Обеспечивается работа только локального IPC без поддержки сетевого взаимодействия (при необходимости проброса на другой хост предлагается пробрасывать локальный сокет через SSH).

>>> Подробности на OpenNet.ru

Мотивом создания новой реализации стала излишняя раздутость и переусложнённость dbus-daemon, в сочетании с обилием отражённых в системе отслеживания ошибок проблем - от неконтролируемого расходования памяти и пропадании сообщений, до возникновения взаимных блокировок и крахов процесса. Некоторые из проблем остаются нерешёнными до 7 лет, в большей части из-за того, что их принципиально невозможно устранить без нарушения гарантированной в dbus-daemon функциональности и существенных архитектурных изменений.

Вот что значит не unix way.Пишите программы, которые делают что-то одно и делают это хорошо.

Odalist ★★★★★ ()

то её ценой является привязка к современным окружениям Linux

Значит опять будет гогно. И это опять не unix way...

Odalist ★★★★★ ()
Ответ на: комментарий от Odalist

А как вторая часть твоего поста вытекает из первой?

xoraby ()
Ответ на: комментарий от Odalist

Нет, я приверженец хорошего. Однако о в сфере д-бас мои познания весьма скудны, поэтому спорить я не собираюсь.

xoraby ()

> принципиально не может быть использован в старых дистрибутивах Linux или в других ОС

FreeBSD всё ещё не трогают эти люди. Вот и хорошо. Ещё как минимум несколько лет можно будет спокойно пользоваться.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от xoraby

Нет, я приверженец хорошего.

Новое, не всегда хорошо. А судя по новости

её ценой является привязка к современным окружениям Linux - для своей работы проект требует наличия ядра Linux 4.10 и glibc 2.16

это далеко не хорошо.

Odalist ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

На самом деле какую-то BSD нужно довести до юзабельного состояния и поддерживать на плаву. Уже хотя бы для того, чтобы старпёрам, нытикам, истеричкам, параноикам и прочим лицам с тончайшей душевной организацией было куда уходить. Лепрозорий эдакий. Там они никому не будут мешать.

JacobTwoTwo ()

Бред какой-то. dbus нельзя починить не сломав совместимость. От него надо избавляться на корню.

mittorn ★★★★★ ()
Ответ на: комментарий от Odalist

это далеко не хорошо

В чем трабл? Через какое-то время все дистрибы перейдут на него и можно будет думать об использовании.

anonymous ()
Ответ на: комментарий от Odalist

это далеко не хорошо.

А что плохого? В уже вышедшие версии дистрибутивов никто новинки не внедряет.

dinn ★★★★★ ()
Последнее исправление: dinn (всего исправлений: 1)
Ответ на: комментарий от dinn

А что плохого? В уже вышедшие версии дистрибутивов никто новинки не внедряет.

Это

Обеспечивается работа только локального IPC без поддержки сетевого взаимодействия (при необходимости проброса на другой хост предлагается пробрасывать локальный сокет через SSH).

И это

привязка к современным окружениям Linux

Odalist ★★★★★ ()

и распространяется под лицензией Apache 2.0

Чего это они вдруг? До сих пор же вроде всё под ГПЛ было. Неужто каким проприетарщикам подмахнуть надеются?

zabbal ★★ ()
Ответ на: комментарий от Odalist

А нафига в абсолютно новом продукте совместимость с говном мамонта? Пока его допилят еще куча воды утечет.

mandala ★★★★ ()

проект требует наличия ядра Linux 4.10 и glibc 2.16

В арч завезли уже? :)

Radjah ★★★★★ ()

для своей работы проект требует наличия ядра Linux 4.10 и glibc 2.16, и принципиально не может быть использован в старых дистрибутивах Linux или в других ОС.

В пеЧь.

Oxdeadbeef ★★★ ()

Вот что бывает, когда dcop пытаются тащить для обслуживания всей системы, а не посылания сообщений окошкам, называя это dbus.

Quasar ★★★★★ ()

Что касается высокой производительности D-Bus Broker, то её ценой является привязка к современным окружениям Linux - для своей работы проект требует наличия ядра Linux 4.10 и glibc 2.16

Если уж ломать совместимость, то почему не сделать сразу нормальный механизм IPC, а не совместимый с dbus? Короче - неоправданное говно получается. Пожелаем же дружно этому проекту поскорее сдохнуть!

Quasar ★★★★★ ()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от JacobTwoTwo

С такими высерами как сабж лепрозорием скоро станет линукс.

Quasar ★★★★★ ()
Ответ на: комментарий от anonymous

Проблема в том, что в сабжевом проекте используется философия проектирования на базе психически ненормального мышления.

Quasar ★★★★★ ()
Ответ на: комментарий от Odalist

Имхо что то одно. Или универсально, быстро и надежно. Или через сеть и в любой ОС.

Очередь сообщений по сети реализована десятки раз. Если все эти mq не подходят dbus, значит, это невозможно в принципе.

AVL2 ★★★★★ ()

Кто-то сетью в dbus пользуется вообще?

А так молодцы что сохраняют совместимость, задолбали уже переписывать с какахи на какаху со словами «ну уж на этот раз мы всё задизайнили хорошо»

Gary ★★★★★ ()

Если будет лучше и быстрее - то почему бы и нет.

vblats ()

Мотивом создания новой реализации ... Некоторые из проблем остаются нерешёнными до 7 лет, в большей части из-за того, что их принципиально невозможно устранить без нарушения гарантированной в dbus-daemon функциональности

И при этом

D-Bus Broker реализован целиком в пространстве пользователя, остаётся полностью совместим с эталонной реализацией D-Bus и может быть использован для прозрачной замены dbus-daemon

Значит старые проблемы не решены или как?

A-234 ★★★★★ ()
Ответ на: комментарий от A-234

Ничего не значит. С логическими выводами проблемы, бро.

xoraby ()
Ответ на: комментарий от Odalist

то её ценой является привязка к современным окружениям Linux

Значит опять будет гогно. И это опять не unix way...

А привязка ядра к userspace в *BSD это unix way?

asaw ★★★★★ ()
Ответ на: комментарий от xoraby

Когда новости пишут лирики с логикой беда почти гарантирована. Мысль сформулирована неправильно, наличие проблем поставлено в прямую зависимость от функциональности и в итоге с прозрачной заменой получается чушь.

A-234 ★★★★★ ()
Ответ на: комментарий от Quasar

Если уж ломать совместимость, то почему не сделать сразу нормальный механизм IPC, а не совместимый с dbus?

Потому что так можно взять любой современный дистрибутив и просто заменить одно на другое, а не ждать 10 лет пока весь опенсорц соблаговолит перейти на новый стандарт.

Axon ★★★★★ ()
Ответ на: комментарий от JacobTwoTwo

Линукс, если что, сделали "старперы"

Да и сам Линус тот еще «нытик», а вот такие как ты «современные и динамичные» кроме адовой помойки systemd ничего не делают, но вот как сломать что-то - всегда рядом...

P.S. Изменения должны быть оправданными, если же кто то топит за изменения ради изменений надо бы присмотреться, так ли чисты его намерения, как декларируются, и не пытается ли человек создать проблему, на решении которой он поднимет немалые деньги.

anonymous ()

Главное что kdbus от systemd не удалось пропихнуть, уже хорошо

SakuraKun ★★ ()

а кто теперь будет переписывать сустемд который весь на «глобальном дбасе», разве нет? и сколько багов в нём наделают пока будут модифицировать этот блевотный блоб? кажется любителей поттеринга в скором времени ожидают новые увлекательные приключения.

anonymous ()
Ответ на: комментарий от anonymous

Я тебе открою страшный секрет: systemd, bus1 и dbus-broker разрабатывают одни и те же люди.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

OMG, щас набигут. Зато теперь есть гарантия, что эта штука будет у меня на десктопе.

xoraby ()
Ответ на: комментарий от intelfx

хочешь сказать, что любителей поттеринга ожидает в два раза больше приключений чем они думали? я пойду CVE пока зарезервирую.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.