Как я могу превратить большой кусок нативного кода в масштабируемый сервис? - PullRequest
2 голосов
/ 01 марта 2011

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

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

Есть ли что-то под веб-сервером Apache, которое позволило бы мне обеспечить потокобезопасный доступ к этой части кода? Как насчет пула экземпляров кода Eiffel? Я имею в виду что-то вроде этого:

[множество запросов клиентов по сети] ---> [Некоторая масштабируемая среда] -> [Один или несколько дорогостоящих примеров создания кода Eiffel]

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

С наилучшими пожеланиями

Seref

1 Ответ

2 голосов
/ 01 марта 2011

Если вы не привязаны к Apache, но подойдет любая другая инфраструктура, я предлагаю вам проверить ZeroMQ инфраструктуру передачи сообщений. Его ZMQ_PUSH / ZMQ_PULL модель с zmq_tcp транспорт, кажется, делает то, что вы хотите.

Ваша установка будет выглядеть примерно так: один «главный» процесс, обслуживающий внешние запросы (на любом языке / платформе, возможно, моде Apache) и настраиваемое во время выполнения число рабочих процессов C ++, которые вызывают в код Eiffel и возвращают результаты обратно.

...