Novator / Pandora

P2P Social Network
Other
147 stars 32 forks source link

Распределённые ноды. Erlang. #21

Closed Slavenin closed 8 years ago

Slavenin commented 8 years ago

Привет. Есть предложение запилить ноды пандоры на erlang (или elixir). Т.е на руби остаётся графический интерфейс, который запускает/останавливает и обменивается данными c нодой erlang запущенной на компе пользователя. А эта нода уже шлёт инфу другим нодам и соответсвенно интерфейсам. Т.е. схема получается следующая: схема Далее между собой взаимодействуют только ноды. NAT в данном случае можно обойти. Каждая нода хранит списк известных ей нод, который периодически обновляется. Например, одна нода узнала о другой, она берёт и рассылает инфу о новой ноде по своему адресному списку. Т.е. простенький аналог маршрутизатора i2p.

Novator commented 8 years ago

Здарова. А чем ruby-то не угодил? Мне дак очень нравится - пересаживаться причин не вижу. Но если хочешь, то конечно - занимайся, только всячески поприветствую.

Slavenin commented 8 years ago

Какое количество соединений способен держать руби? Пару тысяч? На erlang можно поддерживать без особых затрат пару миллионов. Чтобы что-то писать, надо сначала определиться с апи. Какие запросы будет слать гуй к ноде и нода к гую.

fAntel commented 8 years ago

1) Я хорошо отношусь к erlang'у и, если бы Пандора была централизованой сетью, то переписать взаимодействие с нодами на erlang было бы реально отличной идеей. Но Пандора является децентрализованной сетью, в которой мгновенный ответ нужне только для видео и текстовых сообщений. Зачем ей миллион одновременных соединений. А если Вы считаете что ей такое реально нужно, то как вы думаете она будет работать на мобильных устройствах? (Я так понимаю об этом речи пока не идёт, но предполагалось что Пандора будет user-friendly системой, а многие люди используют пк только для работы и игр, а социальное взаимодействие происходит посредством мобильных устройств, где нет возможности держать миллионы соединений одновременно). 2) Вы предлагаете переписать на erlang исключительно сетевое взаимодействие или вообще оставить на ruby только работу с UI, а на erlang переписать работу с данными, сетью и базой данных? Это нужно решить прежде чем описывать апи. 3) Если предполагается переписывать на erlang только сетевую часть, то в коде Пандоры есть модуль Network, который описывает несколько классов используемых для сетевого обмена между нодами. Если перенести всю логику работы с сетью на erlang, то все public методы, поля и константы из этого модуляю и будут составлять апи и по сути их код будет необходимо заменить взаимодействием с модулем, написанным на erlang'е. Это позволит даже переносить код частями и сразу заодно покрывать их тестами. PS Я не являюсь контрибьютором Пандоры и высказиваю лишь своё личное мнение

Slavenin commented 8 years ago

@fAntel,

  1. быстрый поиск показывает, что собрать erlang под ведроид вполне возможно. Держать связь со всеми нодами не рационально, достаточно иметь их адреса в адресной книге и коннектиться только для обмена сообщениями и получения информации. Для её обновления можно постоянно обходить список из адресной книги и писать в бд.
  2. Только сетевое взаимодействие.
  3. Я не силён в руби и разбираться в ~25k строк кода буду долго. Поэтому я предлагаю составить апи тому, что уже знает как работает система.
Novator commented 8 years ago

Интересное кино - Slavenin не хочет учить ruby и разбираться в НАПИСАННОМ коде, а Novator должен вдруг выучить erlang и начать разбираться в НЕНАПИСАННОМ коде! С чего это вдруг??

Вас таких много. Вчера мне предъявляли, что не на C написано, сегодня - что не на Erlang, а завтра придёт очередной анонимус и скажет переписывай на Rust (Java, C++, Python, Lisp, Perl, C#, впиши недостающее). У каждого будут свои вполне убедительные доказательства (я гарантирую это!), и что, каждый раз я должен учить новый язык и переписывать код Пандоры?!

Нет уж, дорогие мои юные и ленивые анонимусы. Если вы хотите видеть код НЕ на руби - открываете редактор и фигачите код на своём любимом языке!

И вот когда я увижу 25000 строк кода на другом языке, тогда я ещё погляжу и подумаю - а лучше ли получилось, чем на руби? А больше ли функционала в вашем форке? И если увижу, что ваши 25 тыщ строк эффективнее, чем мои, то проникнусь уважением и, возможно, включусь в разработку на чужом и нелюбимом для меня языке.

Novator commented 8 years ago

По поводу API, протокола, форматов данных читайте "Руководство пользователя" (файл guide.ru.odt). Если возникнут КОНКРЕТНЫЕ вопросы (не в общем и целом, а конкретно по алгоритмам), то обращайтесь - с удовольствием пообщаюсь с практикующими программистами.

Slavenin commented 8 years ago

Нифига не понял зачем тебе учить erlang o_O? Но твое отношение к коду проекта очень печалит. И с таким подходом врят ли система когда-то обретёт популярность... Так и будешь писать её один. Если бы код пандоры был разделён на модули, тогда можно было бы говорить об изучении нужной части, но когда всё в одном god-файле, нет уж, увольте... Я найду, чем мне заняться. Удачи.