为啥要把web服务器和数据库服务器运行在不同机器上

提这个问题的还是学生吧。去企业上几天班就知道了。你以为的是1+1=2 实际上性能和效率是1+1\u0026gt;2的。容错率也更高。你所担心的问题是没有必要的。 WEB和数据库分开放。一般是内网传输,带宽是不要钱的。而且速度快,能满足要求。阿里云也是内网传输的。不收应用到数据库的流量费。明白么。你是买一台巨无霸高性能主机,还是多台普通主机组成的高性能应用。这个每个人都有自己的选择。第二个已经应用在各大企业中,包括百度,GOOGLE世界级的企业。除此以外,有很多优点,可以去看相关资料。不再说了。
■网友
【为啥要把web服务器和数据库服务器运行在不同机器上】 这个问题可以从以下几个方向去思考:
一、硬件故障
基本上现在大型的软件都是搞分布式部署、分布式计算,生产环境最忌讳的就是单点故障,所以现在云计算、虚拟化得以大行其道,哪怕是一个简单的计算微服务,也应该最少要有2份以上的副本,而且最好是要求这些副本不同机器、不同机架甚至是不同的数据中心,这样在发生意外时另外有效的副本可以马上接上继续工作,一个简单的服务尚且如此,更何况是重量级的web服务器和数据库服务器,部署在同一台物理机器上是及其不合理的

二、软件定位
每个软件的专注的功能不同,必然导致它们对各种软硬件资源的利用效率不一样。web服务器主要是用来处理网络连接和资源请求的,因此要求就是高带宽,高并发,对CPU的要求其实不高,对内存的要求高,因为在这一层面需要缓存大量的信息以及线程池来追求速度,对磁盘IO要求不高,因此可以专门优化为大内存的多核服务器,结合具体使用的服务器(如Apache、Tomcat、Nginx等)做极致的优化,然而为web服务器所做的优化显然不适合数据库服务器。数据库服务器的主要职责是处理SQL语句,管理磁盘上存储的数据,要求大量的磁盘IO,对缓冲池要求极高,拿MySQL的Innodb引擎来讲,基本上最好内存的80%都分配给innodb_buffer_pool_size,用来缓存索引信息,磁盘脏页,临时表等,但是并发程度是远远低于web服务器的,比如对于一个秒杀系统而言,如果web服务器在1秒内收到了100万请求需要处理,而库存只有1万个,这时会落到数据库的请求就是最多1万个,当然,生产环境中甚至不应该使用数据库来查这些实时数据。总结,web服务器和数据库服务器定位不同,优化点也不同,强行放一起会严重影响两者的性能

三、安全
一般企业的数据库都是部署在内网,端口不会开放的,以防止黑客攻击,只能通过内网跳板机去访问,由专业的DBA管理,而web服务器是开放的,容易造成误操作或者被攻击导致数据损坏什么的


■网友
单数据库,单web确实一台最好
■网友
有几种情况1数据库按核收费2提高数据库性能3复杂系统


    推荐阅读