The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В nginx появилась поддержка балансировки UDP-соединений , opennews (?), 15-Мрт-16, (0) [смотреть все] –1

Сообщения [Сортировка по времени | RSS]


1. "В nginx появилась поддержка балансировки UDP-соединений "  +5 +/
Сообщение от dkg (?), 15-Мрт-16, 17:15 
nginx радует. Может кто посоветовать хорошую литературу по настройки для highload?
Ответить | Правка | Наверх | Cообщить модератору

2. "В nginx появилась поддержка балансировки UDP-соединений "  –1 +/
Сообщение от www2 (??), 15-Мрт-16, 17:44 
Highload не настраивают, их пишут. При отсутствии архитектурных решений, предусматривающих масштабирование проекта на множество серверов, всякие настройки бесполезны, потому что не позволят выжать из железа больше, чем то, на что оно способно.

Если вы считаете, что Highload - это баззворды вроде Mongo, Django, Memcache и Redis, то мне кажется, что вы ошибаетесь. Всё это - костыли, которые максимально удаляют вас от наиболее эффективного решения. Нормальный проект - это многопроцессный или многопоточный демон с общей памятью, который всё своё носит с собой (не использует сторонних фреймворков или демонов, разработчики которых внезапно могут объявить нужные вам фичи устаревшими и неподдерживаемыми) и всё нужное держит при себе (сессии пользователей вместе со всеми нужными для сеанса объектами хранит в общей для всех воркеров оперативной памяти, а не грузит их при каждом чихе из базы данных, сохраняя в Memcache, "для кэширования").

И конечно, Highload - это не только веб. Чтобы написать производительное веб-приложение, нужно отбросить общепринятую в вебе шелуху и использовать подходы, которые используются вне веба. Там точно есть чему поучиться, потому там хорошо понимают, что одними баззвордами реальность не обманешь.

Ответить | Правка | Наверх | Cообщить модератору

3. "микросервисы "  +/
Сообщение от anonnnn (?), 15-Мрт-16, 17:55 
А как же микросервисная архитектура, позволяющая легче масштабировать горизонтально?
Ответить | Правка | Наверх | Cообщить модератору

5. "микросервисы "  +1 +/
Сообщение от Аноним (-), 15-Мрт-16, 18:24 
Микросервисы к х-йлоаду относятся только как один из путей потребления вычислительных ресурсов. А так, у тебя голова прожужжаная торгашнёй со всего интернете.
Ответить | Правка | Наверх | Cообщить модератору

16. "микросервисы "  +/
Сообщение от Andrey (??), 15-Мрт-16, 19:58 
Микросервисы это скорее о подходе к разработке и релизу приложений (CI). И в отличии от монолитных монстров, масштабировать их гораздо проще и приятней, потому и ассоциируются как правильный паттерн для highload-сред.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

32. "микросервисы "  +2 +/
Сообщение от www2 (ok), 16-Мрт-16, 08:45 
> Микросервисы это скорее о подходе к разработке и релизу приложений (CI). И
> в отличии от монолитных монстров, масштабировать их гораздо проще и приятней,
> потому и ассоциируются как правильный паттерн для highload-сред.

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

Для обслуживания одного клиента совсем не обязательно все его запросы размазывать тонким слоем по всем серверам. Одним клиентом может заниматься один сервер. При этом данные клиента не обязательно сохранять после каждого запроса в постоянное хранилище и снова загружать всё из этого хранилища, чтобы вспомнить, чем он занимался в прошлом запросе, который был меньше секунды назад. Достаточно иметь арбитра, который будет отслеживать, на каком сервере сейчас обслуживается клиент. Достаточно чтобы серверы, обслуживающие клиентов, обменивались между собой сообщениями.

Короче - как работает настоящий Highload в его веб-ипостаси, можно увидеть массовых в онлайн-играх. Например вот:
https://habrahabr.ru/company/mailru/blog/182088/
https://habrahabr.ru/company/mailru/blog/220359/

Заметьте - нет ни слова про микросервисы, Django, Mongo, Redis, Memcache и Highload. Упоминается No-SQL в контексте "нам нужна консистентность, а No-SQL её как правило не обеспечивают". Люди думают головой и проектируют архитектуру, а не бросаются на модные слова.

