对于用户请求量过大的应用来说,总是会绕不开一些名词。比如用户请求量过大,会导致一种高并发的现象,那么如何来应对这种现象呢,在我浅薄的认知里,目前有两种方式。
第一种是土豪公司做法,钱!钱!钱!用钱买更多的硬件,通过做服务器集群或者将不同的功能模块部署到不同的服务器上(分布式),将一台服务器的压力分散给多台服务器;
第二种是牺牲做法,具体的说,可能就是通过以时间换取空间的方法,以牺牲部分客户体验效果(队列)或者牺牲部分数据的准确性(缓存)的方式来减少服务器的压力。
1.高并发
高并发是一种现象,当同一时间,多个用户访问应用时就难免会出现这种现象。
2.集群
集群是一种策略,将服务部署到多台服务器上,从而减少服务器的压力。集群离不开另一个名词(高可用)。高可用,即使得应用的可用程度提高,当一台服务器宕机时,不影响其业务的正常流程。
集群的话,会增加硬件的成本。
3.分布式
分布式也是一种策略,将业务按照功能进行划分,不同的功能服务部署到不同的服务器上,这样既减少了服务器的压力,同样也不会因为其中某个功能不能使用导致业务整体瘫痪的现象。
分布式也是通过增加硬件的方式,所以也会在一定程度上增加了硬件的成本。
4.队列
队列也可以看作是一种策略,通过将所有的请求保存到消息队列中,后台服务器逐一读取请求并处理的方式进行缓解服务器的压力。
队列会导致用户的请求响应有延迟,实时性降低,从一定程度上牺牲了用户的体验感。
5.缓存
缓存毋庸置疑也是一种策略,通过将用户同样的访问请求保存起来,当用户第二次访问的时候,之前从保存的地方取出,直接响应,减少与数据服务器之间的交互。
缓存如果在缓存内容没有及时更新的情况下响应给用户,会导致数据的准确性有偏差。
这段时间一直听到这些名词,在之前的面试中也被频繁的问到这些概念,刚好目前也在学习这部分内容,就将自己的见解记录下来。希望有不对的地方,博友可以严厉指正,有遗漏的地方,可以补充说明。
谢谢!