2009-12-07 2 views
4

Мне нужен ответ на следующий вопрос, чтобы понять, какой подход я должен использовать для взаимодействия с Erlang. AFAIK Erlang в блоке UNIX SMP использует многопроцессорный подход. В этом случае он должен сделать тот же IPC машины.Same Machine Erlang communication

  1. Использует ли Erlang сокеты UNIX для UNIX?
  2. Использует ли именованные трубы для окон?

  3. Если он не реализует обе конструкции выше - т. Е. Нет именованных каналов для окон; он должен быть вынужден отступить к сокетам, на окнах.

  4. Как реализуются вышеупомянутые принципы, используют ли они ориентированные на сообщения, однопоточные каналы, асинхронные конструкции или это что-то еще?

  5. Если моя линия рассуждений выше неверна, использует ли она дерево-мастер-древо, а все остальные процессы связывают - косвенно - через мастер?

- редактировать 1 -

Link в документации двоичном формате Erlang.

Универсальный консенсус заключается в том, что Unix Domain Sockets превосходят TCP/IP. Я думаю, что я попытаюсь расширить Erlang, чтобы использовать лучшие примитивы. Я также сильно подозреваю, что epop и windows IOPC не используются в цикле событий TCP/IP - я отправлю сообщение после проверки кода.

Другой SO post, который утверждает, что Эрланг действительно не поддерживает ничего, кроме TCP и UDP.

Есть две библиотеки Erlang для общения Erlang node -> c_node и c_node -> Erlang_node

module for sockets Эрланга позволяет Unix Dom Sockets будет открыт под UNIX.

+1

отношение SO вопрос: http://stackoverflow.com/questions/1478831/erlang-unix-domain-socket-support – Zed

ответ

0

R1. Он использует TCP/IP (фактически, нет никакой «стандартной» поддержки для сокетов домена UNIX)

R2. Я уверен, что это все еще разъемы TCP/IP

R3. см. R2

R4. Для Erlang существует формат бинарного обмена, и он основан на сообщениях. Обмен может быть синхронизирован (RPC-подобным) или асинхронным.

R5. Нет мастера.


Как бонус (чтобы помочь вам сэкономить время): не забудьте использовать зарегистрированное имя (-sname или -name) для того, чтобы использовать межузловую связь (либо RPC или любое другие).

+0

Может быть, я неправильно понимаю вопрос, но это трудно поверить Erlang планировщиков общаться через TCP/IP. – Zed

+0

@zed, да, трудно поверить. Я видел много субоптимальных реализаций IPC в своем обзоре материалов с открытым исходным кодом. BSD TCP/IP и select() в значительной степени являются стандартными для многих людей. Я был бы признателен за ссылку на исходный файл или справочное руководство о планировщиках, то есть если вы найдете его. –

+0

Ребята - возможно, я прочитал вопрос с тонированными стеклами: я предполагал IPC ** между ** узлами (в смысле Эрланга), потому что, если мы говорим о ** внутриузловых IPC **, то, конечно, я довольно определенно это ** не ** по TCP/IP. – jldupont

13

В качестве комментария к первоначальному вопросу, и некоторые из комментариев:

  • Я ОЧЕНЬ уверен, на самом деле я ЗНАТЬ, что внутри в узле Erlang VM не использует сокетов или труб для связи между процессами (Erlang). Это было бы смехотворно и полностью противоречить основным принципам Эрланга, связанным с легким взаимодействием между процессами (Erlang).

  • Между узлами Erlang Erlang VM использует TCP/IP. Семантика и поведение, как видно из Erlang, такие же, как для внутриузловой коммуникации, во многих отношениях она полностью прозрачна, на каких узлах задействованы процессы.

  • SMP не изменяют эти основы, независимо от того, сколько ядер и планировщиков используется, и независимо от того, сколько планировщиков запускается на ядро.

+0

Подробнее о том, как работает система передачи сообщений узла Erlang: http://stackoverflow.com/questions/3391274/how- делает-Эрланг миновать-сообщения между ними-процессами-на-же-узлом/3397945 # 3397945 – mjs