通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

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

基本上现在大型的软件都是搞分布式部署、分布式计算,生产环境最忌讳的就是单点故障,所以现在云计算、虚拟化得以大行其道,哪怕是一个简单的计算微服务,也应该最少要有2份以上的副本,而且较好是要求这些副本不同机器。

一、为什么要把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对字段也没有强约束,因此更容易设计差异化的数据结构。

相关文章