Помогите с разработкой многопоточного механизма исполнения для слабосвязанных систем - PullRequest
0 голосов
/ 12 сентября 2011

Мне нужно создать «механизм выполнения», который будет прослушивать запросы от различных систем и выполнять эти запрошенные задачи.
Я хочу открыть в «механизме выполнения» веб-сервис, и каждая система сможет работатьк этому веб-сервису, попросите сделать некоторую операцию.все операции будут сохранены на диске для обработки сбоев (все задачи являются асинхронными)

, например, add_email_to_block_list, один из наших веб-сайтов может попросить «механизм выполнения» выполнить эту задачу в почтовой системе.

«Механизм выполнения» предполагает обработку более 100 запросов в минуту (в будущем).

Скорее всего, мне придется использовать C # для такого рода задач.(также шанс для JAVA).

  1. Что я должен принять во внимание при разработке такого типа основного двигателя?
  2. Знаете ли вы какой-то пример использования через веб-сайт об этой системе?о чем я говорю (чтобы я мог лучше искать в гугле)?

Спасибо

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Вы описываете классический Удаленный вызов процедур интерфейс.Обычно основным соображением при разработке веб-службы для RPC является масштабируемость.Чтобы не обрабатывать слишком много данных при блокировании системы от получения других запросов, обычно лучше выгружать данные в другие потоки заданий.Однако вы не должны создавать систему «один поток на запрос», кроме как крошечные игрушечные системы, потому что это может быть серьезной проблемой с системными ресурсами.Вместо этого вам следует рассмотреть использование какого-либо Thread Pool для обработки входящих задач.

Этот тип системы используется повсеместно и действительно является основным использованием веб-сервисов.,Просто посмотрите на любое описание Web Services как RPC для получения более подробной информации.

0 голосов
/ 12 сентября 2011

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

...