|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
mad_nazgulStateless это севрис, на который если мы подаем одни и те же данные на вход, то получаем одни и те же ответы на выходе.Идемпотентность - сильное условие, которое, обычно, завязано на стабильность внешнего состояния . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 08:23 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
PetroNotC Sharpmad_nazgul, Ну ты даешь). Немного не так. Это в первый раз в сервис подаешь х=2. Во втрой раз у=2 И ОН ТЕБЯ ПОМНИТ) Нет, именно, что сервис ведет себя как "функция". "ПОМНИТ" это значит есть состояние. Но может быть по другому. С одного "входа" идет x, а с другого "входа" идет y. Например с веб-реквеста к нам прилетает "x", а "y" берется из БД. Сам сервис stateless, т.е. он ведет себя одинаково при одинаковых данных. Т.о. идет разделение ответственности. Сервисы аккумулируют бизнес-логику, а состояние находиться в хранилищах данных, где бизнес-логики не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 09:01 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Basil A. Sidorovmad_nazgulStateless это севрис, на который если мы подаем одни и те же данные на вход, то получаем одни и те же ответы на выходе.Идемпотентность - сильное условие, которое, обычно, завязано на стабильность внешнего состояния . Ну да. Ничего "бесплатно" не бывает. Stateless легче писать и сопровождать, но нужно уделять больше внимания к хранению данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 09:03 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
mad_nazgulНу да.Ну нет - "без состояния" ортогонально "воспроизводимости". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 09:08 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
mad_nazgulНо может быть по другому. С одного "входа" идет x, а с другого "входа" идет y. Например с веб-реквеста к нам прилетает "x", а "y" берется из БД.именно на этом акцент карл! А ты выше написал, в одном запросе подаем Сервис.умножить(2,2). Это без состояния. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 09:16 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
mad_nazgul"ПОМНИТ" это значит есть состояние.я и привел пример с состоянием. Блин, такой простой вопрос и мусолим вторую страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 09:18 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Basil A. SidorovДмитрий МухНу или сгенерировать тупо, но зашифровать надёжно :) Это так не работает. Идентификаторы сессия обязаны быть очень маленьким подмножеством, случайно выбранным из очень большого. Подможнество, возможно, следует "проредить" так, чтобы не было идентификаторов с последовательными значениями. Если "тупо шифровать" последовательные значения, то потенциальный взломщик будет "тупо шифровать последовательные значения" и надёжно получать идентификаторы чьих-то сеансов. Почему тупо шифровать? Почему последовательные? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 10:08 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Basil A. SidorovЕсли "тупо шифровать" последовательные значения, то потенциальный взломщик будет "тупо шифровать последовательные значения" и надёжно получать идентификаторы чьих-то сеансов. Помнится, была на Хабре статья что-то типа "Грабь награбленное". Там чуваки увидели, что на каком-то файлообменнике ID генерится последовательно, и накачали себе кучу интересного: фильмы, базы е-мейлов и все такое прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 10:38 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Alexander A. Sakчуваки увидели, что на каком-то файлообменнике ID генерится последовательноКлючевое - последовательно. Попытка рэндомизации путём шифрования или хэширования, принципиально, ничего не меняет. Если же выбираются случайные значения из очень большого множества, то и шифровать их не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 11:13 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Дмитрий МухПочему последовательные?Потому, что "сгенерить тупо". Если все слова употреблены (вами) корректно, то получается последовательность. В простейшем случае - линейная функция (одного) монотонно растущего аргумента. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 11:16 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
PetroNotC SharpquestionerСуть моей мысли в том, что если сервер даже генерирует некий идентификатор, то это совсем не значит, что ему его хранить надо.да. Пусть хранит в бд. Тебе легче? Использует айди сессии все равно из бд опять сервер))) questionerтому же есть сомнения в том, что именно сервер всегда должен генерировать идентификатор сессиида. Контейнер все делает) Сервер ребутнули и состояние не потеряли, если сессию в базе храним. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:56 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questionerСервер ребутнули и состояние не потеряли, если сессию в базе храним.плюсы и минусы места хранения вообще не имеют отношения к вопросу. Есть факт - сессия назначена контейнером (ОН ВАС ПОМНИТ И ДЕРЖИТ) Противоположный факт - Не назначается сессия контейнером. Он узнаёт васю по зашифрованной строке от клиента "федя" С КАЖДЫМ НОВЫМ ЗАПРОСОМ на F5. ... Все остальное это вариации от фактов выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 16:11 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
PetroNotC SharpquestionerСервер ребутнули и состояние не потеряли, если сессию в базе храним.плюсы и минусы места хранения вообще не имеют отношения к вопросу. Есть факт - сессия назначена контейнером (ОН ВАС ПОМНИТ И ДЕРЖИТ) Противоположный факт - Не назначается сессия контейнером. Он узнаёт васю по зашифрованной строке от клиента "федя" С КАЖДЫМ НОВЫМ ЗАПРОСОМ на F5. ... Все остальное это вариации от фактов выше. я не согласен. кластерные приложения без стики сессион вполне себе работают. Серверу нет нужды ничего помнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 17:44 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questionerСерверу нет нужды ничего помнить. - верно, но тогда либо JWT, либо какие то велосипеды по хранению состояния в БД и т п. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 18:07 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questioner, Добрались до кластеров. Еще есть сериализация сессии в бд. Потом рожать ее и базы. Много чего есть. Ты не запутывай простые вещи. Как в прошлом вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 18:12 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
KachalovquestionerСерверу нет нужды ничего помнить. - верно, но тогда либо JWT, либо какие то велосипеды по хранению состояния в БД и т п. Тут как раз топик про то где хранить состояние. Если не на сервере(БД там или ещё чего), то сервер stateless. Точка. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 18:32 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questioner, В общем-то альтернатив традиционным сессиям немного. 1. Хранение данных в БД. Поднимаем эти данные при каждом запросе по некоему, как правило, секретному идентификатору. Недостатки - нагрузка на БД. Частично можно невелировать, если вместо обычной реляционной СУБД использовать специалбные дата-гриды типа Infinispan, Hazelcast и т.п. По сути распределенный кэш. При этом хранение состояния делегируется сервером приложений специализированному хранилищу, сам он остается stateless.. 2. Хранить состояние на клиенте и передавать в куках при каждом запросе (или в заголовках, а хранить в local storage браузера). Из недостатков - безопасность и связанные с этим накладные расходы. Сервер не может доверять данным клиента, он должен как минимум их подписать. Есть и другие проблемы, например, сервер не может принудительно завершить сессию, а в дистанционном банковском обслуживании это важно, как пример. Вообще интересный подход, это чистый REST. Советую почитать про JWT . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 19:00 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questionerЕсли не на сервере(БД там или ещё чего), то сервер stateless. - Вы про сервер или про приложение? questionerТут как раз топик про то где хранить состояние. Точка. - помягче, "точки" лучше с женой искать, а не на форуме ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 19:02 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questioner, С этим разобрался? ... В книге (в 6 главе) расписывается, что иметь сервер без состояния это очень удобно, классно и всё такое. Пишут, что всегда старайтесь использовать сервер без состояния. В какой-то момент пишут, что всё так хранить состояние надо. Например корзину юзера интернет магазина полюбому надо хранить. и в конце написана фраза: Хорошая новость заключается в том, что для реализации сеанса с состоянием, оказывается, можно применять сервер без состояния. дальше по книге идёт описания способов хранения состояние сеанса : на клиенте, на сервер, в базе. Вот что-то я не прочуял что именно значит сервер без состояния. И почему сохранение сеанса на стороне сервера не делает его stateful ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 20:25 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
questionerТут как раз топик про то где хранить состояниеневерно. Топик про то как интерпретировать ф ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 20:27 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Глюки)) Топик про то как понять конкретну фразу фаулера. А то уже пишут ОБЗОР с аналитикой всех вариантов хранения и плюс аутентификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 20:32 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
Basil A. SidorovДмитрий МухПочему последовательные?Потому, что "сгенерить тупо". Если все слова употреблены (вами) корректно, то получается последовательность. В простейшем случае - линейная функция (одного) монотонно растущего аргумента. амн, а последовательность-то откуда возьмётся? где будет храниться? проще сгенерировать случайное число, или взять идентификатор пользователя но даже если последовательность, то откуда взломщик вдруг узнает ключ и вектор шифрования? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 21:59 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
PetroNotC SharpВот что-то я не прочуял что именно значит сервер без состояния. И почему сохранение сеанса на стороне сервера не делает его stateful ? Сервер почти всегда statefull, т.к. будет хранить где-то состояние. А вот сервисы в нем могут быть почти все stateless. Где хранить состояние на сервере приложений. Есть много вариантов. Например в memcached, по sessionId :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 05:36 |
|
Фаулер. Как реализовать Сеанс(Session) c состоянием при помощи сервера без состояния?
|
|||
---|---|---|---|
#18+
mad_nazgulА вот сервисы в нем могут быть почти все stateless.все в руках программиста. Services.startSession(idClients) Serveces.setParamX(2 Services.setParamY(2 Services.getSUM() Вариантов миллион чтобы делать обзор. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 07:49 |
|
|
start [/forum/topic.php?fid=59&msg=39869455&tid=2121093]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 8ms |
total: | 262ms |
0 / 0 |