MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
Zacateca сказал(а):

ну какое задание, такое и решение.

Никаких цифр нет, данных по географии серверов нет, по критичности компонентов инфраструктуры тоже.

Плюс для всего этого ещё нужно понять на каком уровне идёт разработка системы - на этапе концептуального проектирования или на этапе пересборки из того что есть физически в наличии и уже как-то работает.

Нажмите, чтобы раскрыть...

Поэтому и пытаюсь у ТС'а цифры выбить) А то сейчас окажется что они ожидают 10к пользователей в пике и никакого роста, и тут в принципе разговор можно закрывать и забить на схемы горизонтального масштабирования

 

Renderhauer сказал(а):

как инженер по нагрузочному тестированию заявляю, что 500 - 1200 - далеко не самые большие цифры HAhaa.png

хотя конечно от транзакций и системы сильно зависит

недавно написал заглушку, которая держит 90к тпс кста Okayg.png 

Нажмите, чтобы раскрыть...

Не самые большие понятно, но и далеко не маленькие) И надо не забывать что 1200 RPS при раздаче статики, 1200 RPS при выполнении сложной бизнесс логики это абсолютно разные цифры, в первом случае я на маке домашнем с nginx'ом все раздам, а во втором мне уже нужна хорошая инфраструктура, горизонтально масштабируемая, с балансерами, сервис мешами и т.п.

Максим Феофилов

Пользователь

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

Максим Феофилов

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

Renderhauer сказал(а):

как инженер по нагрузочному тестированию заявляю, что 500 - 1200 - далеко не самые большие цифры HAhaa.png

хотя конечно от транзакций и системы сильно зависит

недавно написал заглушку, которая держит 90к тпс кста Okayg.png 

Нажмите, чтобы раскрыть...

я как разраб скажу. цифры показать можно любые, вопрос цены. 

А вот, показать 10к запросов в секунду с базой, балансами и при этом уложиться в 1к$ в месяц, это надо суметь. 

+ сокеты, и слей на время ответа. 

 

MEDI_OFF сказал(а):

Поэтому и пытаюсь у ТС'а цифры выбить) А то сейчас окажется что они ожидают 10к пользователей в пике и никакого роста, и тут в принципе разговор можно закрывать и забить на схемы горизонтального масштабирования

 

Не самые большие понятно, но и далеко не маленькие) И надо не забывать что 1200 RPS при раздаче статики, 1200 RPS при выполнении сложной бизнесс логики это абсолютно разные цифры, в первом случае я на маке домашнем с nginx'ом все раздам, а во втором мне уже нужна хорошая инфраструктура, горизонтально масштабируемая, с балансерами, сервис мешами и т.п.

Нажмите, чтобы раскрыть...

Да что с него выбивать. я предполагаю, что чел просто упражняется для себя \ по фану. 

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
Максим Феофилов сказал(а):

А вот, показать 10к запросов в секунду с базой, балансами и при этом уложиться в 1к$ в месяц, это надо суметь. 

Нажмите, чтобы раскрыть...

Я бы сказал за гранью возможного,  ну только если нет требований к актуальности данных, тогда можно закэшиовать ответы и как статику из оперативки отдавать, и обновлять раз в N минут. Опять же если позволит объем данных

Максим Феофилов

Пользователь

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

Максим Феофилов

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

MEDI_OFF сказал(а):

Я бы сказал за гранью возможного,  ну только если нет требований к актуальности данных, тогда можно закэшиовать ответы и как статику из оперативки отдавать, и обновлять раз в N минут. Опять же если позволит объем данных

Нажмите, чтобы раскрыть...

отложенная запись в базу. балансы в мемори на балнс сервере. 

мелкие api. самое дорогое rebbit.

и конечно же аккуратное использование ресурсов, что бы гарбедж коллектор не повлиял на скорость обработки

 

MEDI_OFF сказал(а):

Я бы сказал за гранью возможного,  ну только если нет требований к актуальности данных, тогда можно закэшиовать ответы и как статику из оперативки отдавать, и обновлять раз в N минут. Опять же если позволит объем данных

Нажмите, чтобы раскрыть...

но да. чёт с 1к баксов я приврал. но цифр не помню(запросы и слей помню, цель уменьшить стоимость помню , но точную стоимость не считал). я так прикинул цены на aws, один рмк сервак дорогой. 

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 15471

Рейтинг: 16155

Renderhauer

Регистрация: 14.12.2013

Сообщения: 15471

Рейтинг: 16155

MEDI_OFF сказал(а):

