web中B/S网络架构

1:web中B/S网络架构

2:CDN工作机制和架构

3:负载均衡;

   B/S分别是浏览器/服务器,架构流程为;
    当你访问网站的时候,浏览器发送各种请求给浏览器,服务器返回各种默认资源给用户;
    这当中涉及好多的东西,怕是全讲出来会有被打
    1:域名到ip地址的映射;浏览器发送请求,然后DNS域名服务解析你访问的一个网站域名,例如将我的博客域名解析成ip地址;
    2:负载均衡LB设备选择服务器处理请求;服务器不止一台,需要哪台服务器去解决,就需要负载均衡设备LB确定哪台来处理你的请求;
    3:到数据库,    文件系统,分布式缓存系统取数据;请求可能需要一些数据,文件,这些信息服务器没有,服务器需要去别的地方找,别的地方有三个:数据库,    文件系统,分布式缓存系统;
    4:CDN处理一些静态资源请求;有时候,还需要加载个图片,需要加载渲染的样式css/js什么的,就需要向CDN服务器请求;
 
 其中1涉及的DNS域名解析细致包含十个步骤:
1:浏览器检查浏览器缓存,有的话直接解析;
2:没有就检查操作系统缓存host文件;(去年十二月之前可以更改本机中的缓存host文件,让其解析到外网,实现FQ,现在不行了,当然我不提倡这种做法,这样不安全,例如域名挟持,当你让你访问b站总是跳转到某宝或者某东的付款页面什么的)
3:还没有就去检查本地的DNS服务器查找,LDNS一般是在本地的电信移动或者自己学校,不会很远;
4:还没有就去根域名服务器Root Server请求了,全球只有十三台的;位于美国的;
5:根域名Root Server返回给本地域名服务器LDNS一个查到的国际顶级域名服务器gTLD Server,
6:LDNS向得到的gTLD请求,
7:gTLD查到域名对应的Name Server服务商,电信移动等,域名让Name Server完成;
8:  Name Server查询储存的域名和ip对应关系,包含其TTL一块返回给DNS Server, ;
9:lDNS接收并缓存对应关系,缓存时间是TTL;
10:LDNS最终返回给用户解析结果;
电脑上可以敲一下:win+R,输入cmd
跟踪解析:
nslookup   域名
清除缓存:
ipconfig/flushdns
域名解析方式有五种:域名解析记录主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录。
A记录: 
A代表的是Address,用来指定域名对应的IP地址,如将item.taobao.com指定到115.238.23.241,将switch.taobao.com指定到121.14.24.241。A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址。
MX记录: 
表示的是Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server,如taobao.com域名的A记录IP地址是115.238.25.245,如果MX记录设置为115.238.25.246,是xxx@taobao.com的邮件路由,DNS会将邮件发送到115.238.25.246所在的服务器,而正常通过Web请求的话仍然解析到A记录的IP地址。
CNAME记录: 
全称是Canonical Name(别名解析)。所谓的别名解析就是可以为一个域名设置一个或者多个别名。如将taobao.com解析到chaojijuhui.com,将srcfan.com也解析到chaojijuhui.com。其中chaojijuhui.com分别是taobao.comsrcfan.com的别名。前面的跟踪域名解析中的”www.taobao.com. 1542 IN CNAME www.gslb.taobao.com”就是CNAME解析。
NS记录: 
为某个域名指定DNS解析服务器,也就是这个域名有指定的IP地址的DNS服务器去解析,前面的”gslb.taobao.com. 86400 IN NS gslbns2.taobao. com.”就是NS解析。
TXT记录: 
为某个主机名或域名设置说明,如可以为taobao.com设置TXT记录为”nupt想象之中”这样的说明。
    
其中涉及的东西不变的是url,全部基于http传输协议,ip是网络动态分的,你开个飞行模式再关闭就改变了的;
 
 
第二步中涉及的负载均衡设备LB选择服务器的方式主要分为三种:
链路负载,操作系统负载,集群负载
链路负载:DNS解析成不同的ip,访问的不同的服务器;
操作系统负载:利用操作系统级别的软中断,硬中断,达到负载均衡;(不懂)
集群负载:硬负载F5和软负载LVS+Nginx等包含太多运维和架构知识了,https的普及导致架构修改好多,贴个历史演进;http://www.cnblogs.com/mindwind/p/5339657.html
 
