我有一个设计想法,想听听 SF 的建议。我有 5 个客户,他们都有小型房地产数据库。我为他们构建了一个桌面应用程序,现在他们想合并他们的数据库来共享数据。我不想把所有东西都集中在一个地方,也不想维护服务器。他们还告诉我,他们所有的办公室都有小型服务器和维护人员。虽然一切似乎都适合 Web 应用程序,但我还是想尝试一些新的东西:
- 任何客户小型服务器都可以通过 VPN 以网状网络的形式与其他服务器相连,不存在单点故障。
- 如果其中一台服务器发生故障,客户仍然可以从其他网状网络服务器之一连接到他们的数据库,而不必从发生故障的本地服务器连接到数据库。
- 在正常运行期间,所有服务器都通过 VPN 与其他服务器同步数据库。
- 我可以接受半天的非同步数据定时窗口,换句话说,由于我不需要实时同步,所以服务器不必始终保持同步。
- 我可以将我的数据迁移到其他非 Sql 技术,例如 CouchDB 或 Redis 或您建议的任何技术。
正如您所看到的,我没有太多的限制,尽管我可以使用 Web 应用程序,但我希望尽可能地将支持、数据隐私和管理委托和分散到我的客户办公室。
这是一个疯狂的想法吗?你知道是否存在类似的东西吗?你会建议哪种技术?
答案1
类似的东西确实存在,比如 Amazon、Rackspace、MS Azure 和其他云提供商。将其制作成 Web 应用程序,支持云,然后托管在其中一个服务上 — 大功告成。
否则,熟悉 VPN 后,使用 VPN 创建网格就没那么有趣了。VPN 是具有 2 个端点的隧道。要创建网格,每个 VPN 端点都需要有一个单独的隧道连接到其他多个端点。(或所有端点)IP 分配和路由从那里开始会变得非常棘手。人们会这样做吗?当然。您需要 Cisco/Juniper/VPN 专家吗?很可能。
然后,从代码的角度来看,数据库连接会变得非常有趣。每个位置都有数据库的完整副本?然后将更改复制到其他位置?每个位置仍然有故障点,只是只有该位置受到影响,并且可能随时丢失当前的任何数据。
云虽然目前是个热门词,但似乎是未来的发展方向。或者只是互联网,为什么要管理整个虚拟服务器,而你可以只获得一些网络托管,运行你的程序,让他们担心服务器。