Не самые большие понятно, но и далеко не маленькие) И надо не забывать что 1200 RPS при раздаче статики, 1200 RPS при выполнении сложной бизнесс логики это абсолютно разные цифры, в первом случае я на маке домашнем с nginx'ом все раздам, а во втором мне уже нужна хорошая инфраструктура, горизонтально масштабируемая, с балансерами, сервис мешами и т.п.

Нажмите, чтобы раскрыть...

ну эт все правда конечно

впрочем дешево и сердито можно балансить рандомным распределением по 1/Х от трафика на Х подов, а если не справляемся, то ну ладно давайте накинем еще подов HAhaa.png

Максим Феофилов сказал(а):

я как разраб скажу. цифры показать можно любые, вопрос цены. 

А вот, показать 10к запросов в секунду с базой, балансами и при этом уложиться в 1к$ в месяц, это надо суметь. 

+ сокеты, и слей на время ответа. 

Нажмите, чтобы раскрыть...

я бы сказал что почти невозможно Okayg.png 

Максим Феофилов

Пользователь

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

Максим Феофилов

Регистрация: 06.09.2018

Сообщения: 93

Рейтинг: 19

Renderhauer сказал(а):

ну эт все правда конечно

впрочем дешево и сердито можно балансить рандомным распределением по 1/Х от трафика на Х подов, а если не справляемся, то ну ладно давайте накинем еще подов HAhaa.png

я бы сказал что почти невозможно Okayg.png 

Нажмите, чтобы раскрыть...

ты прав, а я клоун FeelsClownMan.png 

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 15471

Рейтинг: 16155

Renderhauer

Регистрация: 14.12.2013

Сообщения: 15471

Рейтинг: 16155

Максим Феофилов сказал(а):

ты прав, а я клоун FeelsClownMan.png 

Нажмите, чтобы раскрыть...

да не, от тз ж зависит pekaReally.png

ktulhu74

Пользователь

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

ktulhu74

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

Karasiq сказал(а):

у какой то Kafka

Нажмите, чтобы раскрыть...

Кафка это архененно большая, сложная и тяжёлая штука, дя больших дядей у которых по мульёну сообщений в секунду, ему оно нафиг не надо

Karasiq сказал(а):

Еще хочу добавить, что реляционные бд не особо про хайлоад, так что будьте осторожны.

Нажмите, чтобы раскрыть...

Эммм, ээээ... чо? А что тогда про хайлоад? Редис?

Valkyria

Пользователь

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

Valkyria

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

HABO3 сказал(а):

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

Нажмите, чтобы раскрыть...

По идее, мог бы просто сделать несколько "главных серверов" и делать к нему обращение через load balancer

Типа такого:

UJHprxr.png

У этого есть свои минусы: высокая нагрузка чтения в бд, write contention(конфликты - если два разных инстанса делают манипуляцию в бд над одним и тем же и т.д.)

Поэтому ты можешь прийти к такому для решения некоторых проблем:

Q1U6gmn.pngWmOiCM3.png

