Size: a a a

2020 October 13

YT

Yauheni Tsiarokhin in ErlangRus
Vasilii Demidenok
открываем страницу в википедии по "Кластер" и вперёд
отправить на википедию читать про "кластер" это может быть и правильно

но в интеренетах если искать про распределенные системы то чаще наткнешься на статьи про распределенные несвязанные кластера (это даже не кластера)

я хочу кзнать зачем нужен связный кластер в общем
какой список классических проблем он решает
источник

LL

Lama Lover in ErlangRus
Yauheni Tsiarokhin
отправить на википедию читать про "кластер" это может быть и правильно

но в интеренетах если искать про распределенные системы то чаще наткнешься на статьи про распределенные несвязанные кластера (это даже не кластера)

я хочу кзнать зачем нужен связный кластер в общем
какой список классических проблем он решает
Список классических проблем? Хм. Я вообще не знаю классических проблем, на которые можно ответить: "кластер".
В кластере можно реализовать распределённую стейт-машину, например
источник

YT

Yauheni Tsiarokhin in ErlangRus
Lama Lover
Список классических проблем? Хм. Я вообще не знаю классических проблем, на которые можно ответить: "кластер".
В кластере можно реализовать распределённую стейт-машину, например
вообще мысль о том что нет классическиз проблем мне кажется правильной
источник

LL

Lama Lover in ErlangRus
Конкретно эрланговское взаимодействие между нодами решает много проблем. Например, пересылка сообщений от одной ноды в другую гарантирует порядок сообщений. Или можно узнавать о смерти процесса на соседней ноде через monitor/link и всё вот это вот
Всякие встроенные в OTP вещи решают проблемы типа уникалзации процессов
источник

DZ

Danil Zagoskin in ErlangRus
Yauheni Tsiarokhin
я вопрос переформулирую

вот допустим спрашивают:
- Слушай а зачем вообще нужно эрланговый кластер делать? Какую проблему он решает?
Он решает проблему масштабирования при условии, что сеть достаточно надёжная. То есть, в реальном мире он почти никаких проблем не решает, но при обмазывании достаточным количеством костылей позволяет не заморачиваться тем, _как именно_ запросы-ответы попадают с одного сервера на другой.
источник

YT

Yauheni Tsiarokhin in ErlangRus
Danil Zagoskin
Он решает проблему масштабирования при условии, что сеть достаточно надёжная. То есть, в реальном мире он почти никаких проблем не решает, но при обмазывании достаточным количеством костылей позволяет не заморачиваться тем, _как именно_ запросы-ответы попадают с одного сервера на другой.
ну вот я не знаю на самом деле про масштабирование
от того что ты ноду в кластер подключишь не вырастет у тебя производительность же сама по себе
источник

LL

Lama Lover in ErlangRus
Yauheni Tsiarokhin
вообще мысль о том что нет классическиз проблем мне кажется правильной
Суть в том, в теоретической информатике разницы между кластером и асинхронными процессами в одном потоке очень мало. Единственное отличие — надёжность сети. Поэтому, если смотреть со стороны скорости вычислений, лучше всегда выбирать одну машину с N ядрами, чем две машины с N/2 ядрами

Армстронг вообще говорил что основное преимущество кластеров перед одинокими машинами в том, что это позволяет изолировать hardware failures
источник

DZ

Danil Zagoskin in ErlangRus
Yauheni Tsiarokhin
ну вот я не знаю на самом деле про масштабирование
от того что ты ноду в кластер подключишь не вырастет у тебя производительность же сама по себе
если у тебя нагрузка такая, что миллион процессов перестают влезать в один сервер (по памяти или по процессору), то половину этого миллиона можно вынести на соседнюю машину, и доработка напильником будет достаточно лайтовая.
Но как только часть нод кластера будет рестартовать, или сеть начнёт лагать, начнутся проблемы, трудно решаемые в любом языке.
источник

LL

