这篇文章给大家介绍如何解决CDN等高并发的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
(一)集群与分布式
集群和分布式都是使用多台服务器进行处理的。集群中的每台服务器具有相同的功能,处理请求时调用哪台服务器都可以,主要起分流的作用。而分布式是将不同的业务放到不同的服务器中,处理一个请求可能要用到多台服务器,这样就可以提高一个请求的处理速度。集群的方式有两种:静态资源集群和应用程序集群。静态资源集群比较简单,而应用程序集群对于可能缓存的一些数据,需要在集群内的所有服务器之间进行同步,比如session。session的同步方式有两种,一种是session发生变化后主动同步到其他服务器,如tomcat,一种是使用一个公共的程序统一管理session,如memcache、redis等。session需要同步的本质是为了让不同的服务器处理同一个用户的请求,因而在负载均衡的时候,如果可以将同一个用户的请求分配到同一个服务器,那么就不需要session了。为了防止有机器宕机后丢失数据,还可以将集群的服务器进行分组,在小范围的组内同步session。对于集群来说另外一个核心问题就是负载均衡,也就是接收到一个请求之后具体分配到哪个服务器去处理,可以通过软件处理或使用专门的硬件(如F5)处理。
(二)应用和静态资源分离
刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件,没有状态,便于分离,直接存放到相应的服务器即可。通过专门的域名去访问。
(三)页面缓存
页面缓存是将应用生成的页面缓存起来,这样就不需要每次都重新生成页面了,从而减少了对应用服务器的访问请求。Nginx服务器自带页面缓存功能。
(四)CDN
CDN是一种特殊的集群页面缓存服务器,它和普通的页面缓存服务器的区别在于它的存放和分配请求的方式。CDN服务器分布在全国各个地区,对于用户的请求会选择一个最合适的CDN服务器去处理,比如联通用户的请求会被分配给联通的CDN服务器节点,上海用户的请求会分配给上海的CDN服务器节点去处理。每个CDN节点就是一个页面缓存服务器,如果没有缓存的资源就会从主服务器获取,否则直接返回。CDN分配请求的方式比较特殊,它不是通过普通的负载均衡服务器来分配请求,而是通过使用一个特殊的CDN域名解析服务器来分配请求。CNAME将域名解析到一个特殊的域名,然后通过CDN域名解析服务器对这个特殊的域名进行解析,分配到某个CDN服务器节点。
(五)反向代理
反向代理指的是客户端直接访问的服务器并不是真正提供服务的,它从别的服务器获取资源,然后将结果返回给用户。
关于如何解决CDN等高并发的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。