Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.237.15.145] |
|
Сообщ.
#1
,
|
|
|
Приветствую!
Собирался таки начать писать прогу класса WebApplication. Концептуально в ней можно выделить ряд подсистем: 1) Работа с сетью по HTTP/HTTPS 2) Работа с БД 3) Работа с файловой системой 4) Подсистема вычислений (собственно бизнес-логика) Допустим, приложение будет работать на компе с N ядрами. Как вы считаете сколько потоков нужно выделять на каждую подсистему и почему? Можно ли как-то определиться с этими параметрами при старте/в процессе выполнения? По поводу БД - есть формальные ограничение по распараллеливанию операций только для SQLite. Если брать, к примеру, PostgreSQL, то таких ограничений нет. Приветствуются любые соображения. Добавлено ЗЫ: Совсем забыл, цель распараллеливания - обеспечение равномерной загрузки ресурсов компа (CPU/FS/NET) |
Сообщ.
#2
,
|
|
|
А чего бы тебе не сделать как Node.JS - весь пайплайн в один поток, но асинхронно? Это избавит от энного количества проблем, связанных с синхронизацией. А с SQLite надо иметь в виду, что он не поддерживает одновременных транзакций из разных потоков по одному коннекшену. Это может быть существенным ограничением.
|
Сообщ.
#3
,
|
|
|
Цитата Flex Ferrum @ А с SQLite надо иметь в виду, что он не поддерживает одновременных транзакций из разных потоков по одному коннекшену. Это может быть существенным ограничением. Тут я читал, что если "писателей" нет, то "читателей" в параллельных потоках можно наплодить сколь угодно, и будет все акейка. Цитата Flex Ferrum @ А чего бы тебе не сделать как Node.JS - весь пайплайн в один поток, но асинхронно? Это ты про сетевую подсистему? Типа один поток на неблокирующих сокетах? |
Сообщ.
#4
,
|
|
|
Цитата JoeUser @ Тут я читал, что если "писателей" нет, то читателей параллельных можно наплодить сколь угодно. Так то да. Но если появится несколько писателей (в разных потоках), которые захотят транзакциями пощёлкать - то будет очень весесло. Добавлено Цитата JoeUser @ Это ты про сетевую подсистему? Типа один поток на неблокирующих сокетах? Да. |
Сообщ.
#5
,
|
|
|
Цитата Flex Ferrum @ Так то да. Но если появится несколько писателей (в разных потоках), которые захотят транзакциями пощёлкать - то будет очень весесло. Эт да. Об этом думал. Но тут, считаю, нужно как-то разруливать по штампу времени. "До" - запускать всех "читателей". Потом блокировка и запуск одного "писателя". Ну и далее в том же ключе. Цитата Flex Ferrum @ Да. Тож к этому склоняюсь. На сокетах - вычислений нуль (взял, отдал). А вот "воркеры" пусть уже конкурируют. Добавлено Flex Ferrum, в плане кросс-платформенного асинхронного I/O - чую паттерн "мост" ... я прав или да? |
Сообщ.
#6
,
|
|
|
Паттерн "реактор" и модель акторов чую я!
|
Сообщ.
#7
,
|
|
|
не было такого в моей книжке!
Пора "освежать библиотеку" |