powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Обрыв соединения
25 сообщений из 40, страница 1 из 2
Обрыв соединения
    #39300154
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Вот такой вопрос созрел. Имеется две системы, обмен между которыми происходит посредством web service. Одна система (клиент) посылает в сервис действие, сервис у себя (сервер) создает кое какие проводки (все в пределах секунды) и возвращает результат действия - успешно или нет, и в зависимости от ответа происходит определенные действия на клиенте. Так вот возникают иногда обрывы соединения, т.е. действие отправляется, обрыв, нет ответа и соответственно нет продолжения, т.е. прекращение операции. Но сервер, получивший через сервис действия не знает об обрыве и успешно осуществляет проводки. И это приводит к разсинхронизации двух систем по действиям. Вопрос: какие есть механизмы защиты от этого?
P.S.: клиент - это касса, сервер - система CRM, действия - это процесс списания бонусов, которое должна быть онлайн, при обрыве связи - на кассе нет списания, т.е. оплата бонусами не возможна, а в CRM - списание со счета проходит успешно.
Спасибо
...
Рейтинг: 0 / 0
Обрыв соединения
    #39300190
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39300798
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronSemen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ.
И что это даст?
...
Рейтинг: 0 / 0
Обрыв соединения
    #39300835
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Semen81, 19606724
>... Имеется две системы ...
Рассмотрите вариант циклической нумерации информационных пакетов действия и инфопакетов ответа. И введите дополнительный метод для запроса сервера на получение номера пакета, последнего штатно выполненного действия.

С уважением,
Владимир.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39301009
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAxeleronSemen81, используйте очереди для сервисов. Например, Rabbit MQ, IBM WebShpere MQ, MSMQ.
И что это даст?
Да, неудачный совет дал я.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39301631
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Semen81, 19606724
>... Имеется две системы ...
Рассмотрите вариант циклической нумерации информационных пакетов действия и инфопакетов ответа. И введите дополнительный метод для запроса сервера на получение номера пакета, последнего штатно выполненного действия.

С уважением,
Владимир.
Не могли бы Вы пояснить последнее предложение? Предлагаете, чтобы сервер запрашивал у кассы номер пакета, или наоборот?
...
Рейтинг: 0 / 0
Обрыв соединения
    #39303177
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Вопрос: какие есть механизмы защиты от этого?

Создавать логическую транзакцию. Не техническую. Логическую.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39303201
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81,

Если есть возможность организовать обратный запрос, то сделать так:

1. Инициировать транзакцию: клиент посылает в сервис действие и получает код транзакции.
2. Сервис, завершив транзакцию, обращается к клиенту и посылает результат действия. Если необходимо, клиент при первом обращении говорит сервису, куда послать результат действия.

Если нет возможности организовать обратный запрос, то так:

1. Инициировать транзакцию: клиент посылает в сервис действие и получает код транзакции.
2. Через некоторое время (допустим, через 1-2 секунды), клиент обращается к сервису опять и с помощью полученного кода транзакции выясняет результат операции. Если операция ещё не завершена, клиент выжидает какое-то время и опять опрашивает, до тех пор пока не получит результат.

Можно сделать систему более надёжной: когда клиент, получив результат действия, должен ещё послать подтверждение, что он согласен с этим результатом, таким образом завершив транзакцию. В таком случае состояние всей системы в целом будет гарантировано согласовано.

Такая схема не зависит от используемых технологий.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39303224
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, 1 сен 16, 08:26 [19615609]
>...Предлагаете, чтобы сервер ...
В моём представление, за установление связи отвечает клиент. След. при потере оной клиент начинает телодвижения, а именно, пытается восстановить связь. При восстановлении связи посылает серверу (серверу приложений - многозвенка) запрос на получение номера последнего штатно выполненного действия и принимает нужное решение.

