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 или в других ОС

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

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

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

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

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

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

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

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

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

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

Это

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

И это

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

Odalist ★★★★★ ()

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

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

zabbal ()

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

В пеЧь.

Oxdeadbeef ★★★ ()

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

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

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

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

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

AVL2 ★★★★★ ()

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

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

Gary ★★★★★ ()

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

И при этом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

anonymous ()

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

anonymous ()