@proGO

Страница 1295 из 1674
Kirill
19.03.2018
13:30:46
а в памяти хранить не вариант?

да любю кв базу типа bolt, level

в твоёи кейсе шардинг не планируется?

Google
FRD Official - Dmitriy
19.03.2018
13:33:11
Roman
19.03.2018
13:33:31
да любю кв базу типа bolt, level
речь идёт скорее о вот этом конкретном issue: https://github.com/qbeon/webwire-go/issues/8 т.е. о дефолтном хранилище сессий, который включён по умолчанию. Если пользователь желает реализовать собственный session storage на основе какой-либо бд типа bolt, level, SQL, Mongo whatever то делается это через хуки: OnSessionCreated OnSessionLookup OnSessionClosed

а в памяти хранить не вариант?
память волатильна.. в этом вся проблема. Сессии пропадут после перезагрузки сервера

Андрэ
19.03.2018
13:35:39
в смысле?))
Не в смысле разработки, а в философском)

Roman
19.03.2018
13:36:25
Не в смысле разработки, а в философском)
честно говоря я не понял причём тут обречённость в филосовском смысле))

Daniel
19.03.2018
13:39:51
но, может, это и хорошо?

Roman
19.03.2018
13:42:30
но, может, это и хорошо?
может... не знаю честно говоря.. однако опыт показывает что обычно сессии хранили в ФС, ибо перезагрузка сервера не должна приводить к потере сессий, иначе пользователю придётся заново логиниться, что очень плохо. Речь тут идёт о том дефолтном решении, которое в продакшне будет чаще всего востребовано только в малых проектах где весь сервис умещается на одной машине.. т.е. не нужно писать хуки на сессии, они магически сами по себе работают по умолчанию

лучше таки хранить сессии и при желании хард ресета - просто удалить директорию..

однако меня беспокоит нагрузка на ФС.. ибо при поиске сессии придётся сканить всю директорию и искать сессию в O(n)

это никак нельзя превратить в O(1)?

при загрузке сервера просканировать все сессии и создать мап file descriptor'ов?

Daniel
19.03.2018
13:53:08
зачем?

Google
Roman
19.03.2018
13:53:23
зачем?
чтоб поиск сессий был O(1)

Daniel
19.03.2018
13:53:25
при старте сканируешь директорию, создаешь мап сессий

при появлении новой сессии пишешь ее на диск и в память

все

Roman
19.03.2018
13:53:53
Ilnur
19.03.2018
13:54:00
а готовых решений нет?

Roman
19.03.2018
13:54:19
а готовых решений нет?
их не может быть)

главное чтоб ФС во время исполнения не рассинхронилась с мапом в процессе.. ибо если каким-то гуем удалится файл сессии тогда сессия на серве как-бы есть, но её уже как-бы нет

Daniel
19.03.2018
13:56:58
да и хрен с ним

Kirill
19.03.2018
13:57:48
их не может быть)
их куча и маленькая тележка

у каждого фрэймворка есть миделварь с сессиями и разными сторажами для их хранения

Subbotin
19.03.2018
13:58:22
при появлении новой сессии пишешь ее на диск и в память
а потом запускаешь два инстанса и охуеваешь

Roman
19.03.2018
13:58:31
Kirill
19.03.2018
13:59:18
это решения для тех конкретных фреймворков
фишка в том, что они все одинаковые

Roman
19.03.2018
13:59:32
а потом запускаешь два инстанса и охуеваешь
если запускать два инстанса то нужно работать с БД и для этого есть хуки. Речь идёт о дефолтном хранилище сессий скажем так: "для новичков, чтоб запустил - и всё работало"

Roman
19.03.2018
14:00:10
в название файла не судьба положить идентификатор сессии?
это не поможет, тебе так или иначе придётся сканить и икать foreach O(n)

Google
Andy
19.03.2018
14:01:06
Наличие файла на диске?

