Size: a a a

Scala User Group

2021 June 12

NM

Nikita Matveenko in Scala User Group
Если не хотите автоматическое создание акка кластера, тк считаете что оно больше вредит, то его можно выключить и заходить в кластер вручную через хттп апи
источник

NM

Nikita Matveenko in Scala User Group
Если акка дискавери не подходит и хочется выключить автосоздание акка кластера, то есть трюк:
В конфиге про сид нод лист поставить первым элементом несуществующий акка адрес, чтоб невозможно было поднятия приложения на таком адресе
источник

AM

Alexander Myodov in Scala User Group
Хмхм, или я не понимаю, как эти вещи решают мою проблему, или я что-то про них не знаю.

Вот в рамках моей задачи разделим узлы кластера, терминологически, на «серверы» (те, которые в сид-листе, и про которые знают все клиенты) и «клиенты» (которых в сид-листе нет, но которые как раз в кластер к сидам и цепляются). Условно говоря, про серверы знают заранее все участники кластера; клиенты цепляются динамически, и про них кластер узнаёт только в момент прицепления.

Бутстрап – это хорошо, конечно. Помогает найти соседей в момент запуска узла. Но в нашем случае все серверы и так прописаны в сид-листы. Все знают, с кем бутстрапиться.
SBR – да, это разбираться, что происходит, когда в кластере вдруг частично пропало коннективити между узлами. Но у нас оно даже не пропало – у нас серверы сами, легально, официально вышли из кластера. Graceful shutdown-ились, а не просто упали. А клиенты – остались.

И теперь у клиентов – свой кластерочек. Живой, они себе в нём живут. И они забыли про то, что когда-то там были сид-узлы. Потому что сид-узлы вышли.
А потом сид-узлы заново поднялись и запустили «свой новый кластер». И у нас стало два кластера. Первый – в котором остались клиенты. Второй – который подняли серверы, когда перезапустились.
Получился класс, в котором школьники затупили в свои телефончики и не заметили, что все учителя вышли из класса. И школьники сидят и продолжают тупить. Вместо того, чтобы начать искать, а где учителя.


И бутстрап тут, по идее, не поможет. Клиенты уже забутстраплены (сид-листами), но не догадываются попытаться переконнективаться к seed-ам. Потому что те вышли. Потому что какая-то общая идея кластера – что узлы заходят в кластер, а не кластер пытается переприсоединиться к узлам.

И SBR тоже. Не было никакого split-brain-а на самом деле, был вполне легальный выход всех серверов из кластера. И была полная апатичность по этому поводу всех клиентов, вместо того чтобы «ааа, хост с ролью seed стал down, дай-ка я буду пытаться к нему присоединиться сам, а не ждать, когда он сам присоединится к кластеру».
источник

AM

Alexander Myodov in Scala User Group
Но тогда оно создаст кластер, прицепившись к любому другому сиду, нет?
источник

ЮБ

Юрий Богомолов... in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну вот это же не подобие GOF для FP, это просто GOF + FP
источник

AM

Alexander Myodov in Scala User Group
GOF не выглядит чем-то жутко уникальным и интеллектуальным. Это не набор каких-то базовых научных концепций, а, скорее, набор именно что практик и лайфхаков, как в старой и ещё ничего тогда не умеющей Java реализовать кучку полезных примитивов.
Которые в более современных языках (и даже более современной Java) уже реализовываются как-то... не задумываясь.
Не, ну ей-богу, передавая куда-то лямбды (и даже типизированные лямбды), или привязывая лямбды к каким-то ключам, ты уже даже не думаешь – «ба, да это же Классический Паттерн Command».
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Спасибо за ваше мнение. А зачем мне эта информация?
источник

AM

Alexander Myodov in Scala User Group
Для общего размышления, а чем бы могло быть «GOF для FP»?..
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Понятно, спасибо
источник

NM

Nikita Matveenko in Scala User Group
Зайти в кластер и создать новый кластер это разные операции, создание кластера бывает ручным или автоматом, автоматом до появления режима дискавери только через сид нод лист конфиг можно было, если кластера нет и текущая нода это первая нода в списке сид нод лист конфиге, то разрешается делать селф джоин (создание нового кластера). Поэтому очень важно чтоб этот сид нод лист конфиг был одинаковый у всех участников кластера, иначе есть вероятность создание лишних кластеров (эффективно сплит брейн проблемам)
источник

SA

Sergey Alaev in Scala User Group
Как правильно делать тайпклассы для рекурсивных типов? Например, Show для
case class A(b: Option[B])
case class B(a: Option[A])
источник

IP

Ilya Petrov in Scala User Group
Кто пользовался kamon? Он там инструментирует код и логи от него живут своей жизнью и не реагируют на logback конфиг основного проекта. Как это поменять, может быть кто-то сталкивался?
источник

λ

λoλcat in Scala User Group
shapeless.Lazy
В скале3 колл-бай-нейм юзинги
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Вроде в скале2 были тоже байнейм имплиситы? Или я путаю с чем-то?
источник

IT

Igal Tabachnik in Scala User Group
В 2.13 вроде, но они у меня чего-то не работалин(компилер вываливался)
источник

λ

λoλcat in Scala User Group
Никогда не было
источник

IT

Igal Tabachnik in Scala User Group
Как, мне Майлс сказал что впилил
источник

λ

λoλcat in Scala User Group
В дотти добавили, в скале2 был лейзи на макроговне
источник

λ

λoλcat in Scala User Group
Ну может уже портировали
источник