drumserLance Полностью нормализованная бд в реалиях преобладающего чтения - не жизнеспособна. Частые сложные выборки с джоинами и кучей параметров становятся достаточно медленными на больших бд. В следствии чего, приходится делать денормализацию или создавать так называемые "плоские базы данных", которые предназначены только для чтения. В туже степь разнообразные nosql - это всё о денормализации)
Тимур Шемсединов: nodeschool выборочно уже по-проходил воркшопы после скринкастов Ильи Кантора по ноде и прочтения его же учебника. Вашу лекцию посмотрел сегодня уже 2 раза) В принципе, как реализовать весь функционал в один процесс без всякого потенциала для масштабирования я представляю, но хочется что бы и все ядра работали, и при необходимости второй сервер в работу включить. Главные запары по правильному межпроцессорному и межсерверному взаимодействию(
По описанию, IAS имеет из коробки всё то, что мне нужно) Но я пока не представляю как это будет выглядеть для моей задачи. Будет создаваться "глобальная" структура данных, которая невидимым для меня способом будет синхронизироваться между всеми процессами и серверами? Надеюсь найду ответы после прочтения статей про IAS) Если можно, далее буду писать Вам на почту, всё-таки ЗВИ проект, ну вы понимаете))
Тимур Шемсединов: ЗВИ проект + образовательные цели))
Да и я зелёный ещё, что бы даже представлять какие-то потенциальные цифры.
Просто хочется въехать в принципы масштабирования и балансирования нагрузки. Ну и положить в гитхаб, что-то более-менее интересное, что бы потом прицепить к резюме и сказать: "Вот. Умею разрабатывать под хайлоад.")
И ещё важный момент: нужно, что бы сообщения приходили клиентам одновременно. С этим моментом вообще не ясно что делать. Через таймаут исполнять команды на клиентах, что ли...
А можно подоставать Вас в скайпе?)
Спасибо за ответ.
Подскажите пожалуйста, каким образом лучше всего выстроить архитектуру c возможностью масштабирования для чата c комнатками?
После гугла у меня только вот такие идеи:
1. Держать в мастер процессе объект с комнатами и соответствующими коннектами. Воркеры принимают коннекты и передают в мастер, который складывает их в объект с нужной комнатой. Когда надо бродкастить сообщение на какую-то группу, то эмитятся эвенты с мессагой во все мастер процессы, на всех машинах, для рассылки сообщения. Если группа в объекте-хранилище есть, то происходит рассылка по соответствующим коннектам из мастера.
2. Тоже самое, что в первом варианте, но для рассылки сообщений использовать воркеры. Т.е. когда эмитится эвент на рассылку в мастере, то передавать незанятому воркеру эвент со всеми коннектами для рассылки. Но так наверное, получается как-то хаотично.
3. Тоже самое, что в верхних вариантах, но держать отдельный специальный воркер для рассылки сообщений.
4. Redis pub/sub. Каждый коннект подписывать на канал соответствующий комнате.
А что значит чтобы он был в позициях с номерами, равными степеням двойки ? Насколько я понял, вы поняли что хотел автор, но я чёт не оч догнал. Ведь любая позиция и есть определённая степень двойки. Т.е.
0000 0010 - 2
0000 0100 - 4
0000 1000 - 8
0001 0000 - 16
0010 0000 - 32
и т.д.
olexandr7: да. А почему бы и нет? Вы думаете бэк и фронт в одно рыло не сделать?? И чайник сложно починить? А ещё сделать, что бы он отчёт о своём состоянии отображал онлайн можно. Вы думаете это всё одному человеку не реально??
Dementor: Я так утверждаю???? Я как раз утверждаю, что надо хотеть быть врачом!! Это должно нравиться, должно нравиться помогать людям...
У вас что-то с причинно следственными связями... Перечитайте то что я писал по слогам: То что вы говорите, это тоже самое, если хотеть стать врачом, что бы зарабатывать много денег.
Я приравниваю точку зрения оппонента к мысли о том, что корысть является основной мотивирующей и двигающей силой в профессиональной деятельности, что является не верным.
Мб автор имел ввиду, что работодатели ща очень обращают внимание на возраст. Хотя, ща большинство людей типичного совкового мировосприятия действительно ни на что не годны.
Mouseman: а вот как этому обучиться? Я то понимаю, что это не сложно. Но походу, что бы научиться это делать надо найти кого-то в оффлайне с опытом, что бы всё рассказал, показал и научил.
Вообще нетактично, с вашей стороны, делать такие выводы и задавать такие вопросы. Да и в геймдеве, кроме клепания гавна на юнити можно заниматься более чем-то серьёзным. Это одна из самых научноёмких отраслей программирования.
Да и какая нах разница зачем она ему. Человек хочет её знать и всё...
Emphyzem: гит, гулп в любой момент, когда вам это понадобится. Вещи не сложные. Лесс - только после того как будете с цсс на ты.
По поводу фреймворков. Раз они были написаны на каком-то определённом яп, то наверн с начала надо постичь этот яп, что бы потом без проблем выучить какой-то фреймворк. Да, есть подходы, когда почти сразу начинают с фреймворков, но это бред не нацеленный на профессиональную работу. ИМХО.
TechPlanet: думаю врятле тут ещё что-либо можно добавить к моему ответу. Есть ещё большая статья про устройство памяти от оч крутого разработчика. Называется "What every programmer should know about memory", но там нету ничего нового, что можно найти в тех книгах о которых я говорил.
Jeiwan: стоп стоп стоп)) Вы чёт не правильно понимаете понятие гика) Что значит "гик" стереотип?) Про то, что люди разные согласен, а остальное чёт вообще не то...
Гик - это человек страстно интересующийся чем-либо, а не просто бородач в свитере, который сутками на пролёт что-то дизасемблирует. Вот последнее как раз стереотипный образ гика...
Гиком может быть кто угодно... Быть компьютерным гиком, это тоже самое что быть автомобилистом. (Кста, на современный манер вполне можно говорить "автомобильным гиком", вместо автомобилиста) Просто разные сферы интересов.
Так вот, почти всех тех разных людей о которых вы говорите, которые могут быть программистами, объединяет то, что они компьютерные гики. Я слабо могу представить себе программиста, которому не нравилась бы компьютерная техника.
А если говорить об ИТ в целом, то ситуациая такая же... Как можно работать в компьютерной сфере и не увлекаться компьютерами??? Это же вообще бред... Я допускаю то, что может быть такая ситуация, когда на человека, к примеру, повлияли родители отправив его учиться куда-нибудь и чему-нибудь связанному с компьютерами. Но далеко ли этот человек зайдёт, и много ли он добьётся, если он будет делать то что ему не нравится? Думаю на этот вопрос вы сами знаете ответ.
Да, человек может работать в ИТ и не быть программистом, но не гика в ИТ я не представляю... Как можно заниматься тем, что тебе не нравится? Как человек может быть компетентным своей ИТ должности и не быть гиком?
Jeiwan: А кем тогда должен быть программист, если не гиком-технарём?
То что вы говорите, это тоже самое, если хотеть стать врачом, что бы зарабатывать много денег.