为什么要把web服务器和数据库服务器运行在不同机器上?
一、为什么要把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服务器是开放的,容易造成误操作或者被攻击导致数据损坏什么的
延伸阅读:
二、MongoDB是什么
非关系型数据库(nosql ),属于文档型数据库。MongoDB采用类JSON的documents来存储数据。数据结构由键值(key=>value)对组成。
MongoDB采用动态数据模型schema,这意味着不需要预先定义表的数据类型和字段名。当MongoDB需要更新文档documents的时候,可以轻松增加新的字段名或者删除旧的字段。MongoDB让数据结构更加层级化,因而存储数组等复杂数据结构。 在同一个集合collection中,文档document对字段也没有强约束,因此更容易设计差异化的数据结构。
猜你喜欢LIKE
相关推荐HOT
更多>>关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点是什么?
一、关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点1.字段默认值:针对每个字段都有自己的默认值,较有利于进行统计和分析,以及...详情>>
2023-10-20 21:56:39Gradle Transform到底是什么怎么用?
一、Gradle Transform到底是什么Gradle Transform是Android官方提供给开发者在项目构建阶段(.class -> .dex转换期间)用来修改.class文件的一...详情>>
2023-10-20 20:24:09MyBatis和jOOQ有哪些区别?
一、MyBatis和jOOQ的区别1、数据库操作风格不同MyBatis是一种基于XML或注解配置的SQL映射框架。它通过编写SQL语句,并使用对象映射将结果集映射...详情>>
2023-10-20 19:06:20ACTION_CANCEL到底何时触发,滑出子View范围会发生什么?
一、ACTION_CANCEL在这些时候会触发1、父view拦截事件首先要了解ViewGroup什么情况下会拦截事件,请看下面一段代码:@Overridepublic boolean d...详情>>
2023-10-20 11:22:41热门推荐
在mysql中, 为什么只有右模糊才走索引?
沸为什么声明性语言往往适合于并行执行,命令代码很难在多个内核和多个机器之间并行化?
热SQL语言中的ALTER和UPDATE,DROP和DELETE都有什么区别?
热关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点是什么?
新MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
jmeter性能测试步骤?
Gradle Transform到底是什么怎么用?
Excel与数据库有什么不同?
MyBatis和jOOQ有哪些区别?
什么是web前端?
一个大型的SNS网站,是否适合数据库全部用mongodb来做,为什么?
在数据库查询的底层实现上SQL Server和MySQL的区别是什么?
外企银行一般用什么linux版本系统和数据库呢?
neo4j有什么缺点?