对于我的宠物项目,我决定使用基于服务的架构(是的,流行语 SOA),因为我可以独立于其他服务扩展每个服务,将它们分布在地理上,它们将比其他服务更多地使用,等等。
诀窍在于,某些服务需要彼此私下通信(并与最终用户公开通信)。这些服务将位于不同的数据中心,它们之间没有任何内置的私有管道(我认为 SoftLayer 有这样的)。
我不太关心通信是否由于加密而有点慢。我主要关心 MITM 攻击和窃听。也就是说,我希望服务确信他们正在与朋友服务而不是冒名顶替者交谈。
我看到的这种服务间通信的选项是:
- 带有 TLS 的 HTTP
- 带有 TLS 的 TCP/IP(一些自定义协议)
- 传播工具包(不确定这里的加密)
- HTTP 或自定义 TCP/IP over SSH 隧道
- 在数据中心之间创建 VPN
- 客户证书?证书的相互验证?
显然,我脑子里有很多胡言乱语。帮助!
你怎么看?你以前做过吗?你有什么经验?什么“运作良好”?
如果您选择 VPN,您推荐哪种 VPN 系统?开放式VPN?此类 VPN 系统如何处理临时网络分区?他们会自动修复/重新连接吗?
我想 VPN 解决方案将加密所有连接,但我只想加密一些连接。那么可能需要一个 SSH 隧道。
谢谢你的建议。