我们有一个读取量很大的语义网 (RDF) 应用程序,一台服务器上安装了 RHEL 5/Apache 2.2.3/Tomcat 6/Java 6,另一台服务器上安装了 MySQL 5.1。Apache 和 MySQL 是 Red Hat repo 的反向移植版本,所以请不要谈论版本有多旧。我想讨论一下,从性能方面来说,使用 Unix 套接字将数据库放在同一台服务器上的优点与使用 TCP 调用远程数据库服务器的优点。我知道从安全性方面来说,如果黑客拥有了这台机器,他们就拥有了整个堆栈,但我现在担心的是性能。服务器已经加固,前面有多个 IDS 和防火墙。
答案1
我不确定这是否会很快陷入“意见太多而不合适”的境地,但还是要说。我能看到的主要性能差异是牺牲分割模型的磁盘性能与牺牲统一模型的网络性能。因为(根据我的经验)你更有可能受到磁盘限制而不是网络限制,所以我倾向于保持模型分割。
答案2
这种问题不是重点,因为还有很多需要解释的地方。但是,性能始终取决于资源。使用网络(包括请求/响应时间)的开销很小,但可以为您的应用程序分配更多系统资源,更不用说隔离每个部分的磁盘 I/O 以帮助提高 I/O 密集型应用程序的性能。