
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 30.08.2016, 12:05 
 | 
|||
|---|---|---|---|
  
  | 
|||
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Всем привет. Вот такой вопрос созрел. Имеется две системы, обмен между которыми происходит посредством web service. Одна система (клиент) посылает в сервис действие, сервис у себя (сервер) создает кое какие проводки (все в пределах секунды) и возвращает результат действия - успешно или нет, и в зависимости от ответа происходит определенные действия на клиенте. Так вот возникают иногда обрывы соединения, т.е. действие отправляется, обрыв, нет ответа и соответственно нет продолжения, т.е. прекращение операции. Но сервер, получивший через сервис действия не знает об обрыве и успешно осуществляет проводки. И это приводит к разсинхронизации двух систем по действиям. Вопрос: какие есть механизмы защиты от этого?  P.S.: клиент - это касса, сервер - система CRM, действия - это процесс списания бонусов, которое должна быть онлайн, при обрыве связи - на кассе нет списания, т.е. оплата бонусами не возможна, а в CRM - списание со счета проходит успешно. Спасибо ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 30.08.2016, 12:31 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Semen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 31.08.2016, 09:06 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  AxeleronSemen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ. И что это даст? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 31.08.2016, 09:53 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  >Semen81, 19606724 >... Имеется две системы ... Рассмотрите вариант циклической нумерации информационных пакетов действия и инфопакетов ответа. И введите дополнительный метод для запроса сервера на получение номера пакета, последнего штатно выполненного действия. С уважением, Владимир. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 31.08.2016, 12:43 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAAxeleronSemen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ. И что это даст? Да, неудачный совет дал я. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 01.09.2016, 08:26 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  ВМоисеев>Semen81, 19606724 >... Имеется две системы ... Рассмотрите вариант циклической нумерации информационных пакетов действия и инфопакетов ответа. И введите дополнительный метод для запроса сервера на получение номера пакета, последнего штатно выполненного действия. С уважением, Владимир. Не могли бы Вы пояснить последнее предложение? Предлагаете, чтобы сервер запрашивал у кассы номер пакета, или наоборот? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.09.2016, 16:34 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Semen81Вопрос: какие есть механизмы защиты от этого? Создавать логическую транзакцию. Не техническую. Логическую. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.09.2016, 17:49 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Semen81, Если есть возможность организовать обратный запрос, то сделать так: 1. Инициировать транзакцию: клиент посылает в сервис действие и получает код транзакции. 2. Сервис, завершив транзакцию, обращается к клиенту и посылает результат действия. Если необходимо, клиент при первом обращении говорит сервису, куда послать результат действия. Если нет возможности организовать обратный запрос, то так: 1. Инициировать транзакцию: клиент посылает в сервис действие и получает код транзакции. 2. Через некоторое время (допустим, через 1-2 секунды), клиент обращается к сервису опять и с помощью полученного кода транзакции выясняет результат операции. Если операция ещё не завершена, клиент выжидает какое-то время и опять опрашивает, до тех пор пока не получит результат. Можно сделать систему более надёжной: когда клиент, получив результат действия, должен ещё послать подтверждение, что он согласен с этим результатом, таким образом завершив транзакцию. В таком случае состояние всей системы в целом будет гарантировано согласовано. Такая схема не зависит от используемых технологий. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.09.2016, 19:02 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  >skyANA, 1 сен 16, 08:26    [19615609]  >...Предлагаете, чтобы сервер ... В моём представление, за установление связи отвечает клиент. След. при потере оной клиент начинает телодвижения, а именно, пытается восстановить связь. При восстановлении связи посылает серверу (серверу приложений - многозвенка) запрос на получение номера последнего штатно выполненного действия и принимает нужное решение. С уважением, Владимир ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 05.09.2016, 09:05 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Semen81Вопрос: какие есть механизмы защиты от этого? Распределённые транзакции . ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 06.09.2016, 21:27 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  На мой взгляд касса вообще не должна зависеть от какой-то там CRM, что является каким-то там сервисом, или тетрадью тёти Маши. И следовательно вообще не должна ждать ответа от сервера, где сервис развёрнут, или из комнаты, где тётя Маша сидит. Следовательно мне видится такое решение: промежуточный буфер (файл, таблица, коллекция, очередь) на стороне кассы и синхронизация по мере доступности сервиса. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 06.09.2016, 21:28 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  eventual consistency, йоба! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 08:46 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAeventual consistency, йоба! Это из другой оперы. Ты говоришь про согласованность данных, а речь идёт о бизнес-транзакциях. Было снято бабло или нет. При чём даже если бабло и было снято, остаток может не измениться, или измениться не соответственно снятому баблу, соответственно что ты там будешь согласовывать по данным -- совершенно не понятно. Тут либо действие выполнено, либо нет. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 08:54 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  hVostt, я о том, что факт списания бонусов в CRM можно и потом отразить. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 09:16 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAhVostt, я о том, что факт списания бонусов в CRM можно и потом отразить. Ты смотришь на ситуацию с точки зрения данных. А проблема у ТС в том, чтобы определить факт успешного выполнения операции. А что там надо сделать в результате успеха -- до фанаря, бонусы списать, отправить письмо, отобразить поздравительный банер, выдать ачивку — вопрос другой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 09:23 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  CRM хранит историю взаимоотношений с клиентом. Историю, Карл :) Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 10:26 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANACRM хранит историю взаимоотношений с клиентом. Историю, Карл :) Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть. Что-то у тебя всё с ног на голову перевернулось. С какой кстати, клиент должен знать о какой-то там истории? Касса: я собираюсь деньги списать, давай платить бонусами? CRM: оплата прошла, бонусы списаны! Касса: спасибо, говорю что всё оплачено. Что присходит на деле: Касса: я собираюсь деньги списать, давай платить бонусами? CRM: оплата...аф34ывпыв... обрыв связи... Касса: чёрт! ну хрен с ним, извини, чувак — не получилось. Скажи мне, при чём тут история? Кассе надо знать, прошла оплата или нет. Списались ли бонусы при этом у CRM, или что там с ними произошло, кассе по барабану и фиолетово совершенно. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 07.09.2016, 15:28 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  hVosttskyANACRM хранит историю взаимоотношений с клиентом. Историю, Карл :) Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть. Что-то у тебя всё с ног на голову перевернулось. С какой кстати, клиент должен знать о какой-то там истории? Касса: я собираюсь деньги списать, давай платить бонусами? CRM: оплата прошла, бонусы списаны! Касса: спасибо, говорю что всё оплачено. Что присходит на деле: Касса: я собираюсь деньги списать, давай платить бонусами? CRM: оплата...аф34ывпыв... обрыв связи... Касса: чёрт! ну хрен с ним, извини, чувак — не получилось. Скажи мне, при чём тут история? Кассе надо знать, прошла оплата или нет. Списались ли бонусы при этом у CRM, или что там с ними произошло, кассе по барабану и фиолетово совершенно. С чего ты взял, что: 1. именно так всё устроено? 2. что это правильно? ТС написал: "Имеется две системы, обмен между которыми происходит посредством web service". Не одна система, состоящая из кассы и CRM, а две. Дак вот я выступаю за то, что первая система должна уведомлять последнюю постфактум :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 06:01 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAС чего ты взял, что: 1. именно так всё устроено? 2. что это правильно? Из сообщения ТС. Ну ещё в свой хрустальный шар пристально смотрел. Зуб даю, всё именно так skyANAТС написал: "Имеется две системы, обмен между которыми происходит посредством web service". Не одна система, состоящая из кассы и CRM, а две. Именно. Две. Независимые. Каким боком тут eventual consistency упала — не понятно до сих пор. skyANAДак вот я выступаю за то, что первая система должна уведомлять последнюю постфактум :) Ты бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия. А то какой-то буффер, какая-то синхронизация... О чём ты вообще? Это две _разных_ системы. Тем более речь вообще не шла о согласованности данных. Речь шла о согласованности действий. В общем у тебя какая-то каша в рассуждениях. Конечно можно присобачить какую-нибудь модную технику ради техники, только нафиг она нужна. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 10:12 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  hVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 11:27 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAhVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :) hVosttТы бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия. Я написал что нужно, хотя если хочешь, можешь в догонку и слово буфер расшифровать )) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 11:49 
 | 
