ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【redis】数据量巨大时的应对策略 [打印本页]

作者: 干翻全岛蛙蛙    时间: 2024-9-8 10:08
标题: 【redis】数据量巨大时的应对策略
为什么数据量多了主机会崩

一台主机的硬件资源是有上限的,包括但不限于一下几种:


如果我们真的碰到了这样的服务器不够用的场景,我们可以:


分布式系统

当一台主机扩展到极限了,但是还不够,就只能引入多台主机了
但不是说买来的新的机器直接就可以办理问题,也需要软件上做出对应的调解和适配。当引入多台主机了,我们的系统就可以称为“分布式系统”了
引入分布式系统万不得已的,系统的复杂程度会大大大提高(指数增长),这样出现 bug 的概率就越高、加班的概率就越大、丢失年终奖的概率也随之提高
应用数据分离架构




分离了之后,能一定程度上的办理硬件资源不够用的问题。但是如果随着请求量进一步增长、数据量进一步增长,我们就需要进一步地增长硬件资源、调解服务器的结构
应用服务集群架构

引入更多的应用服务器节点

应用服务器大概会比较迟 CPU 和内存。如果把 CPU 和内存吃没了,此时应用服务器就顶不住了
此时引入更多的应用服务器,就可以有效办理上述问题

负载均衡器


假设有 1w 个用户请求,有 2 个应用服务器,此时按照负载均衡的方式,就可以让每个应用服务器负担 5k 的访问量
   [!quote] 负载均衡器
  
  此时应用服务器的压力变小了,但“负载均衡器”不是一人负担了所有请求吗?他不会崩吗?

当请求量大到负载均衡器也扛不住的时间,只需要引入更多的负载均衡器(引入多个机房)就可以了

如上面讨论,增长应用服务器,确实能够处置处罚更高的请求量,但是随之存储服务器要负担的请求量也就更多了,此时仍是两个办法:
数据库读写分离



这样就把每一台机器的压力降低了。在实际的应用场景中,读的频率是比写要高的
主服务器一般是一个,从服务器可以有多个(一主多从),同时从数据库通过负载均衡的方式,让应用服务器进行访问
引入缓存

冷热分离架构

数据库天然有个问题——响应速度比较慢。所以将数据区分“冷热”,热点数据放到缓存中,缓存的访问速度往往要比数据库要快很多


后续应用服务器在读取数据的时间,就可以先读缓存,如果这个数据在缓存中存在,就不需要读数据库中的数据了;如果不存在,就再去读数据库。由于二八原则,所以大部分的访问都可以直接在缓存中找到答案


分库

引入分布式系统有两个方面:
虽然一个服务器存储的数据量可以到达几十个 TB,但是仍然会存在一台主机存不下数据的情况。当出现这样的情况时,我们就需要多台主机来存储


分表

如果某个表非常大,大到一台主机存不下,也可以针对表进行拆分


详细分库分表如何实践,还是要团结实际的业务场景来开展
微服务

是什么

上面已经演化出了一个比较复杂的分布式系统,可以处置处罚更多的请求,同时可以存储更多的数据。但是这样的演化远远不是终点。在实际工作中还会对应用服务器做进一步的拆分


注意:微服务本质上是在办理“人”的问题
当应用服务器复杂了,势必就需要更多的人来维护,当人变多了,就需要配套的管理,把这些人组织好


代价

引入微服务,办理了人的问题,但是付出的代价:
本来用户、商品、交易这些模块都是直接在进程内相互调用的。而现在需要通过网络,进行跨主机通讯

拆出更多的服务,多个功能之间要更依靠网络通讯,而网络通讯的速度大概比硬盘还要慢,这样系统的性能就会下降很多

   幸运的是,由于硬件技术的发展,网卡现在有“万兆网卡”,读写速度已经能凌驾硬盘读写了,这样才导致微服务的通讯操作不至于“太慢”
  
   服务器更多了,出现问题的概率就更大了,这就需要一系列的手段,来保证系统的可用性

上风


比如电商系统里面的用户模块,大概在很多模块中多需要用到,那我们就将其单独提取出来,给其他模块来调用

有的模块对于请求量/数据量处置处罚的不是很多,我们就给它少部署一点机器;有些重点的、负载量大的模块,我们就可以配置更好的机器

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4