Сообщение Re[2]: Eventual consistency от 07.07.2018 18:35
Изменено 07.07.2018 18:51 Slicer [Mirkwood]
Re[2]: Eventual consistency
Здравствуйте, takTak, Вы писали:
T>вспомни, когда ты в последний раз по интернету билеты на самолёт покупал: что ты там в окошке видел, когда нажимал в последний раз на кнопку "купить" ? скорее всего , что-то типа "мы приняли Ваш заказ, Вы получите скоро от нас подтверждение"
Это безусловно выход. Для систем, в которых действие можно логичным образом представить пользователю как многоэтапное: есть заказ и есть результат его выполнения, есть исходные данные (форма ввода) и результат (билет). И то могут возникать непонятки: "вы же написали что приняли заказ, почему я не вижу его в списке заказов в личном кабинете?"
Но если например пользователь создает заявку, которая должна в какой-то системе учета заявок появиться (да те же трекеры типы jira/redmine), то интуитивно процесс создания заявки вообще не многоэтапный: в сознании пользователя сама заявка и является результатом ее создания. Тут разве что дурить голову юзеру сообщениями вроде "заявка проходит премодерацию (на самом деле нет — но такому ограниченному типу как ты это не объяснишь) и скоро появится на сайте", наверно.
А обновить список на клиенте сразу — это ведь тоже не так просто. Как предлагаешь к этому подойти? Вот мне нужна 10-ая страница списка документов с сервера — потому что сейчас мы ее просматриваем — как мне понять на клиенте, попадет в нее добавленный только что документ или нет? А постраничный просмотр сейчас по моему опыту есть почти везде, особенно если объемы данных или нагрузка таковы, что есть смысл использовать масштабируемые и highly available решения.
Slicer
T>вспомни, когда ты в последний раз по интернету билеты на самолёт покупал: что ты там в окошке видел, когда нажимал в последний раз на кнопку "купить" ? скорее всего , что-то типа "мы приняли Ваш заказ, Вы получите скоро от нас подтверждение"
Это безусловно выход. Для систем, в которых действие можно логичным образом представить пользователю как многоэтапное: есть заказ и есть результат его выполнения, есть исходные данные (форма ввода) и результат (билет). И то могут возникать непонятки: "вы же написали что приняли заказ, почему я не вижу его в списке заказов в личном кабинете?"
Но если например пользователь создает заявку, которая должна в какой-то системе учета заявок появиться (да те же трекеры типы jira/redmine), то интуитивно процесс создания заявки вообще не многоэтапный: в сознании пользователя сама заявка и является результатом ее создания. Тут разве что дурить голову юзеру сообщениями вроде "заявка проходит премодерацию (на самом деле нет — но такому ограниченному типу как ты это не объяснишь) и скоро появится на сайте", наверно.
А обновить список на клиенте сразу — это ведь тоже не так просто. Как предлагаешь к этому подойти? Вот мне нужна 10-ая страница списка документов с сервера — потому что сейчас мы ее просматриваем — как мне понять на клиенте, попадет в нее добавленный только что документ или нет? А постраничный просмотр сейчас по моему опыту есть почти везде, особенно если объемы данных или нагрузка таковы, что есть смысл использовать масштабируемые и highly available решения.
Slicer
Re[2]: Eventual consistency
Здравствуйте, takTak, Вы писали:
T>вспомни, когда ты в последний раз по интернету билеты на самолёт покупал: что ты там в окошке видел, когда нажимал в последний раз на кнопку "купить" ? скорее всего , что-то типа "мы приняли Ваш заказ, Вы получите скоро от нас подтверждение"
Это безусловно выход. Для систем, в которых действие можно логичным образом представить пользователю как многоэтапное: есть заказ и есть результат его выполнения, есть исходные данные (форма ввода) и результат (билет). И то могут возникать непонятки: "вы же написали что приняли заказ, почему я не вижу его в списке заказов в личном кабинете?"
Но если например пользователь создает заявку, которая должна в какой-то системе учета заявок появиться (да те же трекеры типы jira/redmine), то интуитивно процесс создания заявки вообще не многоэтапный: в сознании пользователя сама заявка и является результатом ее создания. Тут разве что дурить голову юзеру сообщениями вроде "заявка проходит премодерацию (на самом деле нет — но такому ограниченному типу как ты это не объяснишь) и скоро появится на сайте", наверно.
А обновить список на клиенте сразу — это ведь тоже не так просто. Как предлагаешь к этому подойти? Вот мне нужна 10-ая страница списка документов с сервера — потому что сейчас мы ее просматриваем — как мне понять на клиенте, попадет в нее добавленный только что документ или нет? А постраничный просмотр сейчас по моему опыту есть почти везде, особенно если объемы данных или нагрузка таковы, что есть смысл использовать масштабируемые и highly available решения.
Websocket тоже решение ненадежное. Кто именно должен сделать вывод что изменения полностью залиты? Нет такого диспетчера который бы твердо знал что на всех шардах лежат нужные данные. То есть если например бэкэнд будет пинговать эластик и когда ему удастся там увидеть данные то он пошлет по websocket уведомление, то всегда может быть что на каком-то другом шарде этих данных все еще нет; и если клиент, получив уведомление, сделает рефреш и попадет на тот шард где данных нет, то в списке их опять не будет =)
Slicer
T>вспомни, когда ты в последний раз по интернету билеты на самолёт покупал: что ты там в окошке видел, когда нажимал в последний раз на кнопку "купить" ? скорее всего , что-то типа "мы приняли Ваш заказ, Вы получите скоро от нас подтверждение"
Это безусловно выход. Для систем, в которых действие можно логичным образом представить пользователю как многоэтапное: есть заказ и есть результат его выполнения, есть исходные данные (форма ввода) и результат (билет). И то могут возникать непонятки: "вы же написали что приняли заказ, почему я не вижу его в списке заказов в личном кабинете?"
Но если например пользователь создает заявку, которая должна в какой-то системе учета заявок появиться (да те же трекеры типы jira/redmine), то интуитивно процесс создания заявки вообще не многоэтапный: в сознании пользователя сама заявка и является результатом ее создания. Тут разве что дурить голову юзеру сообщениями вроде "заявка проходит премодерацию (на самом деле нет — но такому ограниченному типу как ты это не объяснишь) и скоро появится на сайте", наверно.
А обновить список на клиенте сразу — это ведь тоже не так просто. Как предлагаешь к этому подойти? Вот мне нужна 10-ая страница списка документов с сервера — потому что сейчас мы ее просматриваем — как мне понять на клиенте, попадет в нее добавленный только что документ или нет? А постраничный просмотр сейчас по моему опыту есть почти везде, особенно если объемы данных или нагрузка таковы, что есть смысл использовать масштабируемые и highly available решения.
Websocket тоже решение ненадежное. Кто именно должен сделать вывод что изменения полностью залиты? Нет такого диспетчера который бы твердо знал что на всех шардах лежат нужные данные. То есть если например бэкэнд будет пинговать эластик и когда ему удастся там увидеть данные то он пошлет по websocket уведомление, то всегда может быть что на каком-то другом шарде этих данных все еще нет; и если клиент, получив уведомление, сделает рефреш и попадет на тот шард где данных нет, то в списке их опять не будет =)
Slicer