【腾讯云的1001种玩法】十分钟轻松搞定云架构之二:更好的网络
大家好,在第一节课我们介绍了云端最简架构,本节课程是【十分钟轻松搞定云架构】课程第二节,更好的网络。
在这一节课,我们将要讨论以下几个内容:
- 为什么我们需要更好的网络?
- 什么是内容分发网络?
- 内容分发网络能够为我们带来什么?
为什么我们需要更好的网络
1. 用户的不断增加
用户的不断增加会导致我们的带宽需求不断增加。我们需要为用户提供更好的网络,来让他们更好的使用我们的产品。如果你不提升网络的性能,用户量的提升会导致应用的网络跟不上,变得非常慢、非常卡,反而会导致你的用户离开你的产品,选择其他产品。
2. 用户遍布全国甚至全球
如果不提升网络性能,会出现部分用户访问比较快,部分用户访问比较慢。
3. 用户端带宽的不断提升
用户端带宽的不断提升让用户的浏览速度不断的加快,体验变的更好。同样的,我们也需要提升我们自己的网络性能,来为用户提供一个更好的体验。以免用户因为应用的卡慢选择了其他产品。
4. 各种基础网络运营商网络环境不同
国内大大小小的宽带运营商有数十家,有的能够给用户提供优质的网络,有的无法提供优质的网络。如果不提供更好的网络,用户可能无法很好的使用我们的产品。
一个好的网络能够为我们带来什么样的好处
网页加载的大部分时间花在网络加载和渲染上。一个好的网络,可以让你的网站无须优化就达到秒开。而一个好的渲染模式,更是可以让你的网站在秒开的基础上,变的更快。
为什么不提升主机的带宽?
不选择提升主机带宽的最大的原因还是目前国内主机带宽的成本较高。2M以内 20元/月,3-5M 25元/月,6-10M 90元/月,随着带宽不断提升,单价也在不断提升。如果从带宽的角度来提升的话,我们的成本将会非常高。
什么是内容分发网络
内容分发网络(CDN)可以借助其海量的节点,帮助我们将文件缓存到其各个节点,来让我们的文件加载速度更快。
其关键就在于借助智能分发,将用户引导到最近的节点去访问文件,用户访问最近的节点,肯定要比回到我们自己的服务器的速度要快一些。
除此之外,内容分发网络的节点大多是带宽较大、响应较快的节点,能够让用户更好更快的加载出需要的文件。
内容分发网络的工作原理
内容分发网络的原理就是将我们的文件都缓存到各个节点,用户通过智能分发,导流到距离最近的节点。同时由于文件被缓存到了节点上,同样的内容,在同一个节点,只会回源一次。即使用户多次访问了同一个文件,也是只回源一次。
加入内容分发网络后的架构
在加入内容分发网络后。用户就不再直接访问云主机了。而是访问距离自己最近的一个内容分发网络节点。其对应的请求的流程如下:
- 用户在DNS的作用下,直接访问最近的节点。
- 如果请求的文件不存在,节点就向云主机(源站)发送请求,获取文件内容,并返回给用户。
- 如果请求的文件存在(重复访问),节点就直接将文件返回给用户。
从右侧的架构图我们可以看到。原本的三个请求,经过CDN 的缓存,可能只有一个请求需要返回源站。这样就大大的降低了我们的云主机的访问压力。
新的架构为我们带来了什么?
- 用户的高速访问(用户访问距离自己最近的节点)
- 云主机带宽占用的下降(大量请求被节点承载,不再回源)
- 网站对不同网络环境的高度适应(内容分发网络的节点较多,可以覆盖绝大多数运营商)
- Javascript跨域后台设置拦截
- 奇怪的登录问题及解决 (75天)
- Optional乱用Empty之No value present
- Java中ArrayList remove会遇到的坑
- Dagger2 入门解析
- Git 工作流的正确打开方式
- 如何从两个List中筛选出相同的值
- 【Windows编程】系列第八篇:创建通用对话框
- 使用dropwizard(3)-加入DI-dagger2
- 巧用shell生成数据库检查脚本 (74天)
- 【专业技术】OPENGL与EGL
- 在dropwizard中使用feign,使用hystrix
- 用python抓取淘宝评论
- 使用Dropwizard(2)-配置分类ConfiguredBundle
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ArrayList源码学习
- Java程序员不缺对象,缺的是对象存储
- StringBuffer StringBulider String的区别
- 求X值问题
- python-剑指offer21-40
- Java8实战--引入流
- ThingJS数据对接方法介绍——Ajax
- python-剑指offer41-62
- 【python-opencv】读取、显示、写入图像
- WSL——windows上的linux子系统
- 【python-opencv】读取、显示、保存视频
- 超级账本——Hyperledger Fabric
- 【python-opencv】绘图(目标检测框及其置信度等)
- 哈希表:哈希值太大了,还是得用set
- 哈希表:今天你快乐了么?