我们开发了类似TeamViewer的服务,客户端通过SSL连接到我们的集中式服务器。其他客户端也可以连接到服务器,我们可以通过我们的服务设置隧道,以便在没有NAT或防火墙问题的情况下实现点对点连接。
这适用于Azure云服务,但我们希望摆脱Azure云服务。 Service Fabric似乎是要走的路,因为它支持ARM,并且允许更细粒度的服务,并使系统的更新部分更加容易。
我知道Service Fabric中的微服务可以是有状态的,但所有示例都使用持久数据作为状态。在我的情况下,TCP连接也是状态的一部分。是否可以将TCP与服务结构一起使用?
TCP端点应该在同一个实例上保持活动状态(持续数天),因此这会使整个服务结构模型更加困难。
答案 0 :(得分:1)
当然,您可以让用户通过您想要的任何协议连接到您的服务。对于我来说,您的服务听起来非常有状态,就像用户会话状态是有状态的一样 - 您希望用户返回到他们的数据所在的相同位置。在你的情况下,那个"数据"是TCP连接。但是,无法保证TCP端点在任何系统中保持活动数天 - 机器出现故障,软件崩溃,操作系统被修补等等。您需要为连接中断做好准备所以你可以快速重建它。 Service Fabric状态服务非常适合这种情况。有状态服务到另一台机器的故障转移非常快(毫秒)。当然,您实际上无法复制实时连接,但您确实可以复制在断开连接时重新建立连接所需的所有元数据。