第三部文件读写最最最关键,写不完的,写不完的,到数据库,    文件系统,分布式缓存系统取数据,互联网信息传输瓶颈就是这个;
 
第四步中CDN处理静态资源主要涉及
CDN工作机制和架构
CDN内容分布网络流量分配网络,比镜像智能,相当于 镜像+缓存+整体负载均衡GSLB,工作机制如下:
1:重复上面说的dns解析步骤就不说了,不过这次是为了解析到距离公司最近CDN节点的ip地址;
2:其中涉及公司自己的DNS会将CNAME解析到另外一个域名来指向CDN全局DNS服务器GTM,GTM来确定位置并返回最近的CDN节点 
3:拿到最近CDN节点的ip地址后,就直接访问静态文件,如果最近CDN还没有,CDN再去源站取文件
 
 
 

复杂的web---web中B/S网络架构的更多相关文章

  1. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  2. 高访问量WEB开发中的架构模式,学习从点滴开始

     当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构 ...

  3. HTTP学习二:Web应用中的HTTP

    1 HTTP连接 1.1 TCP连接对性能的影响 TCP三次握手如下图: 如上图,建立一次TCP连接要经过三个步骤.HTTP是建立在TCP之上的,因此TCP连接的性能直接影响HTTP的性能. TCP影 ...

  4. WEB开发中的字符集和编码

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. Web Service 中返回DataSet结果大小改进

    http://www.cnblogs.com/scottckt/archive/2012/11/10/2764496.html Web Service 中返回DataSet结果方法: 1)直接返回Da ...

  6. Web标准中用于改善Web应用程序性能的各种方法总结

    提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...

  7. 移动Web 开发中的一些前端知识收集汇总

    在开发DeveMobile 与EaseMobile 主题 的时候积累了一些移动Web 开发的前端知识,本着记录总结的目的,特写这篇文章备忘一下. 要说移动Web 开发与传统的PC 端开发,感觉也没什么 ...

  8. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  9. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

随机推荐

  1. 基于Alpha-Beta剪枝的欢乐斗地主残局辅助

    2019年4月17日更新: 将搜索主函数优化为局部记忆化搜索,再次提高若干倍搜索速度 更新了main和player,helper无更新 #include "Player-v3.0.cpp&q ...

  2. HP服务器设置iLO

    HP服务器设置iLO步凑 1.开机出现界面—按下F11进入Boot Menu: 2.选择Generic USB Boot回车: 3.选择System Configuration回车: 4.选择iLO ...

  3. mysql 开发基础系列21 事务控制和锁定语句(下)

    1.  隐含的执行unlock tables 如果在锁表期间,用start transaction命令来开始一个新事务,会造成一个隐含的unlock tables 被执行,如下所示: 会话1 会话2 ...

  4. 绑定Github上的个人博客到Godaddy域名

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  5. Elasticsearch实践(四):IK分词

    环境:Elasticsearch 6.2.4 + Kibana 6.2.4 + ik 6.2.4 Elasticsearch默认也能对中文进行分词. 我们先来看看自带的中文分词效果: curl -XG ...

  6. ES6躬行记(8)——数字

    一.进制 ES6不仅完善了数字的八进制形式,还补充了一种十六进制形式,并且添加了全新的二进制形式.下面的三个变量分别表示八进制.十六进制和二进制的10,注释中给出了该进制的另一种写法. var oct ...

  7. Go语言学习笔记(四) [array、slice、map]

    日期:2014年7月22日   一.array[数组]   1.定义:array 由 [n]<type> 定义,n 标示 array 的长度,而 <type> 标示希望存储的内 ...

  8. [转]Laravel 数据库实例教程 —— 使用查询构建器实现对数据库的高级查询

    本文转自:https://laravelacademy.org/post/920.html 上一节我们简单介绍了如何使用查询构建器对数据库进行基本的增删改查操作,这一节我们来探讨如何使用查询构建器实现 ...

  9. C# WPF 获取窗体和控件的句柄

    窗体: IntPtr hwnd = new WindowInteropHelper(this).Handle; 控件: IntPtr hwnd = ((HwndSource)PresentationS ...

  10. element-ui el-input只显示下划线

    只需要增加样式 .el-input__inner { width: 220px; border-top-width: 0px; border-left-width: 0px; border-right ...