Subbotin
19.03.2018
14:01:38
это не поможет, тебе так или иначе придётся сканить и икать foreach O(n)
эм? обращаешься сразу по имени. нашлось - заебись. не нашлось - значит нету. а это уж дело фс как не делать фулл листининг директории при обращении к одному файлу по конкретному имени

Roman
19.03.2018
14:01:49
хотя да, я туплю, if file ${sessionid}.sess exists

Subbotin
19.03.2018
14:02:20
и несколько инстансов вполне могут прозрачно работать с этим

Roman
19.03.2018
14:02:43
и несколько инстансов вполне могут прозрачно работать с этим
зачем тебе несколько инстансов на одной машине?

или ты имеешь ввиду несколько машин с шареной network FS?

Andy
19.03.2018
14:02:54
Subbotin
19.03.2018
14:03:19
на одном смогут. да и на разных смогут, но так уже лучше не делать

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

Alexey
19.03.2018
14:04:07
паралелить нагрузку лол (да, я знаю что это чат про го)
Ты смеешься вот, а если PHP FPM запустить несколько пулов, то они быстрее работают, чем один с увеличенным количеством воркеров:) (ну или я не умею готовить, но я чем только не пробовал)

Roman
19.03.2018
14:04:17
паралелить нагрузку лол (да, я знаю что это чат про го)
эмм, Go это тебе не Node.js, параллелить Go сервер процессами это абсурд. сервер использует все доступные ресурсы системы

Daniel
19.03.2018
14:04:45
а потом запускаешь два инстанса и охуеваешь
если ты два инстанса запустил - тебе полюбому надо подумать еще кой-о-чем. так что не в кассу

Subbotin
19.03.2018
14:05:51
если ты два инстанса запустил - тебе полюбому надо подумать еще кой-о-чем. так что не в кассу
в любом случае делать абсолютно непонятно зачем дублирование данных с перспективами дать им разъехаться это херовое решение. пахнет как минимум преждевременной оптимизацией.

Daniel
19.03.2018
14:06:36
не, они хотят персистентных сессий. зачем - я не знаю

Subbotin
19.03.2018
14:08:04
тут разговор не о дублировании данных, а дублировании обработчиков
Данила предложил хранить сессии И в памяти в мапе И на диске. это дублирование

Roman
19.03.2018
14:08:39
не, они хотят персистентных сессий. зачем - я не знаю
getting started... на данный момент ты либо описываешь сам OnSessionCreated, OnSessionLookup и OnSessionClosed, либо они отключаются вообще.. для малых проектов, которые не требуют несколько инстанций сервера и хранения сессии в БД - нужно простенькое альтернативное решение, которое работает по умолчанию. файлы - вполне годное решение, нужно больше? пиши хуки! ?

Subbotin
19.03.2018
14:09:04
нет
Daniel Podolsky, [19.03.18 13:50] при старте сканируешь директорию, создаешь мап сессий Daniel Podolsky, [19.03.18 13:50] при появлении новой сессии пишешь ее на диск и в память

Daniel
19.03.2018
14:09:34
конечно, дублирование

Google
Daniel
19.03.2018
14:10:03
персистентности для in-memory не бывает без дублирования

Roman
19.03.2018
14:10:13
короче подведу итоги: просто пишем файл с идентификатором сессии в указанную в конфиге директорию для сессий. В случае поиска - проверяем наличие файла. Проблема решена)

Kirill
19.03.2018
14:10:47
я бы ещё рекомендовал нестинг дирректорий, что бы не было несколько тысяч файлов в одной папке

Daniel
19.03.2018
14:11:14
несколько тысяч - это не много

Subbotin
19.03.2018
14:11:18
персистентности для in-memory не бывает без дублирования
это так. но таки лучше не использовать для этого дублирования самописных решений.

Daniel
19.03.2018
14:11:27
да похер же

Roman
19.03.2018
14:11:36
капитан очевидность подсказывает, что файловая система это тоже база данных
кстати: https://www.quora.com/What-is-the-difference-between-a-file-system-and-a-database

Admin
ERROR: S client not available

