eao197 on the Web Сайт Евгения Охотникова |
[ Главная | Блог | Описания | Проекты | Об авторе | Лицензия ] |
SObjectizer
Что такое SObjectizer О том, что такое SObjectizer я могу сказать две вещи. Во-первых, его официальное определение: SObjectizer является набором правил и принципов агентно-ориентированного проектирования и инструментом для этого агентно-ориентированного проектирования на C++. Во-вторых, над SObjectizer я работаю, по сути, с 1994 года. Сначала это был SCADA Objectizer в КБСП (г.Гомель), а затем SObjectizer в Intervale. Это большой срок. Большой настолько, чтобы у меня сложилось собственное отношение к этому проекту. И данная страница предназначена для того, чтобы высказывать на ней свое личное впечатление о SObjectizer, о его прошлом, настоящем и, надеюсь, будущем. |
|
Данное предложение описывает идею об использовании почтовых ящиков (mbox-ов) в качестве единственного механизма адресации сообщений в SObjectizer-5.
Можно посмотреть на сравнение описаний одного и того же агента в предлагаемой нотации и в существующей нотации SObjectizer-4.
2009.10.06
Данное предложение описывает текущие представления о том, как же может выглядеть в SObjectizer-5 работа с сообщениями, событиями и состояниями. Только средствами языка C++, без использования каких-либо внешних DSL.
2009.05.22: добавлено сравнение описаний одного и того же агента в предлагаемой нотации и в существующей нотации SObjectizer-4.
2009.03.27, 2009.05.22
Некоторые соображения о том, как можно приостанавливать работу агентов, отсылающих сообщения, если очередь получателя сообщения сильно перегружена.
2009.01.04
Идея: порционное чтение приоритетной очереди. Некоторые соображения о том, как можно сократить количество захватов мутексов при извлечении заявок из очереди заявок рабочих нитей диспетчеров SObjectizer 4.
2008.12.27
Небольшое изложение идей о том, на что в первую очередь следует обратить внимание при проектировании следующего поколения SObjectizer -- SObjectizer 5.
2008.09.23
Небольшое описание того, что было сделано в SObjectizer v.4.4.0-beta6.
2008.09.18
Данное предложение описывает предварительные соображения о том, как можно реализовать более жесткий контроль за списками разрешенных и запрещенных событий в описании состояний агента. Целью предложения является уменьшение таких ошибок как, забытое разрушенное/запрещеное событие из-за которого агент работает не так, как хотелось бы разработчику.
2008.03.12
Данное предложение описывает предварительные соображения о том, как можно балансировать нагрузку на одного агента в SObjectizer посредством запуска нескольких копий этого агента на разных контекстах.
2007.11.25
Небольшое описание того, что было сделано в SObjectizer v.4.4.0-beta5.
Данное предложение описывает возможный способ контроля за интенсивностью входящего SOP трафика транспортными агентами. Суть предложения в том, что транспортный агент возобновляет чтение из канала только после того, как приложение обработает все полученные ранее из канала сообщения.
Данное предложение описывает причины необходимости добавления в SObjectizer поддержки C++ исключений и одино из возможных решений проблемы выхода исключений за пределы обработчиков событий.
Данное предложение описывает механизм перехватчиков сообщений агентов. Которые могут использоваться как для перехвата, так и для перемаршрутизации сообщений.
Данное предложение содержит предварительное описание идеи, которая могла бы позволить дочерним агентам работать на том же контексте, на котором работает их родительский агент. Это предложение на текущий моментне выглядит не убедительным. Но, может быть, со временем найдутся серьезные доводы к его реализации. Либо оно станет источником каких-то новых идей.
Этот небольшой обзор предназначен для поверхностного знакомства с библиотекой MBAPI. Пока эта библиотека еще ожидает своей публикации на SourceForge, но вспоминать о ней в различных обсуждениях SObjectizer приходится достаточно часто. Этот обзор должен дать общие представления об MBAPI пока основная документация по MBAPI еще не написана.
В этой небольшой заметочке изложены основные причины по которым мне кажется выгодным создание Domain Specific Language (DSL) для описания классов агентов.
В состав очередной бета версии SObjectizer (которая сейчас
находится в стадии вялотекущей разработки) включена реализация
теста производительности Chameneos (описание теста можно
найти на сайте Computer
Language Benchmark Game. На моей машине (Pentium M 1.5GHz)
тест на 1000000 встреч отрабатывает за 36.7 секунды, показывая
пропускную способность в 214000 сообщений в секунду.
Дополнение от 2007.09.13: на моей новой машине (Core2 Duo
2GHz) тест на 1M встреч отрабазывает за 25.2 секунды, показывая
пропускную способность в 318000 сообщений в секунду.
Дополнение от 2008.09.18: на той же самой машине (Core2
Duo 2GHz) с использованием SObjectizer 4.4.0-b6 тест на 1M
встреч отрабазывает за 16.2 секунды, показывая пропускную
способность в 493000 сообщений в секунду.
Мне этот тест уже как родной, поскольку я как-то запарился с его реализацией на D. А так же сделал его реализацию на очень интересном, но почившем уже, языке Nice.
В отличии от реализации на D, написать версию на SObjectizer не составило труда. Хотя получившийся объем кода впечатляет -- слишком многословное решение :( Нужно бы что-нибудь придумать для уменьшения объема кодирования при использовании SObjectizer.
Небольшое описание того, что было сделано в SObjectizer v.4.4.b3.
SObjectizer-4 Book -- это написанное мной руководство по программированию с использованием SObjectizer. На данный момент SObjectizer-4 Book состоит из двух частей. Первая часть знакомит читателя с SObjectizer, его историей, основными понятиями и принципами работы. Вторая часть является пошаговым погружением читателя в программирование на SObjectizer. На каждом шаге рассматривается один пример, показывающий ту или иную возможность SObjectizer. Эта часть так и называется: "SObjectizer в примерах: шаг за шагом". В приложении приводятся исходные тексты всех рассмотренных примеров (эти примеры являются так же частью самого SObjectizer и располагаются в каталоге dev/sample в дистрибутиве SObjectizer).
SObjectizer Book на данный момент является наиболее полным руководством по программированию на SObjectizer (почти 300 страниц). В общем, если интересен SObjectizer, то must read :)
Если вы не смогли что-то найти или найденное вами описание оказалось для вас недостаточным -- не стесняйтесь, напишите об этом мне.
© 2003-2008 Е.А. Охотников
$LastChangedDate: 2009-10-06 18:21:24 +0400 (Р’С‚, 06 РѕРєС‚ 2009) $