2012-07-04 3 views
3

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

Чтобы сделать это масштабируемым, вы просто запустили новый узел (до максимума в зависимости от вашего оборудования) для каждого клиента, который хочет запустить X?

Так что, если бы у меня было четыре аппаратных ящика, я мог бы запустить до четырех узлов для запуска службы X(), при 5-м запросе клиента я бы просто запустил X() на первом узле, шестой клиент на втором узле и т.д?

После этого я знаю, как обрабатывать процессы локально, но как бы вы получили как 1-й, так и 5-й клиенты, чтобы использовать тот же Node-1, если бы это было нерестами процесса удаленно на узле для Клиента каждый время?

Любые простые примеры приветствуются!

+0

Я не уверен, что понимаю. Вы хотите, чтобы техника проходила через узлы? Если да, вы можете просто перебирать список, используя Nodes = [node() | nodes()], списки: nth (длина (узлы) - (длина счетчика (узлы)), узлы). Или что-то типа того. – Isac

+0

@ Исак, мне просто интересно, какие функции и базовый код нужно будет разгружать на удаленные узлы, как при масштабировании кода. Итак, моя функция X(), если я хотел запустить X() в разных блоках, как мне это сделать? благодаря – user997112

ответ

3

Это очень зависит от того, что такое X. Если X полностью независим, например, x() -> 37., вам даже не нужно подключать свои узлы. Просто разместите стандартный балансировщик нагрузки перед вашей системой (HAProxy, Varnish и т. Д.), А затем забудьте о любом виде распределенной связи. На самом деле, для этого нет необходимости использовать Erlang. Замените Erlang на другой язык по вашему выбору. Это одинаково хорошо.

Где Erlang светит, когда несколько функций X имеют зависимости друг от друга и когда X может жить на другой физической машине. В этом случае Erlang может легко взаимодействовать с другим X, даже если он живет на другом узле.

Если вы хотите реализовать схему кругового шифрования в Erlang, самым простым способом является наличие одной точки ввода и последующая пересылка запросов на несколько узлов. Но это плохо, если есть шаблон, где определенный узел заканчивается всеми длительными процессами. Вам нужно создать механизм обратной связи, чтобы вы знали, как взвешивать круглую очередь.

Смежные вопросы