Roman
19.03.2018
14:12:39
я бы ещё рекомендовал нестинг дирректорий, что бы не было несколько тысяч файлов в одной папке
1. зачем, если учитывать что большинство ФС спокойно жрут 16 лямов файлов в директории? 2. по какому принципу группировать?

Subbotin
19.03.2018
14:13:15
> DBMS provide back up and recovery whereas data lost in file system can't be recovered.

Ilnur
19.03.2018
14:13:22
https://github.com/gorilla/sessions

Roman
19.03.2018
14:15:54
https://github.com/gorilla/sessions
won't solve the problem. different approach to session management

> DBMS provide back up and recovery whereas data lost in file system can't be recovered.
это конечно бред, самый основной пункт второй

Kirill
19.03.2018
14:17:27
won't solve the problem. different approach to session management
почему, ты можешь оттуда достать FilesystemStore

хотя его суть в том, что он сохраняет сессии в виде path/session_sessionID

Subbotin
19.03.2018
14:18:35
Roman
19.03.2018
14:18:35
почему, ты можешь оттуда достать FilesystemStore
тянуть огромную зависимость в библиотеку ради дефолтного решения для небольших проектов - не вариант

Google
Roman
19.03.2018
14:19:21
Subbotin
19.03.2018
14:19:28
производительность проседает по первым двум сиволам, например
чё-то у меня есть сомнения, что проседает. очень может быть, что наоборот. давненько не видел бенчмарков на эту тему

Kirill
19.03.2018
14:20:15
чё-то у меня есть сомнения, что проседает. очень может быть, что наоборот. давненько не видел бенчмарков на эту тему
да, мои знания устарели скорее всего, но я не рискую хранить больше тысячи файлов в одной дирректории)

Roman
19.03.2018
14:20:19
чё-то у меня есть сомнения, что проседает. очень может быть, что наоборот. давненько не видел бенчмарков на эту тему
если сессий более 1 ляма, то уже стоит задуматься о реализации кастомных хуков сессий для оптимизации, с лямом справится любая фс

Daniel
19.03.2018
14:21:13
чё-то у меня есть сомнения, что проседает. очень может быть, что наоборот. давненько не видел бенчмарков на эту тему
если индексы для директорий не включить - поиск будет перебором каждый раз. это если нужен поиск

Roman
19.03.2018
14:24:09
если индексы для директорий не включить - поиск будет перебором каждый раз. это если нужен поиск
в любом случае думаю - что такого рода оптимизация уже выходит за рамки дефолтного решения библиотеки, разве нет?

Subbotin
19.03.2018
14:24:27
если индексы для директорий не включить - поиск будет перебором каждый раз. это если нужен поиск
а счас они где-то по-дефолту выключены? в xfs и ext4 включены. за остальные не скажу

FRD Official - Dmitriy
19.03.2018
14:24:29
производительность проседает по первым двум сиволам, например
Это от fs зависит. И да, на секундочку fs это уже database, и ext4 к примеру будет искать файл в каталоге совсем не перебором

Kirill
19.03.2018
14:32:06
спасибо, что просветили

Roman
19.03.2018
14:33:25
нет. не надо так делать.
конкретнее плиз, причина?

Roman
19.03.2018
14:38:03
конкретнее плиз, причина?
потому что медленно.

Roman
19.03.2018
14:38:56
потому что медленно.
это дефолтное решение для небольших проектов и новичков. Для оптомизаций существуют хуки OnSessionCreated, OnSessionLookup и OnSessionClosed

FRD Official - Dmitriy
19.03.2018
14:49:38
потому что медленно.
См. Выше про ext4, переплюнуть по скорости механизм поиска файла по имени в каталоге - это очень нетривиальная задача

сорян, я децл водофки хлопнул и просто влом рыться в исходниках ядра, но описание механизма индексирования в fs можно загуглить по inode indexing ext4

Roman
19.03.2018
14:54:12
и проблема как раз в этом.

Страница 1295 из 1674