С уважением,
Владимир
...
Рейтинг: 0 / 0
Обрыв соединения
    #39303586
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Вопрос: какие есть механизмы защиты от этого? Распределённые транзакции .
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304741
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд касса вообще не должна зависеть от какой-то там CRM, что является каким-то там сервисом, или тетрадью тёти Маши.
И следовательно вообще не должна ждать ответа от сервера, где сервис развёрнут, или из комнаты, где тётя Маша сидит.

Следовательно мне видится такое решение: промежуточный буфер (файл, таблица, коллекция, очередь) на стороне кассы и синхронизация по мере доступности сервиса.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304742
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eventual consistency, йоба!
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304834
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAeventual consistency, йоба!

Это из другой оперы. Ты говоришь про согласованность данных, а речь идёт о бизнес-транзакциях. Было снято бабло или нет. При чём даже если бабло и было снято, остаток может не измениться, или измениться не соответственно снятому баблу, соответственно что ты там будешь согласовывать по данным -- совершенно не понятно. Тут либо действие выполнено, либо нет.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304837
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, я о том, что факт списания бонусов в CRM можно и потом отразить.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304859
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, я о том, что факт списания бонусов в CRM можно и потом отразить.

Ты смотришь на ситуацию с точки зрения данных. А проблема у ТС в том, чтобы определить факт успешного выполнения операции. А что там надо сделать в результате успеха -- до фанаря, бонусы списать, отправить письмо, отобразить поздравительный банер, выдать ачивку — вопрос другой.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304872
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CRM хранит историю взаимоотношений с клиентом. Историю, Карл :)
Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39304931
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANACRM хранит историю взаимоотношений с клиентом. Историю, Карл :)
Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть.

Что-то у тебя всё с ног на голову перевернулось. С какой кстати, клиент должен знать о какой-то там истории?

Касса: я собираюсь деньги списать, давай платить бонусами?
CRM: оплата прошла, бонусы списаны!
Касса: спасибо, говорю что всё оплачено.

Что присходит на деле:

Касса: я собираюсь деньги списать, давай платить бонусами?
CRM: оплата...аф34ывпыв... обрыв связи...
Касса: чёрт! ну хрен с ним, извини, чувак — не получилось.

Скажи мне, при чём тут история? Кассе надо знать, прошла оплата или нет. Списались ли бонусы при этом у CRM, или что там с ними произошло, кассе по барабану и фиолетово совершенно.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305278
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANACRM хранит историю взаимоотношений с клиентом. Историю, Карл :)
Выполнение бизнес-транзакций, операций и т.д. и т.п. не должно от неё зависеть.

Что-то у тебя всё с ног на голову перевернулось. С какой кстати, клиент должен знать о какой-то там истории?

Касса: я собираюсь деньги списать, давай платить бонусами?
CRM: оплата прошла, бонусы списаны!
Касса: спасибо, говорю что всё оплачено.

Что присходит на деле:

Касса: я собираюсь деньги списать, давай платить бонусами?
CRM: оплата...аф34ывпыв... обрыв связи...
Касса: чёрт! ну хрен с ним, извини, чувак — не получилось.

Скажи мне, при чём тут история? Кассе надо знать, прошла оплата или нет. Списались ли бонусы при этом у CRM, или что там с ними произошло, кассе по барабану и фиолетово совершенно.
С чего ты взял, что:
1. именно так всё устроено?
2. что это правильно?

ТС написал: "Имеется две системы, обмен между которыми происходит посредством web service". Не одна система, состоящая из кассы и CRM, а две.
Дак вот я выступаю за то, что первая система должна уведомлять последнюю постфактум :)
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305587
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAС чего ты взял, что:
1. именно так всё устроено?
2. что это правильно?

Из сообщения ТС. Ну ещё в свой хрустальный шар пристально смотрел. Зуб даю, всё именно так

skyANAТС написал: "Имеется две системы, обмен между которыми происходит посредством web service". Не одна система, состоящая из кассы и CRM, а две.

Именно. Две. Независимые. Каким боком тут eventual consistency упала — не понятно до сих пор.


