Erlang Design Advice относительно услуг HTTP - PullRequest
2 голосов
/ 20 июля 2011

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

На этой картинке показано, что я хочу сделать.

http://imagebin.org/163917

Где сообщения извлекаются из очереди и направляются рабочим процессам, которые ранее были настроены в результате того, что пользователь вводил форму в приложении Django.Настройка требует некоторой дополнительной базы данных (ранее существовавшей базы данных, поэтому я не хочу использовать ETS / DETS для этого бита), которая затем обращается к маршрутизатору сообщений и создает соответствующий процесс.

Моя проблема связана с тем, чтоВ будущем я, возможно, захочу спросить мое приложение Django для всех рабочих, которые должны быть настроены, и в первую очередь задавать им задачи, как лучше всего общаться здесь.Я предпочитаю HTTP / JSON и прочитал, что мало я могу найти на Mochiweb и MochiJson, и я думаю, что это будет делать то, что я хочу.Я планировал иметь OTP-супервизор и приложение, поэтому было бы разумно иметь отдельный процесс mochiweb, который затем передавал бы сообщения erlang маршрутизатору?

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

Пожалуйста, разорвите это на части, все комментарии приветствуются.

Приветствия

Дейв

1 Ответ

2 голосов
/ 20 июля 2011

mochiweb - это круто, но я думаю, что вы на самом деле хотите - webmachine .Полная документация доступна здесь и здесь .В двух словах, webmachine - это инструментарий для создания REST-приложений, который, я думаю, вам нужен.Он использует mochiweb за кулисами, но скрывает все сложные (и недокументированные) детали.Когда вы создаете проект веб-машины, вы получаете полное приложение OTP и ресурс по умолчанию.Оттуда вы будете делать что-то вроде следующего:

  1. Добавьте свои собственные ресурсы (или измените + переименуйте по умолчанию).
  2. Измените диспетчер, чтобы ваши ресурсы и пути имели смыслдля вашего приложения.
  3. Добавьте код для создания и мониторинга ваших рабочих процессов - возможно, gen_server и супервизор.См. this и соответствующие статьи для идей.Обратите внимание, что вы захотите запустить оба приложения под основным супервизором, предоставленным вам при создании проекта.
  4. Измените свои ресурсы для связи с вашим gen_server.

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

...