The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

23.08.2017 19:55  В рамках проекта D-Bus Broker развивается новая реализация шины D-Bus

Дэвид Герман (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).

  1. Главная ссылка к новости (https://dvdhrm.github.io/rethi...)
  2. OpenNews: Для ядра Linux вместо kdbus предложен механизм межпроцессных коммуникаций Bus1
  3. OpenNews: Четвёртый выпуск реализации kdbus для ядра Linux
  4. OpenNews: Представлена реализация шины D-Bus, работающая на уровне Linux-ядра
  5. OpenNews: Проект systemd представил libsystemd-bus, собственную реализацию клиентской библиотеки D-Bus
  6. OpenNews: Выход D-Bus 1.0 ознаменовал стабилизацию API.
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: d-bus, bus
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, gogo, 20:39, 23/08/2017 [ответить] [смотреть все]
  • +13 +/
    Звучит шикарно.
    Вот только обратная совместимость выглядит скорее пессимистично. Впрочем, не думаю, что  будут какие-то принципиально нерешаемые проблемы.
     
  • 1.2, Аноним, 20:44, 23/08/2017 [ответить] [смотреть все]
  • –8 +/
    Поттеринг покусал ... весь текст скрыт [показать]
     
     
  • 2.9, Аноним, 21:40, 23/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    systemd-dbusd
     
     
  • 3.48, Анонист, 12:02, 24/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    system-d-bus
     
  • 2.10, Аноним, 21:41, 23/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    А Вы попробуйте разрабатывать под старые дистрибутивы Куда не ткни, не хватает ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.11, Аноним, 21:55, 23/08/2017 [^] [ответить] [смотреть все]  
  • –19 +/
    > В результате вместо 6 строк будет уже 12

    Ого, это же катастрофа!

     
     
  • 4.12, Аноним, 22:04, 23/08/2017 [^] [ответить] [смотреть все]  
  • +9 +/
    Экстраполировать информацию и делать выводы не умеем?
     
     
  • 5.17, Elhana, 22:34, 23/08/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Экстраполируя эту информацию, в питоне когда-нибудь будет всего одна функция Сд... весь текст скрыт [показать]
     
     
  • 6.18, Аноним, 22:50, 23/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Дело даже не в этом не только в этом , а в том, что когда ты видишь эти строки,... весь текст скрыт [показать]
     
     
  • 7.21, cmp, 00:09, 24/08/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Сдается мне это проблема питона, а старого линукса, и именно поэтому он идет лес... весь текст скрыт [показать]
     
  • 7.32, Аноним, 07:44, 24/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Странные выводы Проверка бесполезна, если можно указывать аргумент Это проще ... весь текст скрыт [показать]
     
     
  • 8.52, Аноним, 12:50, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Тссс Не мешай людям наслаждаться плацебо ... весь текст скрыт [показать]
     
  • 6.37, EHLO, 09:16, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    При условии что 12 строчек не на Питоне... весь текст скрыт [показать]
     
  • 4.13, Аноним, 22:05, 23/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    а еще, а еще!! нельзя например использовать тип auto, если нет с++11
     
     
  • 5.14, Аноним, 22:07, 23/08/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Я использую var. Например, var leftpad = require('leftpad').
     
     
  • 6.33, X2asd, 07:57, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    зарегистрируйся пожалуйста, о гроза электрон-программирования чтоб тебя мож... весь текст скрыт [показать]
     
  • 5.22, cmp, 00:12, 24/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    А еще на старых ядрах не работает назначение прав на shm, - старые это 3-4 года,... весь текст скрыт [показать]
     
     
  • 6.28, Аноним, 06:16, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Этот shm - тот ещё костыль. Неудивительно, что в Android написали свой с нуля.
     
     
  • 7.29, Аноним, 07:27, 24/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Может что-то неправильно поняли shm - это разделяемая память Есть два варианта... весь текст скрыт [показать]
     
     
  • 8.57, Аноним, 17:51, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Абстрактный shm это механизм использования одних страниц памяти в нескольких п... весь текст скрыт [показать]
     
     
  • 9.58, Аноним, 18:33, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Тогда может не процесса-владельца, а по счётчику ссылок Почитал, по сути та же ... весь текст скрыт [показать]
     
  • 3.23, Аноним, 00:36, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    4 10 вышло в этом году Хотя да, шесть месяцев уже старье старое Кстати, дебиан... весь текст скрыт [показать]
     
     
  • 4.30, Аноним, 07:28, 24/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    В бэкпортах 4 12 уже ... весь текст скрыт [показать]
     
  • 4.53, Аноним, 12:51, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > Кстати, дебиан таким образом - в пролете.

    Один фиг не примут до версии 2.0.

     
  • 3.40, Аноним, 09:30, 24/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Linux 2.6.9 хватит всем.
     
     
  • 4.43, Аноним, 10:39, 24/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Почему именно 2.6.9, а не, например, 2.4.37?
     
  • 3.55, Аноним, 16:42, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    А разработчики питона разве не пишут хорошо переносимый интерпретатор Что им ме... весь текст скрыт [показать]
     
     
  • 4.60, Аноним, 21:31, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    exist_ok - это не аналог аргумента -p у mkdir exist_ok не генерирует исключение... весь текст скрыт [показать]
     
  • 1.19, Аноним, 22:51, 23/08/2017 [ответить] [смотреть все]  
  • +1 +/
    KISS ... весь текст скрыт [показать]
     
     
  • 2.24, Аноним, 02:19, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    ...me in ass?
     
     
  • 3.25, Аноним, 02:45, 24/08/2017 [^] [ответить] [смотреть все]  
  • +7 +/
    Ты любишь, когда в твоей жопе целуются?
     
  • 3.34, Аноним, 08:00, 24/08/2017 [^] [ответить] [смотреть все]  
  • +9 +/
    MGIMO finish?
     
     
  • 4.45, Аноним, 11:19, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    "Поцелуй меня в России"

    Слово "Россия" переведено иносказательно.

     
  • 2.44, Аноним, 10:41, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Всё хорошо в меру и этот KISS тоже.
     
  • 1.20, Аноним, 23:40, 23/08/2017 [ответить] [смотреть все]  
  • +/
    Пользуюсь WM без DBus Не понимаю зачем он нужен Единственное что - BlueZ 5 без... весь текст скрыт [показать]
     
     
  • 2.46, SysA, 11:50, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Для админов локалхоста - однозначно С ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.54, Аноним, 13:41, 24/08/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    То ли дело одмины нелокалхостов - без Desktop-Bus жить не могут ... весь текст скрыт [показать]
     
  • 3.64, Аноним, 07:05, 25/08/2017 [^] [ответить] [смотреть все]  
  • +/
    На серверах dbus тем более не нужен.
     
  • 2.49, Аноним, 12:07, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Расскажу тайну, брат анонимус BlueZ и с dbus не работает Он просто не работает... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.51, Аноним, 12:19, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Что использовать для работы с bluetooth Желательно что бы и из CLI работало и b... весь текст скрыт [показать]
     
  • 1.26, eSyr, 03:24, 24/08/2017 [ответить] [смотреть все]  
  • +3 +/
    Не прошло и 10 лет, как кто-то последовал заветам Линуса.
     
     
  • 2.72, Аноним, 22:29, 29/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Не прошло и 10 лет и сишники поняли как должна работать шина
     
  • 1.27, Аноним, 03:30, 24/08/2017 [ответить] [смотреть все]  
  • –1 +/
    Нелавно узнал про D-Bus отличная штука можно сообщения посылать между приложения... весь текст скрыт [показать]
     
  • 1.31, лютый жабист__, 07:44, 24/08/2017 [ответить] [смотреть все]  
  • –4 +/
    Столько лет наступать на одни и те же грабли, переписал бы на rust-е.
     
     
  • 2.41, Аноним, 09:34, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Не, лучше на хацкеле и встроить в ядро, вместе с хацкелем Полумеры - для слабак... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.62, leap42, 06:58, 25/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    а хацкель должен быть написан на расте, иначе растофанатики не успокоятся и буду... весь текст скрыт [показать]
     
  • 3.67, нах, 19:30, 25/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > Не, лучше на хацкеле

    на OCaml. хацкель каждый дурак понять сможет.

     
  • 3.68, Kitty, 17:07, 27/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Уже было, но GHC мусор после себя не прибирает Он же скорее под userspace сдела... весь текст скрыт [показать]
     
  • 1.35, Аноним, 08:15, 24/08/2017 [ответить] [смотреть все]  
  • +4 +/
    Вот что животворящий gprof от Линуса делает Как он и говорил не нужно всю эту к... весь текст скрыт [показать]
     
     
  • 2.61, Аноним, 21:32, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    David Hermann пишет, что dbus-broker полагается на возможности, появившиеся в яд... весь текст скрыт [показать] [показать ветку]
     
  • 1.39, Аноним, 09:25, 24/08/2017 [ответить] [смотреть все]  
  • +1 +/
    > kdbus
    > Bus1
    > D-Bus Broker

    Больше дубасов хороших и разных!

     
     
  • 2.42, Аноним, 09:59, 24/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Это лучше. Это брокер дубаса.
     
     
  • 3.66, annual slayer, 19:08, 25/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    шутки шутками, а в этом году целых 4 компании с дубасом вышли на биржу
     
  • 1.47, Demo, 11:50, 24/08/2017 [ответить] [смотреть все]  
  • +2 +/
    > D-Bus Broker ... принципиально не может быть использован
    > в старых дистрибутивах Linux или в других ОС.

    Просто прелесть!

     
  • 1.56, anonymous, 16:49, 24/08/2017 [ответить] [смотреть все]  
  • +2 +/
    Мне всегда нравилась идея общей шины и dbus. Пока я не обнаружил, что большинство реализаций не умеет корректно обрабатывать отсутствие dbus сервиса. Что будет делать браузер, если у тебя отключён интернет? Просто перестанет открывать странички из интернета, локальные будет показывать. Что делает браузер, если у тебя отключён dbus (а браузер собран с поддержкой dbus) - перестаёт работать. Офигеть. Неужели нельзя было проверить доступность? Большая часть клиентских библиотек для dbus тупо пытается стартовать dbus сервис сама (и не выключает его после завершения работы программы). Когда я это пресёк, я и выяснил, что вариант "dbus не доступен" авторами 95% софта не учитывается.

    Всё это от того, частично, что есть всего одна популярная реализация стандарта dbus. Был бы стандарт зрелый, было бы несколько вариантов софта, и какой-то из них научился бы обрабатывать отсутствия сервиса корректно.

     
     
  • 2.63, leap42, 07:00, 25/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    dbus - жуткий костыль, возникший на месте вменяемого ipc в GNU Linux откуда же ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.65, anonymous, 08:36, 25/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    С чего это вы message queue называется костылём Очень часто встречающаяся конце... весь текст скрыт [показать]
     
  • 2.71, intelfx, 05:21, 29/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Ну офигеть теперь Ты ещё предложи программам обходиться без наличия UNIX-сокето... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.73, Аноним, 20:36, 01/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Тащемт , всякие autotools на этапе сборки проверяют Но это не спасает в случ... весь текст скрыт [показать]
     
  • 1.59, Аноним, 19:17, 24/08/2017 [ответить] [смотреть все]  
  • –1 +/
    Ошибка при компиляции c-sundry - static assertion failed Gcc 7 2 0 Glibc 2... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor