Size: a a a

2020 October 06

D

Dmitry in symfony
Andrey Dembitskyi
Sticky session рассматривается как вариант лучше, чем распределённое хранилище сессий?
Почему?
Потому что нагрузка на единое хранилище будет большая. Пока не хочу заморачиваться ещё и с этим. Его нужно будет масштабировать и тп
источник

SZ

Sergey Zolotov in symfony
Dmitry
Потому что нагрузка на единое хранилище будет большая. Пока не хочу заморачиваться ещё и с этим. Его нужно будет масштабировать и тп
о каких цифрах то речь идет?
источник

D

Dmitry in symfony
Sergey Zolotov
о каких цифрах то речь идет?
Пока пару десятков к в секунду. Потом сотни. Поэтому предпочтительно csrf проверять без хранилища или локальное на каждый сервер. Но тогда sticky session нужно. Что тоже не идеально
источник

SZ

Sergey Zolotov in symfony
Dmitry
Пока пару десятков к в секунду. Потом сотни. Поэтому предпочтительно csrf проверять без хранилища или локальное на каждый сервер. Но тогда sticky session нужно. Что тоже не идеально
увольте ваших опсов, если у вас бекенд для сессий не выдерживает пару десятков или даже сотни запросов
источник

ВУ

Валентин Удальцов... in symfony
Dmitry
А samesite lax разве привяжет запрос к тому же серверу ?
почитай, как он работает и как это помогает защищаться от csrf
источник

ПГ

Павел Г. in symfony
Приветствую, как в cqrs шарить алгоритмы вычисляемых свойств между моделями чтения и записью? Ну т.е. И там и там нужно.
Абстрактный пример: есть сущность статья, у нее вычисляемое свойство/метод "активна", которое вычисляется как опубликована+неархиврована. В зависимости от активности в статью можно или нет добавить комментарий. Эта логика инкапуслирована в сущности.
Но клиенту надо в некоторых запросах тоже передавать  bool "активна". Как это вычислить в рид ?Вынести   в отдельный класс ActiveResolver и передавать его в качестве аргумента методов сущности статьи и для рид моделей? Но это вынесение логики за пределы сущности или это норм?  
class ActiveResolver{
method isActive($arhive, $published)
}
$model->addComment($activeResolver, $commentText,$commentAutor)
$readModel->isActive($activeResolver)
источник

D

Dmitry in symfony
Sergey Zolotov
увольте ваших опсов, если у вас бекенд для сессий не выдерживает пару десятков или даже сотни запросов
да нормально, пару десятков к (10-20к в секунду) это неплохие результаты
источник

VM

Volodymyr Melko in symfony
Павел Г.
Приветствую, как в cqrs шарить алгоритмы вычисляемых свойств между моделями чтения и записью? Ну т.е. И там и там нужно.
Абстрактный пример: есть сущность статья, у нее вычисляемое свойство/метод "активна", которое вычисляется как опубликована+неархиврована. В зависимости от активности в статью можно или нет добавить комментарий. Эта логика инкапуслирована в сущности.
Но клиенту надо в некоторых запросах тоже передавать  bool "активна". Как это вычислить в рид ?Вынести   в отдельный класс ActiveResolver и передавать его в качестве аргумента методов сущности статьи и для рид моделей? Но это вынесение логики за пределы сущности или это норм?  
class ActiveResolver{
method isActive($arhive, $published)
}
$model->addComment($activeResolver, $commentText,$commentAutor)
$readModel->isActive($activeResolver)
структура рид модели не обязана совпадать с врайт моделью.
если в рид модели нужно знать активна или нет статья - сделай там поле isActive
и в конструктор или сеттер
$readModel = new ReadModel($writeModel->getId(), $writeModel->isActive(), ...);

или $readModel->setIsActive($writeModel->isActive());
источник

D

Dmitry in symfony
Валентин Удальцов
почитай, как он работает и как это помогает защищаться от csrf
я все еще не понимаю вашу идею. LAX действует на браузер, слать или не слать куку
каким образом это распределит траффик на нужный сервис за хапрокси ?
источник

ПГ

Павел Г. in symfony
Volodymyr Melko
структура рид модели не обязана совпадать с врайт моделью.
если в рид модели нужно знать активна или нет статья - сделай там поле isActive
и в конструктор или сеттер
$readModel = new ReadModel($writeModel->getId(), $writeModel->isActive(), ...);

или $readModel->setIsActive($writeModel->isActive());
В рид поднимать врайт? ну такое себе. Смысл тогда вообще от рида, если врайт поднимается.
источник

VM

Volodymyr Melko in symfony
так а вы рид модель же храните гдето? в другом сторадже? как вы ее обновляете?
источник

ПГ

Павел Г. in symfony
Volodymyr Melko
так а вы рид модель же храните гдето? в другом сторадже? как вы ее обновляете?
Зачем обновлять рид модель?
источник

ПГ

Павел Г. in symfony
Это просто удобное отображение для чтения + разделение райт и рида, чтобы избавиться от логики отображения в врайт.
источник

D

Dmitry in symfony
Павел Г.
Приветствую, как в cqrs шарить алгоритмы вычисляемых свойств между моделями чтения и записью? Ну т.е. И там и там нужно.
Абстрактный пример: есть сущность статья, у нее вычисляемое свойство/метод "активна", которое вычисляется как опубликована+неархиврована. В зависимости от активности в статью можно или нет добавить комментарий. Эта логика инкапуслирована в сущности.
Но клиенту надо в некоторых запросах тоже передавать  bool "активна". Как это вычислить в рид ?Вынести   в отдельный класс ActiveResolver и передавать его в качестве аргумента методов сущности статьи и для рид моделей? Но это вынесение логики за пределы сущности или это норм?  
class ActiveResolver{
method isActive($arhive, $published)
}
$model->addComment($activeResolver, $commentText,$commentAutor)
$readModel->isActive($activeResolver)
в модели cqrs запрос не может одновременно читать и изменять данные, в рид модели можно сделать
select is_active from articles
а вот само поле is_active должно заполняться врайт моделью
источник

ПГ

Павел Г. in symfony
Dmitry
в модели cqrs запрос не может одновременно читать и изменять данные, в рид модели можно сделать
select is_active from articles
а вот само поле is_active должно заполняться врайт моделью
Поднимать сущность из БД, чтобы заполнить рид это типо норм считается? Я думал врайт модели вообще не используются для этого.  Или вы про что? не понял как одноврменно тащить из бд + заполнять врайтом.
источник

D

Dmitry in symfony
врайт модель грубо говоря
$article->publish(){
  if(!$this->archived() && $this->published())
  {
     $this->activate()
  }
}
источник

D

Dmitry in symfony
Павел Г.
Поднимать сущность из БД, чтобы заполнить рид это типо норм считается? Я думал врайт модели вообще не используются для этого.  Или вы про что? не понял как одноврменно тащить из бд + заполнять врайтом.
видимо мы не совсем понимаем друг друга
я о том что рид модель просто читает данные, из хранилища, где is_active уже установлено врайт модель, в другом запросе, до этого
источник

ВУ

Валентин Удальцов... in symfony
Завтра Дмитрий такой: как класть в сессию CQRS токены 😂
источник

D

Dmitry in symfony
Валентин Удальцов
Завтра Дмитрий такой: как класть в сессию CQRS токены 😂
все может быть, вы на вопрос то ответьте :)
источник

ПГ

Павел Г. in symfony
Dmitry
видимо мы не совсем понимаем друг друга
я о том что рид модель просто читает данные, из хранилища, где is_active уже установлено врайт модель, в другом запросе, до этого
Понял, "вычисляемых свойств" вообще не должно быть, тот же active должно быть записано в хранилище в конечном итоге.
Но тогда не совсем понимаю, как хранить какие то вещи, которые зависят от даты или других динамических показателей? Например добавляем 3 условие активности: статья активна только 10 дней со дня создания. Всю базу ежедневно перебирирать кроном чтобы устанавливать прошло 10 дней или нет?
источник