Что добавляет сложности к архитектуре, поэтому если бы у меня было мало рук / ресурсов, и мне нужна была бы нереальная горизонтальная масштабируемость, распределённые вычисления, то я бы просто построил бы систему на акторной модели: Akka(Java), Microsoft Orleans(C#) т.к. оно из коробки решает много проблем: отказоустойчивость, акторная модель дает потоко безопасность(что важно для распределительной системы и тебе не нужно самому ставить какие-то lock и как-то париться насчет race condition), они(инстансы) координируют между собой и так далее.

Выглядило бы оно примерно вот так:

mGc7y28.jpg

Где круг - кластерная система на акторах в облоке и твое сердце, а вокруг него я бы строил всякие api, сайты и прочее. 

ktulhu74

Пользователь

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

ktulhu74

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

HABO3 сказал(а):

ответ отправляется назад на главный сервер, а он возвращает ответ уже какому то одному серверу из четырех

Нажмите, чтобы раскрыть...

Звучит как работа для простого лоадбалансера типа nginx/envoy

qw_e

Пользователь

Регистрация: 03.02.2023

Сообщения: 43

Рейтинг: 39

qw_e

Регистрация: 03.02.2023

Сообщения: 43

Рейтинг: 39

Нужно попробовать спросить еще на более профильном ресурсе чем ДОТА2, например, на woman.ru, лучшие_рецепты_майонеза.com, или на одноклассниках, там же, обычно, все айтишнеки тусуются. Мы даже на работе импортозаместили стэковерлфлоу, и гоняем за ответами по багам на стримы головача.

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
ktulhu74 сказал(а):

Кафка это архененно большая, сложная и тяжёлая штука, дя больших дядей у которых по мульёну сообщений в секунду, ему оно нафиг не надо

Нажмите, чтобы раскрыть...

Ну ты чет загнул, он как раз таки и позволяет тебе пропускать такое кол-во сообщений только потому что концептуально это очень простая штука (По факту просто лог сообщений), то что там под капотом конечно все не так просто это понятно, но как для юзера и с точки зрения концепций заложенных в нем, это чисто батин жигуль, максимально простой

 

Valkyria сказал(а):

По идее, мог бы просто сделать несколько "главных серверов" и делать к нему обращение через load balancer

Типа такого:

UJHprxr.png

У этого есть свои минусы: высокая нагрузка чтения в бд, write contention(конфликты - если два разных инстанса делают манипуляцию в бд над одним и тем же и т.д.)

Поэтому ты можешь прийти к такому для решения некоторых проблем:

Q1U6gmn.pngWmOiCM3.png

Что добавляет сложности к архитектуре, поэтому если бы у меня было мало рук / ресурсов, и мне нужна была бы нереальная горизонтальная масштабируемость, распределённые вычисления, то я бы просто построил бы систему на акторной модели: Akka(Java), Microsoft Orleans(C#) т.к. оно из коробки решает много проблем: отказоустойчивость, акторная модель дает потоко безопасность(что важно для распределительной системы и тебе не нужно самому ставить какие-то lock и как-то париться насчет race condition), они(инстансы) координируют между собой и так далее.

Выглядило бы оно примерно вот так:

mGc7y28.jpg

Где круг - кластерная система на акторах в облоке и твое сердце, а вокруг него я бы строил всякие api, сайты и прочее. 

Нажмите, чтобы раскрыть...

Картинки красивые конечно (первые две схематичные и хорошо показывают концепцию, но никак не помогут в реализации, а вторая вообще супер абстрактная, которая никак не матчится ни на что без контекста), но для ТС'а не несут никакой абсолютно пользы, ибо цифр мы так никаких и не получили, и что то конкретное советовать как по мне не правильно

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

 

Valkyria

Пользователь

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

Valkyria

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

MEDI_OFF сказал(а):

Вторая вообще супер абстрактная

Нажмите, чтобы раскрыть...

Согласен, без контекста и понимания как оно работает внутри пользы почти не несет, да и лучше не нашел, а рисовать неохота. И все же лучше, чем ничего.

 

MEDI_OFF сказал(а):

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

Нажмите, чтобы раскрыть...

Это была "реклама" плюшек), раз уж начал про акторную модель.

 

MEDI_OFF сказал(а):

Цифр мы так никаких и не получили, и что то конкретное советовать как по мне не правильно

Нажмите, чтобы раскрыть...

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

 

Да и в целом, как ты и сказал, без цифр это все лирика. Тут говорят про очень объемную базу, но насколько? У нас на работе в одной системе используется MySQL и за год у неё несколько десятков миллионов записей в БД(т.к. в среднем у нас за год проходит 5.5 миллионов пассажиров) и для неё это вообще фигня. В реале ТСу может тупо подойдет простая микросервисная архитектура без каких-то наворотов и всё будет летать под их задачи и кол-во пользователей. 

 

 

Siller__

Пользователь

Регистрация: 31.10.2014

Сообщения: 1482

Рейтинг: 470

Siller__

Регистрация: 31.10.2014

Сообщения: 1482

Рейтинг: 470

HABO3 сказал(а):

То есть, по идее, он больше всех подвержен нагрузке. Адекватного решения не придумал. Какие могут быть варианты на этот счёт?

Нажмите, чтобы раскрыть...

в чем проблема? во многих реализациях есть api gateway и живут же нормально как-то

BloodNemesis

Пользователь

Регистрация: 03.02.2015

Сообщения: 14

Рейтинг: 4

BloodNemesis

Регистрация: 03.02.2015

Сообщения: 14

Рейтинг: 4

HABO3 сказал(а):

Суть: щас с товарищами делаем проект, нацеленный на мощную нагрузку с большим количеством файлов, запросов и т.д. Проект включает в себе больше 10 крупных системных разветвлений. Что собственно логично, для оптимизации ресурсов, необходимо 100% сделать разделение серверов. Один большой компонент, к примеру, БД - свой сервер. Была составлена схема.

 

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

 

Если нужно: для  SPA будет использоваться VueCLI, все остальные серверы будут работать на Laravel (PHP) / nginx. База данных: PostgreSQL. Дистрибутив: Slackware

 

 

Схема
Нажмите, чтобы раскрыть...

Смотря в чем затык, если в запросах к БД - то делать реплики сервисов бд, подключенных к кластерному сетевому хранилищу (ceph и прочие)

Если с бд проблем нет - поставить овер ваших контейнеров LB, лучше конечно хардварный, но можно юзать и haproxy.

А так заворачивайте всё в контейнеры и юзайте кубер с LB и PVC на Ceph.

 

Технических подробностей очень мало, больше ничем помочь не смогу.

ktulhu74

Пользователь

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

ktulhu74

Регистрация: 18.11.2014

Сообщения: 3896

Рейтинг: 1541

BloodNemesis сказал(а):

и юзайте кубер

Нажмите, чтобы раскрыть...

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

 

Хотя я не уверен, что у них там вообще есть контейнеры

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
BloodNemesis сказал(а):
Нажмите, чтобы раскрыть...

А я смотрю ты оптимист, раз даешь такие советы сходу) Я бы все таки советовал если затыки в бд сначала сами запросы глянуть и настроить БД, и если ток там все идеально, то тогда уже дальше идти,

BloodNemesis сказал(а):
Нажмите, чтобы раскрыть...

Чел ни слова не говорил про контейнеры (скорее всего он и не знает что это). Опять же если проект и архитектура кривая, все эти советы идут в помойку, хоть обмажься ты всеми на свете технологиями которые советуют CNCF

mqwz

Пользователь

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

mqwz

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

смотри, принцип - главный сервер никогда не должен отвечать за авторизацию пользователя. От этого и пляши.

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
mqwz сказал(а):

смотри, принцип - главный сервер никогда не должен отвечать за авторизацию пользователя. От этого и пляши.

Нажмите, чтобы раскрыть...

Почему это?

mqwz

Пользователь

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

mqwz

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

MEDI_OFF сказал(а):

Почему это?

Нажмите, чтобы раскрыть...

потому что любой школьник тебе мейн сервер положит энным количеством запросовroflanLico.png?1616515069

в случае разделения на аксесс и мейн - положит аксесс, да и х** с ним. Можно даже несколько аксесс серверов делать, но это уже для более серьезных дядь.

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
mqwz сказал(а):

потому что любой школьник тебе мейн сервер положит энным количеством запросовroflanLico.png?1616515069

в случае разделения на аксесс и мейн - положит аксесс, да и х** с ним. Можно даже несколько аксесс серверов делать, но это уже для более серьезных дядь.

Нажмите, чтобы раскрыть...

Ну если твой проект ложит любой школьник это вопросы уже к тебе скорее а не к тому где авторизация, и все равно не понял прикола, ну разделишь ты сервера, тебе от этого мейн не положить что ли теперь?

mqwz

Пользователь

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

mqwz

Регистрация: 09.07.2017

Сообщения: 2059

Рейтинг: 1131

MEDI_OFF сказал(а):

Ну если твой проект ложит любой школьник это вопросы уже к тебе скорее а не к тому где авторизация, и все равно не понял прикола, ну разделишь ты сервера, тебе от этого мейн не положить что ли теперь?

Нажмите, чтобы раскрыть...

представь, что будет если не светить айпишник мейна, а светить только айпишник аксесса и тот внешний PepeWay.png?1601305491

MEDI_OFF

Пользователь

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

MEDI_OFF

Регистрация: 19.07.2018

Сообщения: 58

Рейтинг: 17

img
mqwz сказал(а):

представь, что будет если не светить айпишник мейна, а светить только айпишник аксесса и тот внешний PepeWay.png?1601305491

Нажмите, чтобы раскрыть...

Чел ты явно не совсем понимаешь что пишешь

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

2. Если проект не крупный то ты и так и так светишь ip наружу и если и юзаешь фронт, то скорее всего что-то типо nginx который и проксирует запросы на твой сервер (и скорее всего он и твой проект стоят на одной машине) так что тебе ничего не мешает положить эту морду и снова положить проект, так как не достучаться до сервака (о том что положить nginx сложно мы опустим детали)

mqwz сказал(а):
Нажмите, чтобы раскрыть...

3. А какой ты еще ip тебе светить как не внешний XD

 

ttutiki

Пользователь

Регистрация: 28.09.2013

Сообщения: 1816

Рейтинг: 618

ttutiki

Регистрация: 28.09.2013

Сообщения: 1816

Рейтинг: 618

Поднимай да гоняй тесты PepeKeyboard.gif?1613921689