【问题标题】:Client Server architecture design客户端服务器架构设计
【发布时间】:2012-07-23 08:03:08
【问题描述】:

应用程序是客户端服务器模型。

客户端应用程序具有本地数据库,客户将在日常交易中使用该数据库。

服务器拥有另一个数据库,其中包含来自客户端的整合信息以及其他一些关键信息。

客户端和服务器需要定期通信:数据迁移,从服务器访问数据(客户端不可用)等。

客户端或服务器都没有静态 IP 地址。

如何确保客户端可以无缝连接到服务器?

由于业务需求,将所有内容都放在一个位置(例如,在云中或在数据中心)不是一种选择。

【问题讨论】:

  • 您的要求听起来更像是 P2P 应用程序而不是客户端服务器。我是否知道“由于业务需求,我们不能将客户端和服务器数据库和服务放在一个位置(例如在云中或数据中心)”
  • 这个要求来自只希望他们的数据在他们的场所的客户:| (是的,不要问!!!)

标签: database architecture client-server


【解决方案1】:

如果只有一台服务器,为什么不能有静态 IP?

它总是有一个外部可见的 IP 吗?然后动态 DNS 适合您 - 服务器会在 IP 地址更改时通知 DNS 服务器。

如果他们都没有可公开访问的地址,则您需要一个调解员(代理),该调解员有。现在,这个中介要么知道数据,要么将数据加密。

这样的中介可以是任何东西,例如 XMPP 服务器,其中服务器将被分配一个特定的 JID,如 server@mydomain,而客户端将被分配给他们自己的 ID(如 customername@mydomain),或者可能是一些PubSub 解决方案,或者它甚至可以是基于电子邮件的解决方案(是的,这很脏),客户端和服务器都会定期读取它们的邮箱。

我想大多数 ESB 解决方案也可以。

主要的是,为了在 Internet 上创建客户端-服务器架构,服务器(或通过自己的应用程序特定协议帮助访问服务器的中介)必须是可公开访问的。

【讨论】:

  • 我考虑过以 DynDNS 的方式来做这件事。不同之处在于代理服务器将位于两个对等方之间,并且两个对等方将运行一个客户端,该客户端将其 IP 通知代理。当两个对等方希望进行通信时,他们将向代理询问另一个对等方的 IP 地址是什么,并且代理将提供最新的 IP。
  • 如果他们之间有稳定的东西,你也可以在其中建立一个双向通道,比如 VPN,但这种方式确实不必通过这种方式进行通信那东西,它只是一个名称注册表。