如果你要提高服务的访问速度,大概有这么常用的几种:
缓存,CDN加速,索引优化,负载均衡等。
这跟买胡萝卜有什么关系么?
比如:
【1】缓存:我要去城中心的大超市购买胡萝卜,但是由于品种繁多很难找到。你经过交涉,让服务员把胡萝卜给你放到了柜台区,来了就可以拿到,不用再去大海捞针。
这类似于缓存,把数据库提前拿出来,整理好放到内存区,来了就取,取了就走。
【2】索引:当然,把胡萝卜放到柜台区可以提速,但是柜台区就那么点地方,放不了多少东西。除此之外,超时服务员可以整理好详细的指示牌,物品号。可以很快的找到,这也是一个方式。
把它牵强的称为索引吧,更快的寻找数据
【3】负载均衡:有一天你去买胡萝卜,发现超时关门了,又或者你发现今天人太多了你根本挤不进去。后来,超市负责人在周边开了几个相同的大型超市。这个服务没开启,可以去另一个。
这就是负载均衡,横向扩充服务器提高访问质量
【4】CDN:同样是提速,CDN是更有趣,这次城中心的超市为了你们那片的服务,就在你家门口附近,开了个小的服务站,专门出售胡萝卜。这样,你一出门就可以买到新鲜的胡萝卜。
CDN加速,通过缩短访问距离
CDN的获取数据方式
你家附近的服务站没有胡萝卜了,需要进货
原先是超市总站负责人,按时给你送货。后来发现,有时候没货了,需要等着,有人来买也没法提供服务。
这是CDN服务被动的获取数据,定时服务总站来推送数据
后来换方式了,没有货了,小服务站就去大超市拿货,实时保证小服务站有胡萝卜可以出售。
这是CDN服务主动的获取数据,随时去服务总站拿来数据
CDN适用的场景
有一天你去小服务站买酸奶了,人家告诉你酸奶的保质期太短,这么没有货。
有一天你去小服务站买香烟了,人家告诉你需要校验你是否已经满了18岁。
这两样东西小服务站不提供服务。
所以说,CDN不适合数据交互频繁,需要时常校验的数据做CDN服务
比如:交互的数据,需要登录的网站。这些都不适合CDN。
总的来说:CDN不适合动态资源(数据),非纯静态资源(需要登录的网站),而适合纯静态资源(JS,CSS,图片,视频等)
CDN最后的总结(这里就抄袭了度娘)
CDN的全称是Content Delivery Network,即内容分发网络。
其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。
CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。
从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。 为更好地理解CDN,让我们看一下CDN的工作流程。当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。
具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。