Lama Lover in ErlangRus
Ещё один сценарий — географическое разделение программы. Если пользователи сидят в Китае и США, то для меньшего латенси лучше иметь по серверу в Китае и США, чем один сервер где-то в Европе
источник

YT

Yauheni Tsiarokhin in ErlangRus
Lama Lover
Ещё один сценарий — географическое разделение программы. Если пользователи сидят в Китае и США, то для меньшего латенси лучше иметь по серверу в Китае и США, чем один сервер где-то в Европе
а ведь действительно
источник

YT

Yauheni Tsiarokhin in ErlangRus
Danil Zagoskin
если у тебя нагрузка такая, что миллион процессов перестают влезать в один сервер (по памяти или по процессору), то половину этого миллиона можно вынести на соседнюю машину, и доработка напильником будет достаточно лайтовая.
Но как только часть нод кластера будет рестартовать, или сеть начнёт лагать, начнутся проблемы, трудно решаемые в любом языке.
понял
источник

DZ

Danil Zagoskin in ErlangRus
Lama Lover
Ещё один сценарий — географическое разделение программы. Если пользователи сидят в Китае и США, то для меньшего латенси лучше иметь по серверу в Китае и США, чем один сервер где-то в Европе
и distribution в таком сценарии работать почти не будет, если я правильно помню.
источник

YT

Yauheni Tsiarokhin in ErlangRus
Danil Zagoskin
и distribution в таком сценарии работать почти не будет, если я правильно помню.
почему?
источник

DZ

Danil Zagoskin in ErlangRus
Yauheni Tsiarokhin
почему?
в первую очередь — скорость и надёжность сети, из-за чего кластер будет регулярно рассыпаться
плюс всякие артефакты вроде безопасности, но это вторично.
источник

DZ

Danil Zagoskin in ErlangRus
ещё при использовании distribution в реальном мире важно не использовать global регистрацию имён (и, кажется, мнезию как следствие этого). При рестарте нескольких нод я ловил дикие гонки, приводившие этот самый global в неработоспособное состояние, требующее остановки всего кластера.
источник

LL

Lama Lover in ErlangRus
Danil Zagoskin
в первую очередь — скорость и надёжность сети, из-за чего кластер будет регулярно рассыпаться
плюс всякие артефакты вроде безопасности, но это вторично.
Да, я бы скорее из-за безопасности такое бы не стал делать. Хотя, если есть выделенный канал или трафик шифруется...
источник

DZ

Danil Zagoskin in ErlangRus
Lama Lover
Да, я бы скорее из-за безопасности такое бы не стал делать. Хотя, если есть выделенный канал или трафик шифруется...
IPSec, в общем, всегда можно поднять, освободив себя от проблем с distribution over TLS
источник

LL

Lama Lover in ErlangRus
Danil Zagoskin
ещё при использовании distribution в реальном мире важно не использовать global регистрацию имён (и, кажется, мнезию как следствие этого). При рестарте нескольких нод я ловил дикие гонки, приводившие этот самый global в неработоспособное состояние, требующее остановки всего кластера.
Я процессы в global никогда не регистрировал, а вот всякими вещами типа global:trans довольно успешно пользуюсь
источник

DZ

Danil Zagoskin in ErlangRus
В общем, пока что для меня наиболее интересный сценарий использования distribution — это remsh через медленный линк (с предварительной настройкой пингов, разумеется). Это позволяет с удобством вводить команды локально, а исполняться они будут удалённо, делая отладку приятной.
Сюда же локальный Observer с подключением к удалённой ноде, но тут появляются нюансы, если процессов очень много.
источник

DZ

Danil Zagoskin in ErlangRus
Lama Lover
Я процессы в global никогда не регистрировал, а вот всякими вещами типа global:trans довольно успешно пользуюсь
как часто у тебя случаются коллизии? Если я правильно помню, registry именно на локах у меня вставал колом — были таймауты при выборе лидера
источник