|||
|---|---|---|---|
  
  | 
|||
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Semen81Всем привет. Вот такой вопрос созрел. Имеется две системы, обмен между которыми происходит посредством web service. Одна система (клиент) посылает в сервис действие, сервис у себя (сервер) создает кое какие проводки (все в пределах секунды) и возвращает результат действия - успешно или нет, и в зависимости от ответа происходит определенные действия на клиенте. Так вот возникают иногда обрывы соединения, т.е. действие отправляется, обрыв, нет ответа и соответственно нет продолжения, т.е. прекращение операции. Но сервер, получивший через сервис действия не знает об обрыве и успешно осуществляет проводки. И это приводит к разсинхронизации двух систем по действиям. Вопрос: какие есть механизмы защиты от этого?  P.S.: клиент - это касса, сервер - система CRM, действия - это процесс списания бонусов, которое должна быть онлайн, при обрыве связи - на кассе нет списания, т.е. оплата бонусами не возможна, а в CRM - списание со счета проходит успешно. Спасибо В чем состоит "рассинхронизация"? Т.е. если оборвалась связь клиент не знает, как закончилась транзакция? Так это будет известно только после восстановления связи. После того как связь восстановлена клиент должен убедиться в результате конкретной транзакции, иначе все будет разболтано. Каждый запрос от клиента к серверу имеет свой ид, клиент долбит сервис запросом с одним и тем же ид пока не получит ответ, сервис отрабатывает запрос с определенным ид только один раз Т.е. для сервиса должен быть еще один запрос от клиента, подтверждающий транзакцию, если его нет - он должен не делать коммит или откатить и т.д. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 12:31 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  Клиент в запрос вставляет ид операции, если от сервиса нет ответа, заносит его в "плохую" очередь. При возобновлении связи, первым делом шлет плохие ид и сервер отменяет операции, если они были. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 14:36 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  hVosttskyANAhVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :) hVosttТы бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия. Я написал что нужно, хотя если хочешь, можешь в догонку и слово буфер расшифровать )) Что я конкретно имею в виду: первая система (касса) выполняет списание бонусов и факт этого списания заносит в свою табличку, или коллекцию, или файл, или... Некий фоновый процесс (сервис, консьюмер, брокер) разгребает содержимое данной таблички, или коллекции, или файла и информацию по выполненым операциям отсылает всем внешним системам, что заинтересованы в них. В данном случае одна такая система - CRM. Так понятно? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 08.09.2016, 16:34 
 | 
|||
|---|---|---|---|
Обрыв соединения  | 
|||
| 
 #18+ 
  
    
  skyANAЧто я конкретно имею в виду: первая система (касса) выполняет списание бонусов и факт этого списания заносит в свою табличку, или коллекцию, или файл, или... Я думаю там в любом случае операции с бонусами как-то фиксируются. Незачем заводить ещё одну какую-то табличку, коллекцию или файл. skyANAНекий фоновый процесс (сервис, консьюмер, брокер) разгребает содержимое данной таблички, или коллекции, или файла и информацию по выполненым операциям отсылает всем внешним системам, что заинтересованы в них. А если операция не удалась и в табличку ничего не записано. Пусть сервисы ждут у моря погоды? Или выжидают время и считают, что всё — каюк? Хрень какая-то. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=19&tablet=1&tid=1396754]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    58ms | 
get topic data:  | 
    12ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    60ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 11ms | 
| total: | 174ms | 

    | 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... бла, бла, бла ...