Service Fabric и TCP-подключения

Мы разработали службу, подобную TeamViewer, где клиенты подключаются через SSL к нашим централизованным серверам. Другие клиенты также могут подключаться к серверу, и мы можем настроить туннель через нашу службу, чтобы обеспечить одноранговое соединение без проблем с NAT или брандмауэром.

Это прекрасно работает с облачными службами Azure, но мы хотели бы отказаться от облачных служб Azure. Service Fabric кажется подходящим вариантом, потому что он поддерживает ARM, а также позволяет использовать много детализированных сервисов и значительно упрощает обновление частей системы.

Я знаю, что микросервисы в Service Fabric могут иметь состояние, но во всех примерах в качестве состояния используются постоянные данные. В моей ситуации TCP-соединение также является частью состояния. Можно ли использовать TCP с сервисной структурой?

Конечная точка TCP должна поддерживаться в том же экземпляре (в течение нескольких дней), что значительно усложняет всю модель структуры служб.


person Ramon de Klein    schedule 05.11.2016    source источник


Ответы (1)


Конечно, пользователи могут подключаться к вашим службам по любому протоколу. Ваш сервис кажется мне очень чувствительным к состоянию, точно так же, как состояние сеанса пользователя является устойчивым - вы хотите, чтобы пользователи возвращались в то же место, где находятся их данные. В вашем случае эти «данные» - это TCP-соединение. Но нет никакой гарантии, что конечная точка TCP будет поддерживаться в течение нескольких дней в любой системе — компьютеры выходят из строя, программное обеспечение выходит из строя, операционные системы получают исправления и т. д. Вы должны быть готовы к разрыву соединения, чтобы вы могли быстро восстановить его. Для этого отлично подходят службы Service Fabric с отслеживанием состояния. Переключение службы с отслеживанием состояния на другой компьютер происходит очень быстро (миллисекунды). Конечно, вы не можете на самом деле реплицировать живое соединение, но вы можете реплицировать все метаданные, необходимые для восстановления соединения в случае его разрыва.

person Vaclav Turecek    schedule 08.11.2016
comment
Мы устойчивы, когда TCP-соединение прерывается (клиент просто повторно подключается к возможному другому экземпляру). Тем временем результаты буферизируются (на ограниченный период времени). Я все еще сомневаюсь, стоит ли использовать Service Fabric. Рой докеров может быть столь же полезен для нашего сервиса, и я думаю, что поддержка Docker для Windows в Azure появится в ближайшем будущем. - person Ramon de Klein; 08.11.2016