Высокопроизводительная передача сообщений от C до Erlang - PullRequest
4 голосов
/ 01 октября 2010

У меня есть C-сервер (обработчик фида данных), который может отправлять миллионы крошечных сообщений в секунду через несколько тысяч долгоживущих процессов Erlang. За один день некоторые из этих процессов получат несколько тысяч сообщений, в то время как другие получат десятки миллионов . Мои интересы тройные:

  1. для минимизации задержки - сокращение времени, с которого сервер C отправляет сообщение, до того момента, когда процесс Erlang его получает. Можно проделать большую работу над вещами, которые происходят за до сообщения или после сообщения, но этот вопрос касается связи между C и Erlang.

  2. для увеличения пропускной способности - чем быстрее, тем лучше; если сервер C может отправлять на 10% больше сообщений в секунду во всех процессах Erlang, это большой выигрыш.

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

Как я могу отправлять сообщения из программы на C процессу Erlang высокопроизводительным способом? Какие приемы я могу сделать, чтобы минимизировать задержки, максимизировать пропускную способность или сделать связь между Erland и C более предсказуемой? Есть много аспектов этого. Мы можем выбрать протокол для связи между программой Erlang и другими программами. Мы можем использовать Distributed Erlang с «C-узлом» для связи между Erlang и C. Мы можем использовать порты или связанные драйверы.

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

Я бы посоветовал вам инвертировать вашу систему, встроить ваш код C в Erlang VM как связанный драйверИМХО, это способ, которым вы можете найти самое быстрое решение управляемым способом.

0 голосов
/ 01 октября 2010

Использование RabbitMQ ?

Возможно, вам понадобится более легкое решение, но, поскольку в Erlang уже написан компонент промежуточного программного обеспечения для обмена сообщениями, в котором реализовано AMQP , вам будет легко попробовать RabbitMQ и посмотреть, как это идет ...

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