外国服务器,香港服务器,美国服务器,高防服务器,服务器租用,服务器托管
首页 > 新闻资讯 > 极客学院
Web服务和数据库有什么区别
2019-01-16 17:43:10 | 来源:极客网络 | 作者:liuchuang

      Web需要解决大访问量的问题,不能局限于数据库。事实上80%的请求只关注在20%的热点数据上。我们需要建立Web服务器租用和数据库之间的缓存机制。我们可以使用磁盘作为缓存机制,也可以使用内存作为缓存的方式。以此将大部分的热点数据查询,减小数据库的压力。我们在之前的章节也提到过缓存的机制,这一章将做详细的探讨。

      页面静态化技术,用户访问网站的某个页面,大部分网站的页面在很长时间内,可能都是没有变化的。例如一些博客,一旦发布几乎是不会修改内容的。这样,通过动态技术生成的静态HTML页面缓存到Web服务器的本地磁盘。除了第一次请求是通过动态技术査询数据库(或者文本数据)获取之外,之后都直接将本地磁盘文件返回给用户。PHP等框架都提供了这样的技术来做磁盘缓存。

      在Web系统规模比较小的时候,这种做法并没有什么问题。但如果Web系统规模变大,例如,当企业或者业务有数十台数百台服务器的时候,这些盘文件将会有无数份,这样资源就会比较浪费,也非常不好维护。于是有人就提出将磁盘缓存集中到某一台服务器。

      在页面静态化的例子中,我们将缓存搭建在Web机器本机,这样维护起来是有难度的,会带来更多问题。因此我们选择搭建的内存缓存服务必须是一个独立的服务。

      内存缓存的选择有 Redis和 Memcache,我们在前面的章节已经详细介绍过当搭建单台内存缓存后,我们又会面临单独服务器宕机的问题,所以必须将它变成一个集群。简单的做法是増加一个 slave作为备份机器。但是如果有海量请求,会发现 cache的命中率不高,所以我们希望将它配置成一个集群,比如 Redis Cluster。

      Redis Cluster集群内的 Redis互为多组主从服务,同时每个节点都可接受请求,在拓展集群的时候比较方便。客户端可以向任意一个节点发送请求,如果是它负责的内容,则直接返回内容;否则,查找实际负责Redis节点,然后将地址告知客户端,客户端重新发送请求。

      内存缓存服务在切换的时候存在一定风险。在A、B集群切换的过程中,必须保证B集群的内存中的热点数据应该尽量与A集群相同,否则切换的一瞬间大量请求内容在B集群的内存缓存中查找不到,流量直接冲击后端的数据库服务,很可能导致数据库死机。

      上面机制的目的都是减少数据库的读操作,但是,写的操作也是一个大的压力。写操作虽然无法減少,但是可以通过合并请求,来起到减小压力的效果。这个时候,我们就需要在内存缓存集群和数据库集群之间,建立一个修改同步机制。

      我们可以先将修改请求生效在缓存中,让外界查询显示正常,然后将这些SQL修改放入到一个队列中存储起来,队列满或者每隔一段时间,合并为一个请求到数据库中进行更新。

      除了改变系统架构的方式提升写的性能外, MYSQL本身也可以通过配置参数 innodb_flush_log_attrx_commit:来调整写入磁盘的策略。我们也可以选择RAID或者SSD等方式来提高写的性能。

      不管数据库的读还是写,当流量再进一步上涨,就会穷尽这些资源当然继绩加服务器也不是不可行,但这么做的成本会比较高。这个时候,对于部分核心数据,就可以考虑使用 NOSQL的数据库。 NOSQL存储大部分都是采用Key/alue的方式,这里比较推荐使用 Redis, Redis本身是一个内存 Cache,同时也可以当作一个存储来使用,让它直接将数据序列化到磁盘。这个我们在前面都有过介绍。

      我们可以将数据库中某些被频读写的数据分离出来,放在我们新搭建的 Redis存储集群中,又进一步减小原来 MYSQL数据库的压力,同时因为 Redis本身是个内存级别的 Cache,读写的性能都会大幅度提升。

      一般的海量数据网站,架构上采用的解决方案很多是类似上述的方案,不过,使用的缓存服务可能多种多样,会根据自身业务特点开发出自己的缓存服务。

      我们还会发现其他的问題,比如数据库中根本不存在的数据查询或者操作请求。例如,我们会请求查询一个不存在的信息,系统会从各级缓存逐级查找,最后查到数据库本身,然后才得出查找不到的结论,返回给页面,因为各个级别的各级缓存对它无效(根本不存在)。这个请求是非常消耗系统资源的,大量的空内容查询,是可以冲击系统服务的。我们可以采取映射表来做缓存,这张映射表对应着记录的映射,如果需要查询不存在的内容,则会被阻挡在外面。

最新新闻

查看更多

相关新闻

查看更多

推荐优选服务器

国内外服务器租用、服务器托管,365天24小时极致服务体验~认准极客网络!
在线咨询
24H在线售后
11082052
24H服务热线
0769-88836624
IDC/ISP/IRCS/增值电信业务经营许可证号:粤B1-20190887
COPYRIGHT © 2010-2018 广东极客网络科技有限公司 版权所有.粤ICP备18157343号
极客网络提供:服务器租用,服务器托管,高防服务器,香港服务器,美国服务器,韩国服务器,日本服务器,台湾服务器,免备案服务器,bgp高防服务器,站群服务器,等外国服务器IDC服务;敬请放心选购!

在线
客服

客服
热线

0769-88836624
7*24小时服务热线

关注
微信

马上推出关注官方微信
顶部