
Roman
19.03.2018
13:26:10

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

Subbotin
19.03.2018
13:59:16

Kirill
19.03.2018
13:59:18

Roman
19.03.2018
13:59:32

Subbotin
19.03.2018
14:00:01

Roman
19.03.2018
14:00:10

Andy
19.03.2018
14:00:54

Ilnur
19.03.2018
14:01:01

Google

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

Subbotin
19.03.2018
14:01:38

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

Roman
19.03.2018
14:04:17

Daniel
19.03.2018
14:04:45

Subbotin
19.03.2018
14:05:51

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

Kirill
19.03.2018
14:06:43

Subbotin
19.03.2018
14:08:04

Kirill
19.03.2018
14:08:36

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

Kirill
19.03.2018
14:09:47

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

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

Roman
19.03.2018
14:11:36

Admin
ERROR: S client not available

Subbotin
19.03.2018
14:11:39

Roman
19.03.2018
14:12:39

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

Kirill
19.03.2018
14:13:21

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

Roman
19.03.2018
14:15:54

Kirill
19.03.2018
14:17:27
хотя его суть в том, что он сохраняет сессии в виде path/session_sessionID

Subbotin
19.03.2018
14:18:35

Roman
19.03.2018
14:18:35

Google

Kirill
19.03.2018
14:19:13

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

Daniel
19.03.2018
14:21:13

Roman
19.03.2018
14:24:09

Subbotin
19.03.2018
14:24:27

FRD Official - Dmitriy
19.03.2018
14:24:29

Roman
19.03.2018
14:31:33

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

Roman
19.03.2018
14:33:11

Roman
19.03.2018
14:33:25

Roman
19.03.2018
14:38:03

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

Roman
19.03.2018
14:39:43

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

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