Я программист. Поэтому, меня всегда потрясают вещи, которые «просто работают». Это чувство у меня было и когда я знакомился с Erlang Pool. Настройка требует некоторого внимания, но после, механизм оказывается «оскорбительно» простым.
Для запуска Erlang пула Вам необходимо следующее:
Вот и все. Как только все готово, запустите на главном компьютере оболочку и выполните:
И вот! Вы имеете свой собственный Ad-hoc, load-balancing, распределенный пул компьютеров. Вам не нужна запускать ноды на остальных компьютерах: Erlang сделает это за Вас. Следующая команда на главной ноде запустит процесс с функцией и аргументами на наименее загруженной ноде:
Я назвал это «оскорбительно простым» потому, что это и есть оскорбление все раздутых, коммерческих, дорогих BPEL-for-Web-Services-on-J2EE (or .NET) серверов приложений и т.д. Мы слишком привыкли к «графическим редакторам, которые генерируют XML, который генерирует код, который запаковывается с манифестом и отправляется на специальный сервер». Когда кто-либо появляетcя и говорит «Эй, оболочка и plain-text конфиг это все тебе нужно», это немного шокирует.
Keep It Simple, Stupid.
Для запуска Erlang пула Вам необходимо следующее:
- Набор компьютеров с одинаковым Erlang окружением, один из которых будет главным
- Все компьютеры должны иметь код, который будет запущен
- Файл с хостами Erlang на главном компьютере (обычно ~/.hosts.erlang)
- Все компьютеры должны иметь одинаковые Erlang-cookie (обычно ~/.erlang.cookie)
- Главный компьютер должен иметь RSH или SSH no-password-required доступ ко всем остальным компьютерам
- Оболочка Erlang на главном компьютере должна быть именованной, т.к. она создает ноду
Вот и все. Как только все готово, запустите на главном компьютере оболочку и выполните:
pool:start(Name).
И вот! Вы имеете свой собственный Ad-hoc, load-balancing, распределенный пул компьютеров. Вам не нужна запускать ноды на остальных компьютерах: Erlang сделает это за Вас. Следующая команда на главной ноде запустит процесс с функцией и аргументами на наименее загруженной ноде:
pool:pspawn(Mod, Func, Args).
Я назвал это «оскорбительно простым» потому, что это и есть оскорбление все раздутых, коммерческих, дорогих BPEL-for-Web-Services-on-J2EE (or .NET) серверов приложений и т.д. Мы слишком привыкли к «графическим редакторам, которые генерируют XML, который генерирует код, который запаковывается с манифестом и отправляется на специальный сервер». Когда кто-либо появляетcя и говорит «Эй, оболочка и plain-text конфиг это все тебе нужно», это немного шокирует.
Keep It Simple, Stupid.