Ответить | Правка | Наверх | Cообщить модератору

4. "В nginx появилась поддержка балансировки UDP-соединений "  +2 +/
Сообщение от Crazy Alex (ok), 15-Мрт-16, 18:01 
Эти "баззворды" как раз и дают "общую для всех воркеров оперативную память", независимо от того, где данный воркер запущен. Ну да, кастомный демон, держащий всё в себе - гораздо эффективнее, пока помещается на один сервер. И даже тогда надо как-то обеспечивать горячую замену - но это решаемо. Но как только инстансов становится много - про общую оперативную память можно и нужно забывать, и стандартные решения с известными граблями и путями их обхода рулят.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

24. "В nginx появилась поддержка балансировки UDP-соединений "  +2 +/
Сообщение от pavlinux (ok), 16-Мрт-16, 00:52 
Товарищи теоретики, курите Теорию автоматов, Робачевского, IPC, модели параллелизации.
В двух словах: Задача диктует модель реализации! Остальное - школьный срач.  
Ответить | Правка | Наверх | Cообщить модератору

30. "В nginx появилась поддержка балансировки UDP-соединений "  +1 +/
Сообщение от www2 (ok), 16-Мрт-16, 08:25 
> Товарищи теоретики, курите Теорию автоматов, Робачевского, IPC, модели параллелизации.
> В двух словах: Задача диктует модель реализации! Остальное - школьный срач.

Дело в том, что задача со временем меняется. Сначала это HTML-страничка со списком учеников школы, а потом оно дорастает до соцсети с миллионами активных пользователей. Почему-то есть общепринятые или хорошо раскрученные методы решения этой задачи. Элементы этого решения - микросервисная архитектура, Memcache, Redis, Mongo. Но использование этих баззвордов совсем не означает автоматически, что приложение готово к высоким нагрузкам и хорошо масштабируется.

На мой взгляд, слово Highload себя дискредитировало. Оно раскручено и активно впихнуто в мозги молодых программеров, желающих стать крутыми. Где звучит слово Highload, там сразу собираются сотни пионеров с горящими глазами, а производители железа довольно потирают ручки.

Ответить | Правка | Наверх | Cообщить модератору

37. "В nginx появилась поддержка балансировки UDP-соединений "  +/
Сообщение от pavlinux (ok), 17-Мрт-16, 20:04 
>> Товарищи теоретики, курите Теорию автоматов, Робачевского, IPC, модели параллелизации.
>> В двух словах: Задача диктует модель реализации! Остальное - школьный срач.
> Дело в том, что задача со временем меняется. Сначала это HTML-страничка со
> списком учеников школы, а потом оно дорастает до соцсети с миллионами
> активных пользователей.

Вы предлагаете масштабировать echo Hello World на 6 лямов юзеров? :)
Не, это очень даже рационально, с точки зрения зарплаты IT-отдела.

Ответить | Правка | Наверх | Cообщить модератору

29. "В nginx появилась поддержка балансировки UDP-соединений "  +/
Сообщение от www2 (??), 16-Мрт-16, 08:17 
>Эти "баззворды" как раз и дают "общую для всех воркеров оперативную память", независимо от того, где данный воркер запущен.

Ну да. Это же так удобно. Первую страницу клиент запросил у одного сервера, а следующую - у другого.

>Ну да, кастомный демон, держащий всё в себе - гораздо эффективнее, пока помещается на один сервер.

Если есть умный прокси, который каждого клиента будет постоянно отправлять на тот сервер, где этот клиент в последний раз обслуживался, то будет эффективнее.

>Но как только инстансов становится много - про общую оперативную память можно и нужно забывать, и стандартные решения с известными граблями и путями их обхода рулят.

Эти ваши Memcache с Redis никогда не заменят мозга. Клиента нужно стараться всегда обслуживать в одном и том же месте и хранить в этом месте все его данные в оперативке. Общее хранилище - оно для хранения данных между сеансами.

Стандартные решения - это метод грубой силы. Для тех, у кого нет мозгов, но много денег на железо.

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру