powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / подскажите по архитектуре высоконагруженной системы
25 сообщений из 63, страница 1 из 3
подскажите по архитектуре высоконагруженной системы
    #38129489
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет.

прежде всего, прошу простить меня, если запостил не в тот раздел.

представьте ситуацию, будто бы у вас онлайн-чат. в чате, у вас, ~200000 юзеров онлайн. каждый юзер, в минуту, пишет 2 сообщения.
и того, в минуту, получаем 400000 инсертов. в час получается - 24000000. ясно, что любая БД не осилит такое кол-во инсертов.
в добавок, представьте, что клиентская логика на серверной стороне настолько тяжела, что вы вынуждены запустить ваш сервис на 10ти машинах одновременно, чтоб распределить нагрузку.

при такой архитектуре сервиса, встает логичный вопрос: а как быть с БД?

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

благодарен.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129503
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXman...в час получается - 24000000. ясно, что любая БД не осилит такое кол-во инсертов...

это только Вам ясно. Мужики из Оралка(к примеру) об этом не слышали явно...

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

(круглый)
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129511
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolobok0,

т.е. 24 миллиона инсертов в час, это не много? оО
допустим. но вопрос в другом.

пусть, к примеру, миллиард. ну или сколько-то там, чтоб точно БД не успевала.

вопрос все тот же.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129545
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXman...чтоб точно БД не успевала....

сразу оговорюсь - в бою не был :) я о том, что на мой теоретический взгляд - вижу два вектора решения.
1) кластеризация
2) распределённые БД

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

где то так.
(круглый)
ЗЫ
кстати говоря, сайты с большой нагрузкой - стараются делать как скопище снимков хэтэмээльных страниц (как не странно это кажется на первый взгляд - но это оптимум по скорости). т.е. всякая динамика - это зло в данном случае. тем более обращение к БД.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129582
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolobok0,

kolobok01) кластеризация
2) распределённые БД

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


слишком общий ответ... подумаю, и постараюсь конкретизировать...

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

это понятно. но в данном вопросе вообще о сайте речь не шла.

касательно динамики, несколько наводящих вопросов ;):
что можно понимать как динамику? к примеру, история сообщений пользователя - это динамика? история времени логина/логаута, это тоже динамика? информация о том, сообщение пользователя было ответом на другое сообщение, или просто сообщение - тоже динамика?

спасибо.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129634
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXman...в минуту, получаем 400000 инсертов. в час получается - 24000000. ясно, что любая БД не осилит такое кол-во инсертов....
при такой архитектуре сервиса, встает логичный вопрос: а как быть с БД?Если запись не предусматривает никакой постобработки, то складывать в простой текстовый файл, который периодически пакетно заливать в БД.
Например:
Тестовый стенд - виртуальная машина на удаленном сервере, 2Г памяти. Подробностей про процессор и дисковую подсистему не помню.
БДselect * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

5 rows selected.SQL*LoaderTotal logical records skipped: 0
Total logical records read: 1098526
Total logical records rejected: 0
Total logical records discarded: 0
Total stream buffers loaded by SQL*Loader main thread: 231
Total stream buffers loaded by SQL*Loader load thread: 0

Run began on Thu Mar 29 12:51:57 2012
Run ended on Thu Mar 29 12:52:22 2012

Elapsed time was: 00:00:25.24
CPU time was: 00:00:03.15
Большая часть времени ушла на прокачку данных по сети. Локально все существенно быстрее.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129642
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99Если запись не предусматривает никакой постобработки, то складывать в простой текстовый файл, который периодически пакетно заливать в БД.
постобработки никакой нет.

но тут у меня еще вопрос: какой смысл складировать данные и потом скопом их вливать? ведь в таком случае мы положим БД полностью намертво. не логичней ли распределить кол-во инсертов по времени, или таки инсертить сразу по приходу?

PL99Elapsed time was: 00:00:25.24
т.е. это 25 секунд?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129662
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanно тут у меня еще вопрос: какой смысл складировать данные и потом скопом их вливать? ведь в таком случае мы положим БД полностью намертво.PL99периодически пакетно заливать
niXmanне логичней ли распределить кол-во инсертов по времени, или таки инсертить сразу по приходу?Транзакционная вставка не обеспечит необходимой производительности.
niXmanPL99Elapsed time was: 00:00:25.24
т.е. это 25 секунд?Да.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129664
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99периодически пакетно заливать
для ораклового лоадера с включенной опцией DIRECT
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129682
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99Транзакционная вставка не обеспечит необходимой производительности.
какой смысл, в данном контексте, имеет слово "транзакционная"? и откуда это слово вообще тут взялось? зачем тут транзакции, поясните?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38129685
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99периодически пакетно заливать
а почему не инсертить сразу, по приходу? в чем смысл откладывать?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130198
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
niXmanу вас, ~200000 юзеров онлайн
Вот это и есть самое узкое место. Трехзвенка.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130205
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_модniXmanу вас, ~200000 юзеров онлайн
Вот это и есть самое узкое место. Трехзвенка.
что такое "Трехзвенка" ?
а по сабжу есть что сказать?

и вообще, про высоконагруженные системы только в книжках фантазируют? в реале никто с этим не сталкивался?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130211
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanа почему не инсертить сразу, по приходу? в чем смысл откладывать?Потому что пакетом быстрее.

Хотя тоже не6 решает проблемы - ведь вы скажете (ну а представим такую систему, для которой и пакетной обработки не хватит) :-)

Нужно ставить реальные задачи, проектировать систему под конкретьную прогнозируемую нагрузку. Полследовательность при увеличении нагрузки очевидна - оптимизация, кеширование и пакетная обработка, распределение нагрузки на много серверов.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130217
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanи вообще, про высоконагруженные системы только в книжках фантазируют? в реале никто с этим не сталкивался?Дык критерий то какой? Первым постом вы описали слабо нагруженную систему. Я работал тоже только со слабонагруженными - всего раз в 30 больше нагрузка, чем вы описали. Что есть "сильно нагруженная"?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130224
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgПотому что пакетом быстрее.
что значит "пакетом"? что это за режим такой? и почему он быстрее?
alexeyvgХотя тоже не6 решает проблемы - ведь вы скажете
скажу, потому что в топике вопрос:
niXmanа как быть с БД?
alexeyvgЧто есть "сильно нагруженная"?
система, которая не сможет работать на одной физической PC.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130234
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanPL99периодически пакетно заливать
а почему не инсертить сразу, по приходу? в чем смысл откладывать?А почему бы не почитать документацию ? Или соответствующий раздел для вашей БД.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130261
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99, для того чтоб что-то читать, нужно знать что искать.
прочел. понял.

не понял одного, как пакетный режим позволит что-то ускорить в том случае, если "у БД не бывает выходных"?
т.е. к примеру, нагрузка на БД приблизительно равномерно распределена по времени. не инсертя данные сразу в БД, мы лишь оттягиваем неизбежное. это первое.
второе - я так понимаю, что откладывание инсерта может иметь смысл(гипотетически. хотя я в этом сомневаюсь.) только в том случае, когда откладываемые данные не нужны сразу по приходу. т.е. к примеру, через час после прихода.

в общем, тема топика все таинственней, и полна загадок.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130280
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanне понял одного, как пакетный режим позволит что-то ускорить в том случае, если "у БД не бывает выходных"?
т.е. к примеру, нагрузка на БД приблизительно равномерно распределена по времени. не инсертя данные сразу в БД, мы лишь оттягиваем неизбежное. это первое.Ну если он быстрее, то почему не будет ускорения???

Допустим, вставка одной записи - 1 мс, вставка 1000000 записей пакетом - 10с
Получаем выйгрыш в 100 раз, если будем копить записи и вставлять пакетами по милиону.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130285
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanвторое - я так понимаю, что откладывание инсерта может иметь смысл(гипотетически. хотя я в этом сомневаюсь.) только в том случае, когда откладываемые данные не нужны сразу по приходу. т.е. к примеру, через час после прихода.Ну да, это проблема. Но во первых, не раз в час, а раз в секунду, или раз в минуту - как спроектируете. Во вторых, это решается сервером приложений - чтением из кеша.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130290
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanalexeyvgЧто есть "сильно нагруженная"?
система, которая не сможет работать на одной физической PC.А вот какой критерий :-)

Так вы ответ уже сами сказали, в чём вопрос тогда???
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130293
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, вот...начинает проясняться.. спасибо Вам.

оффтопный вопрос, позвольте.
подскажите, где можно почитать про "пакетный режим" для MySQL/Postgre ?
ну, или, хотя бы, по каким словам гуглить?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130297
niXman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgТак вы ответ уже сами сказали, в чём вопрос тогда?
вопрос в том, каким образом разделяют БД на несколько физических машин так, чтоб в них были идентичные данные? как синхронизируют данные?

т.е., решение в лоб - чтоб каждая машина инсертила сразу и во все остальные машины. но это, как мне кажется, слишком "деревянный" способ. или оно так и решается?
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130353
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanподскажите, где можно почитать про "пакетный режим" для MySQL/Postgre ?По MySQL/Postgre я не специалист. Вы создайте тему с конкретным вопросом в форуме по этим СУБД.

niXmanalexeyvgТак вы ответ уже сами сказали, в чём вопрос тогда?
вопрос в том, каким образом разделяют БД на несколько физических машин так, чтоб в них были идентичные данные? как синхронизируют данные?

т.е., решение в лоб - чтоб каждая машина инсертила сразу и во все остальные машины. но это, как мне кажется, слишком "деревянный" способ. или оно так и решается?По разному, зависит от конкретных требований бизнес-логики. Можно напрмер вообще не делать доступными данные на всех машинах. Допустим, все кредитные карточки мира и совершаемые операции - это некая гигантская база данных, но вместе хранить данные не обязательно, достаточно, что бы счета и карточки одного человека были на одном сервере.
...
Рейтинг: 0 / 0
подскажите по архитектуре высоконагруженной системы
    #38130376
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niXmanи того, в минуту, получаем 400000 инсертов. в час получается - 24000000. ясно, что любая БД не осилит такое кол-во инсертов.

Да почему же... Не так и много.

niXmanпри такой архитектуре сервиса, встает логичным вопрос: а как быть с БД?

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



шардинг, партицирование бд по, скажем, ветке форума.
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 1 из 3
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / подскажите по архитектуре высоконагруженной системы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]