2009-02-20 2 views
21

Недавно я попал на альтернативные языки, поддерживающие архитектуру actor/agent/shared nothing, т.е. scala, clojure и т. д. (clojure также поддерживает разделяемое состояние).Шаблоны проектирования для параллельного дизайна на основе агента/актера

До сих пор большая часть документации, которую я прочитала, фокусируется на уровне входа. Я ищу более продвинутую документацию вдоль группы из четырех человек, но вместо этого ничего не основал.

Почему? Это помогает понять изменения в дизайнерском мышлении. Простые примеры просты, но в реальном Java-приложении (однопоточное) вы можете иметь объектные графы с 1000 членами членов со сложными отношениями. Но с развитием параллелизма на основе агентов он вводит совершенно новый набор идей для понимания при проектировании больших систем. то есть. Степень детализации агента - как много состояний должно управляться одним агентом - последствия для производительности и т. Д. Или являются их хорошими шаблонами для сопоставления графов объектов общего состояния с агентской системой. советы по моделированию моделей доменов для проектирования. Обсуждения не о технологии, а о том, как BEST использовать технологию в дизайне (реальные «сложные» примеры, были бы замечательными).

ответ

1

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

Я думаю, что смена ума - это самый большой барьер для перехода к параллельным архитектурам и языкам, и пока это не сломается, разработчики будут придерживаться простых в освоении парадигм стиля MS. Чтобы он действительно стал основным, ему нужно найти свой путь в школы и научиться вместе с C# и VB.

Мой ответ на вопрос 2080 programmers question является «одновременно».

10

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

Первый - это правильное обертывание головы вокруг концепций. Одна книга, помогающая , вы делаете это Making reliable distributed systems in the presence of software errors , написанная Erlang Guru Joe Armstrong, где объясняется параллельное ориентированное программирование очень доступным способом. Фактически это доктор философии. тезис, но не позволяйте этому пугать вас. Это гораздо легче читать и приятно в сделке, чем в большинстве распространенных учебников.

Глядя на фактические системы, как правило, это означает, что вам нужно слишком много узнать о языке , так как это тоже имеет смысл просто оценить вещи. Для Erlang documentation содержит методологию проектирования и поведения (Erlang speek для библиотек шаблонов проектирования). Это иллюстрирует шаблоны проектирования, наиболее часто используемые в этой настройке. И эти оказались эффективными в создании крупномасштабных систем, т. Е. Миллионов строк кода (сопоставимых с факторами от 4 до 10 других языков, таких как Java) и миллионы параллельных процессов, работающих на одной машине в распределенных кластерах машин. Недавним примером реальной живой системы является Facebook Chat.

Для других фреймворков я не могу вам помочь. Я боюсь.

+0

чат facebook звучит интересно. Когда вы смотрите на вопрос о дизайне чата/pbx, объекты «взаимодействия» создают хороший «агент», потому что взаимодействие по большей части самодостаточно с точки зрения состояния (стороны, fsm для каждой стороны и т. Д.). Было бы неплохо увидеть, что они создали, мудро. – nso1

4

«Актер» сам по себе является объединяющим шаблоном для параллельного программирования (асинхронная очередь сообщений и контекст выполнения для ее обработки), но существует множество шаблонов проектирования, которые помогают в определении аспектов или элементов агентно-ориентированных систем. Многие из наиболее распространенных можно найти в статье Википедии по адресу Concurrency Patterns.Некоторые основные моменты:

Если вы еще не сталкивались с этим уже, Akka может представлять интерес для Вас - это «чисто», основанная на событиях актерская структура, работающая на JVM.

Смежные вопросы