CDN (Content Delivery NetWork) 内容分发网络,它是构筑在现有互联网基础上的一种先进的流量分配网络。区别于镜像,相当于是 CDN = 镜像(mirror) +

缓存(Cache)+整体负载均衡(GSLB)。目前CDN 都已缓存网站中的静态数据为主,如CSS,JS,图片和静态页面等数据,用户从主服务器上请求到动态页面之后,再从CDN上下载这些静态数据,从而加速访问。

CDN目标:

  • 可扩展性(Scalebility) 应对新增大量的数据,用户和事务的扩展性。低成本提供高质量的内容分发。
  • 安全性(Security) 强调安全问题。
  • 可靠性。容灾和负载均衡咯。

CDN架构:

如图用户去访问一个假设是css文件,先是想localserver发起请求,然后迭代解析回到这个域名的注册服务器去解析,然后通过cname解析到CDN全局负载均衡服务器,然后用户直接去这个CDN节点访问这个css文件咯,如果不存在就去源站请求。

3种负载均衡

  • 链路负载均衡:dns服务器进行负载均衡,在解析中完成。

  • 集群负载均衡:分为硬件和软件

     - 硬件:非常昂贵的硬件设备,如F5  开始一旦坏掉就GG

    - 软件: 通过代理服务器,可能会增加网络延时。LVS在IP层进行地址转发,HAProxy根据HTTP请求头进行转发。

  • 操作系统负载均衡:利用操作系统的软中断和硬中断,来达到负载均衡。

CDN动态加速:这个是目前比较流行的一种优化技术。原理其实就是在CDN的DNS解析中通过动态链路探测技术来找到回源最好的一条路径,然后通过dns的调度将后面所有的请求都选在这条特定的路径上,从而加速用户的访问效率。所以一个用户在CDN节点遍布全国的情况下从一个CDN节点接入之后,可以选择一个最好的源站链路给用户。简单的方法就是每条链路去下一个特定大小的文件,然后找出这个链路列表里面耗时最小的。其实还要考虑带宽和安全等等成本。

如下图就是一个就是一个使用CDN加速网站访问的架构示意图

其中还包括了网站分布式文件系统、noSQL和搜索引擎技术等。

Java Web 深入分析(3) CDN的更多相关文章

  1. Java Web 深入分析(6) Tomcat

    tomcat是什么:汤姆猫?Javaweb服务器? Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache ...

  2. Java Web 深入分析(8) Servlet工作原理解析

    Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态We ...

  3. Java Web 深入分析(7) Jetty原理解析

    1Jetty的基本架构 Jetty有一个基本的数据模型,这个模式就是handle,所有拷贝拓展的组件都被当做一个handler被添加到server中,然后由jetty统一管理. 1.1Jetty基本架 ...

  4. Java Web 深入分析(4) Java IO 深入分析

    I/O问题可以说是现在海量数据时代下 ,I/O大部分web系统的瓶颈.我们要了解的java I/O(后面简称为(IO)) IO类库的基本结构 磁盘IO的工作机制 网络IO的工作机制 NIO的工作方式 ...

  5. Java Web 深入分析(12) JVM(2) 垃圾收集与内存分配

    前言 java的内存分配和垃圾回收往往是影响系统性能和并发能力的主要因素,虚拟机提供许多的参数就是为了根据不同环境和请教下进行调优,没有最好的调优也没有固定的调优.需要我们深入的去了解jvm的各个垃圾 ...

  6. Java Web 深入分析(11) JVM(1)

    前言 Java启动后作为一个进程运行在操作系统中,该进程要分配的内存有以下几个: 1.Java堆: 存储java内存区域,堆大小是在jvm启动时就像操作系统申请完成,其中 -Xmx和-Xms 分别表示 ...

  7. Java Web 深入分析(11) JVM 体系结构与工作方式

    jvm体系 jvm简介 java virtual machine jvm体系详解 jvm工作机制 虚拟机怎么执行代码 jvm为何基于栈 执行引擎 执行引擎过程 java调用栈 总结

  8. Java Web 深入分析(10) Spring 实践

    Spring helloworld [http://wiki.jikexueyuan.com/project/spring/hello-world-example.html] HelloWorld.j ...

  9. Java Web 深入分析(9) Session 和 Cookie

    前言: session 和cookie都是为了保持服务器和客户端之间交互状态.如果一天的PV有几亿,而一个cookie占200个字节但是也会占用很多带宽?所以大访问量就引用session,但是几百台服 ...

随机推荐

  1. OpenJudge计算概论-骑车与走路

    /*============================================================ 骑车与走路 总时间限制: 1000ms 内存限制: 65536kB 描述 ...

  2. android: 使用android逆向助手反编译APK

    第一步:下载逆向助手:(链接: https://pan.baidu.com/s/15jtoFDg9LWV80HREeyx5HA 提取码: k527 ) 第二步:将apk文件拷贝到逆向助手的apktoo ...

  3. VUE钩子函数created与mounted区别

    created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图. mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作.

  4. HTML5 地理位置定位API(5)

    HTML5 Geolocation API (地理位置应用程序接口) 目前PC浏览器支持情况: Firefox 3.5+Chrome 5.0+Safari 5.0+Opera 10.60+Intern ...

  5. javascript的promise

  6. nginx+lua 设置跨域

    nginx 配置: header_filter_by_lua_file cros.lua; access_by_lua ' if ngx.var.request_method == "OPT ...

  7. osg osgViewer::View::setUpViewInWindow()

    void ViewerBase::frame(double simulationTime) { if (_done) return; // OSG_NOTICE<<std::endl< ...

  8. 导出 VuePress构建的网站为 PDF

    前言 学 Rust 也有一段时间了,网上也有不少官方文档的中文翻译版,但是似乎只有 Rust中文网站 文档一直是最新的,奈何并没有 PDF 供直接下载,是在是不太方便,为了方便阅读以及方便后续文档更新 ...

  9. thinkPHP 类库映射 类库导入

    遵循我们上面的命名空间定义规范的话,基本上可以完成类库的自动加载了,但是如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射.命名类库映射相当于给类文件定义了一个别名, ...

  10. jquery获得 当前页面url的变量

    (function($){ $.extend({ urlGet:function () { var aQuery = window.location.href.split("?") ...