Pull to refresh

Comments 9

чёткая, максимально простая, и понятная задача
это ж Unix-way:)
Вы про всё то что я написал? Так и работают в Unix'e?)
Дуг Макилрой, изобретатель каналов UNIX и один из основателей традиции UNIX, обобщил философию следующим образом:
«Философия UNIX гласит:
Пишите программы, которые делают что-то одно и делают это хорошо.
Пишите программы, которые бы работали вместе.
Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс».
Обычно эти высказывания сводятся к одному «Делайте что-то одно, но делайте это хорошо».


Есть еще принцип единственной обязанности, который, в сущности, о том же самом.
Юникс, всё же, это немного другое. Проектирование изолированных сущностей, взаимодействующих между собой стандартными способами и решающих каждый свою задачу — это общий принцип, он применим и к ООП, и к комплексам отдельных программ.

То, что описывает автор, всё-таки, есть самая натуральная акторная модель:
1. отдельные сущности;
2. обмениваются сообщениями;
3. работают в отдельных потоках;
4. решают свои отдельные задачи.
мм, насколько я понял по статье в wiki SOA — это архитектура взаимодействия программ, а не исполнителей внутри одной программы. По-моему модель акторов все таки подходит больше. Но смысл тот же.
Актеры, да. Это очень хорошая модель.

На Хабре когда-то была статься, кстати вот она habrahabr.ru/post/111707/, про то, как работает мозг. Она не явно, но весьма отчетливо защищает антропоморфизм в информационных системах.

Думать в рамках людей и сообщений удобно. Тем более это решает массу проблем с синхронизацией процессов. Если каждый процесс, ну или «воркер», «актер», общается с остальными только через асинхронную очередь, никаких дедлоков или спинлоков не будет же. Там есть, правда, подвох. Персистентные хранилища, например, когда их надо использовать несколькими процессами. Но это обходится, например, введением отдельного воркера, который обслуживает именно хранилища и отдает данные по запросу «коллег».И отдельного супервизора, который следит, например, чтобы тот воркер не помер. В итоге получается система, которая отлично масштабируется и обеспечивает самонадежность.

Но это в первую очередь хорошая модель для головы, не только для железа. Изолированные процессы, которые ведут себя как люди, но при этом не капризничают, не срутся друг с другом и не уходят к конкуренту через полгода — отлично же. Главное, не начать с ними разговаривать.
Sign up to leave a comment.

Articles