skyANAДак вот я выступаю за то, что первая система должна уведомлять последнюю постфактум :)

Ты бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия. А то какой-то буффер, какая-то синхронизация... О чём ты вообще? Это две _разных_ системы. Тем более речь вообще не шла о согласованности данных. Речь шла о согласованности действий. В общем у тебя какая-то каша в рассуждениях. Конечно можно присобачить какую-нибудь модную технику ради техники, только нафиг она нужна.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305652
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :)
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305714
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :)
hVosttТы бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия.

Я написал что нужно, хотя если хочешь, можешь в догонку и слово буфер расшифровать ))
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305732
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Всем привет. Вот такой вопрос созрел. Имеется две системы, обмен между которыми происходит посредством web service. Одна система (клиент) посылает в сервис действие, сервис у себя (сервер) создает кое какие проводки (все в пределах секунды) и возвращает результат действия - успешно или нет, и в зависимости от ответа происходит определенные действия на клиенте. Так вот возникают иногда обрывы соединения, т.е. действие отправляется, обрыв, нет ответа и соответственно нет продолжения, т.е. прекращение операции. Но сервер, получивший через сервис действия не знает об обрыве и успешно осуществляет проводки. И это приводит к разсинхронизации двух систем по действиям. Вопрос: какие есть механизмы защиты от этого?
P.S.: клиент - это касса, сервер - система CRM, действия - это процесс списания бонусов, которое должна быть онлайн, при обрыве связи - на кассе нет списания, т.е. оплата бонусами не возможна, а в CRM - списание со счета проходит успешно.
Спасибо

В чем состоит "рассинхронизация"?
Т.е. если оборвалась связь клиент не знает, как закончилась транзакция?
Так это будет известно только после восстановления связи.
После того как связь восстановлена клиент должен убедиться в результате конкретной транзакции, иначе все будет разболтано.

Каждый запрос от клиента к серверу имеет свой ид, клиент долбит сервис запросом с одним и тем же ид пока не получит ответ, сервис
отрабатывает запрос с определенным ид только один раз
Т.е. для сервиса должен быть еще один запрос от клиента, подтверждающий транзакцию, если его нет - он должен не делать коммит или откатить и т.д.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305781
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиент в запрос вставляет ид операции, если от сервиса нет ответа, заносит его в "плохую" очередь.
При возобновлении связи, первым делом шлет плохие ид и сервер отменяет операции, если они были.
...
Рейтинг: 0 / 0
Обрыв соединения
    #39305906
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, о какой модной технике речь? Тебе слово буфер расшифровать? :)
hVosttТы бы пояснил что ты конкретно имеешь в виду. Конкретный механизм взаимодействия.

Я написал что нужно, хотя если хочешь, можешь в догонку и слово буфер расшифровать ))
Что я конкретно имею в виду: первая система (касса) выполняет списание бонусов и факт этого списания заносит в свою табличку, или коллекцию, или файл, или...
Некий фоновый процесс (сервис, консьюмер, брокер) разгребает содержимое данной таблички, или коллекции, или файла и информацию по выполненым операциям отсылает всем внешним системам, что заинтересованы в них.
В данном случае одна такая система - CRM.

Так понятно?
...
Рейтинг: 0 / 0
Обрыв соединения
    #39306015
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто я конкретно имею в виду: первая система (касса) выполняет списание бонусов и факт этого списания заносит в свою табличку, или коллекцию, или файл, или...

Я думаю там в любом случае операции с бонусами как-то фиксируются. Незачем заводить ещё одну какую-то табличку, коллекцию или файл.

skyANAНекий фоновый процесс (сервис, консьюмер, брокер) разгребает содержимое данной таблички, или коллекции, или файла и информацию по выполненым операциям отсылает всем внешним системам, что заинтересованы в них.

А если операция не удалась и в табличку ничего не записано. Пусть сервисы ждут у моря погоды? Или выжидают время и считают, что всё — каюк? Хрень какая-то.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Обрыв соединения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]