简述Web 服务器架构。

简述Web 服务器架构。,第1张

用户使用通用的Web浏览器,通过接入网络(网站的接入则是互联网)连接到Web服务器上。用户发出请求,服务器根据请求的URL的地址连接,找到对应的网页文件,发送给用户,两者对话的“官方语言”是>最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易出问题,于是进入了第一步演变阶段:将应用和数据库从物理上分离,变成了两台机器,这个时候技术上没有什么新的要求,但你发现确实起到效果了,系统又恢复到以前的响应速度了,并且支撑住了更高的流量,并且不会因为数据库和应用形成互相的影响。
这一步架构演变对技术上的知识体系基本没有要求。
架构演变第二步:增加页面缓存
好景不长,随着访问的人越来越多,你发现响应速度又开始变慢了,查找原因,发现是访问数据库的 *** 作太多,导致数据连接竞争激烈,所以响应变慢,但数据库连接又不能开太多,否则数据库机器压力会很高,因此考虑采用缓存机制来减少数据库连接资源的竞争和对数据库读的压力,这个时候首先也许会选择采用squid 等类似的机制来将系统中相对静态的页面(例如一两天才会有更新的页面)进行缓存(当然,也可以采用将页面静态化的方案),这样程序上可以不做修改,就能够很好的减少对webserver的压力以及减少数据库连接资源的竞争,OK,于是开始采用squid来做相对静态的页面的缓存。
前端页面缓存技术,例如squid,如想用好的话还得深入掌握下squid的实现方式以及缓存的失效算法等。
架构演变第三步:增加页面片段缓存
增加了squid做缓存后,整体系统的速度确实是提升了,webserver的压力也开始下降了,但随着访问量的增加,发现系统又开始变的有些慢了,在尝到了squid之类的动态缓存带来的好处后,开始想能不能让现在那些动态页面里相对静态的部分也缓存起来呢,因此考虑采用类似ESI之类的页面片段缓存策略,OK,于是开始采用ESI来做动态页面中相对静态的片段部分的缓存。
这一步涉及到了这些知识体系:
页面片段缓存技术,例如ESI等,想用好的话同样需要掌握ESI的实现方式等;
架构演变第四步:数据缓存
在采用ESI之类的技术再次提高了系统的缓存效果后,系统的压力确实进一步降低了,但同样,随着访问量的增加,系统还是开始变慢,经过查找,可能会发现系统中存在一些重复获取数据信息的地方,像获取用户信息等,这个时候开始考虑是不是可以将这些数据信息也缓存起来呢,于是将这些数据缓存到本地内存,改变完毕后,完全符合预期,系统的响应速度又恢复了,数据库的压力也再度降低了不少。

这一步涉及到了这些知识体系:
缓存技术,包括像Map数据结构、缓存算法、所选用的框架本身的实现机制等。
架构演变第五步: 增加webserver
好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver,这也是为了同时解决可用性的问题,避免单台的webserver down机的话就没法使用了,在做了这些考虑后,决定增加一台webserver,增加一台webserver时,会碰到一些问题,典型的有:
1、如何让访问分配到这两台机器上,这个时候通常会考虑的方案是Apache自带的负载均衡方案,或LVS这类的软件负载均衡方案;
2、如何保持状态信息的同步,例如用户session等,这个时候会考虑的方案有写入数据库、写入存储、cookie或同步session信息等机制等;
3、如何保持数据缓存信息的同步,例如之前缓存的用户数据等,这个时候通常会考虑的机制有缓存同步或分布式缓存;
4、如何让上传文件这些类似的功能继续正常,这个时候通常会考虑的机制是使用共享文件系统或存储等;
在解决了这些问题后,终于是把webserver增加为了两台,系统终于是又恢复到了以往的速度。
这一步涉及到了这些知识体系:
负载均衡技术(包括但不限于硬件负载均衡、软件负载均衡、负载算法、linux转发协议、所选用的技术的实现细节等)、主备技术(包括但不限于 ARP欺骗、linux heart-beat等)、状态信息或缓存同步技术(包括但不限于Cookie技术、UDP协议、状态信息广播、所选用的缓存同步技术的实现细节等)、共享文件技术(包括但不限于NFS等)、存储技术(包括但不限于存储设备等)。
架构演变第六步:分库
享受了一段时间的系统访问量高速增长的幸福后,发现系统又开始变慢了,这次又是什么状况呢,经过查找,发现数据库写入、更新的这些 *** 作的部分数据库连接的资源竞争非常激烈,导致了系统变慢,这下怎么办呢,此时可选的方案有数据库集群和分库策略,集群方面像有些数据库支持的并不是很好,因此分库会成为比较普遍的策略,分库也就意味着要对原有程序进行修改,一通修改实现分库后,不错,目标达到了,系统恢复甚至速度比以前还快了。
这一步涉及到了这些知识体系:
这一步更多的是需要从业务上做合理的划分,以实现分库,具体技术细节上没有其他的要求;
但同时随着数据量的增大和分库的进行,在数据库的设计、调优以及维护上需要做的更好,因此对这些方面的技术还是提出了很高的要求的。
架构演变第七步:分表、DAL和分布式缓存
随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作,当然,这不可避免的会需要对程序进行一些修改,也许在这个时候就会发现应用自己要关心分库分表的规则等,还是有些复杂的,于是萌生能否增加一个通用的框架来实现分库分表的数据访问,这个在ebay的架构中对应的就是DAL,这个演变的过程相对而言需要花费较长的时间,当然,也有可能这个通用的框架会等到分表做完后才开始做,同时,在这个阶段可能会发现之前的缓存同步方案出现问题,因为数据量太大,导致现在不太可能将缓存存在本地,然后同步的方式,需要采用分布式缓存方案了,于是,又是一通考察和折磨,终于是将大量的数据缓存转移到分布式缓存上了。
这一步涉及到了这些知识体系:
分表更多的同样是业务上的划分,技术上涉及到的会有动态hash算法、consistent hash算法等;
DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库 *** 作的控制(超时、异常)、分库分表规则的封装等;
架构演变第八步:增加更多的webserver
在做完分库分表这些工作后,数据库上的压力已经降到比较低了,又开始过着每天看着访问量暴增的幸福生活了,突然有一天,发现系统的访问又开始有变慢的趋势了,这个时候首先查看数据库,压力一切正常,之后查看webserver,发现apache阻塞了很多的请求,而应用服务器对每个请求也是比较快的,看来是请求数太高导致需要排队等待,响应速度变慢,这还好办,一般来说,这个时候也会有些钱了,于是添加一些webserver服务器,在这个添加 webserver服务器的过程,有可能会出现几种挑战:
1、Apache的软负载或LVS软负载等无法承担巨大的web访问量(请求连接数、网络流量等)的调度了,这个时候如果经费允许的话,会采取的方案是购买硬件负载,例如F5、Netsclar、Athelon之类的,如经费不允许的话,会采取的方案是将应用从逻辑上做一定的分类,然后分散到不同的软负载集群中;
2、原有的一些状态信息同步、文件共享等方案可能会出现瓶颈,需要进行改进,也许这个时候会根据情况编写符合网站业务需求的分布式文件系统等;
在做完这些工作后,开始进入一个看似完美的无限伸缩的时代,当网站流量增加时,应对的解决方案就是不断的添加webserver。
这一步涉及到了这些知识体系:
到了这一步,随着机器数的不断增长、数据量的不断增长和对系统可用性的要求越来越高,这个时候要求对所采用的技术都要有更为深入的理解,并需要根据网站的需求来做更加定制性质的产品。
架构演变第九步:数据读写分离和廉价存储方案
突然有一天,发现这个完美的时代也要结束了,数据库的噩梦又一次出现在眼前了,由于添加的webserver太多了,导致数据库连接的资源还是不够用,而这个时候又已经分库分表了,开始分析数据库的压力状况,可能会发现数据库的读写比很高,这个时候通常会想到数据读写分离的方案,当然,这个方案要实现并不容易,另外,可能会发现一些数据存储在数据库上有些浪费,或者说过于占用数据库资源,因此在这个阶段可能会形成的架构演变是实现数据读写分离,同时编写一些更为廉价的存储方案,例如BigTable这种。

这一步涉及到了这些知识体系:
数据读写分离要求对数据库的复制、standby等策略有深入的掌握和理解,同时会要求具备自行实现的技术;
廉价存储方案要求对OS的文件存储有深入的掌握和理解,同时要求对采用的语言在文件这块的实现有深入的掌握。
架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代
经过上面这个漫长而痛苦的过程,终于是再度迎来了完美的时代,不断的增加webserver就可以支撑越来越高的访问量了,对于大型网站而言,人气的重要毋庸置疑,随着人气的越来越高,各种各样的功能需求也开始爆发性的增长,这个时候突然发现,原来部署在webserver上的那个web应用已经非常庞大了,当多个团队都开始对其进行改动时,可真是相当的不方便,复用性也相当糟糕,基本是每个团队都做了或多或少重复的事情,而且部署和维护也是相当的麻烦,因为庞大的应用包在N台机器上复制、启动都需要耗费不少的时间,出问题的时候也不是很好查,另外一个更糟糕的状况是很有可能会出现某个应用上的bug就导致了全站都不可用,还有其他的像调优不好 *** 作(因为机器上部署的应用什么都要做,根本就无法进行针对性的调优)等因素,根据这样的分析,开始痛下决心,将系统根据职责进行拆分,于是一个大型的分布式应用就诞生了,通常,这个步骤需要耗费相当长的时间,因为会碰到很多的挑战:
1、拆成分布式后需要提供一个高性能、稳定的通信框架,并且需要支持多种不同的通信和远程调用方式;
2、将一个庞大的应用拆分需要耗费很长的时间,需要进行业务的整理和系统依赖关系的控制等;
3、如何运维(依赖管理、运行状况管理、错误追踪、调优、监控和报警等)好这个庞大的分布式应用。
经过这一步,差不多系统的架构进入相对稳定的阶段,同时也能开始采用大量的廉价机器来支撑着巨大的访问量和数据量,结合这套架构以及这么多次演变过程吸取的经验来采用其他各种各样的方法来支撑着越来越高的访问量。
这一步涉及到了这些知识体系:
这一步涉及的知识体系非常的多,要求对通信、远程调用、消息机制等有深入的理解和掌握,要求的都是从理论、硬件级、 *** 作系统级以及所采用的语言的实现都有清楚的理解。
运维这块涉及的知识体系也非常的多,多数情况下需要掌握分布式并行计算、报表、监控技术以及规则策略等等。
说起来确实不怎么费力,整个网站架构的经典演变过程都和上面比较的类似,当然,每步采取的方案,演变的步骤有可能有不同,另外,由于网站的业务不同,会有不同的专业技术的需求,这篇blog更多的是从架构的角度来讲解演变的过程,当然,其中还有很多的技术也未在此提及,像数据库集群、数据挖掘、搜索等,但在真实的演变过程中还会借助像提升硬件配置、网络环境、改造 *** 作系统、CDN镜像等来支撑更大的流量,因此在真实的发展过程中还会有很多的不同,另外一个大型网站要做到的远远不仅仅上面这些,还有像安全、运维、运营、服务、存储等,要做好一个大型的网站真的很不容易

服务器分塔式、机架式和刀片式这三种结构来划分服务器,服务器的外形为什么会有这样的划分呢?主要原因就是具体的应用环境不同,塔式服务器长得跟我们平时用的台式机一样,占用空间比较大,一般是一些小型企业自己使用自己维护;而机架式服务器长得就像卧着的台式机,可以一台一台的放到固定机架上,因此而得名,它可以拿去专业的服务器托管提供商那里进行托管,这样每年只需支付一定的托管费,就免去了自己管理服务器的诸多不便;而刀片服务器是近几年才比较流行的一种服务器架构,它非常薄,可以一片一片的叠放在机柜上,通过群集技术进行协同运算,能够处理大量的任务,特别适合分布式服务,如作为WEB服务器。

本文对于LwM2M架构OMA-AD-LightweightM2M-V1_0-20170208-A进行说明, 多谢!

1 范围

本文档包含OMA DM轻量级M2M enabler的体系结构图,协议端点描述,接口定义和详细描述。 该体系结构图显示了此enabler中的客户端和服务器组件以及这两个组件之间的接口。 此外,它给出了这些接口功能的简短描述。 为了帮助人们全面了解架构,附录B中介绍了一些详细信息。

2 参考文献

21 规范性参考文献

[LwM2M-RD]    “Lightweight Machine to Machine Requirements”, Open Mobile Alliance™, OMA-RD-LightweightM2M-V1_0, URL:>港澳台DNS服务器地址
香港:
205252144228
2081516965
202181202140
2021812242
澳门:
20217538
20217533
台湾:
168951921
1689511
国外DNS服务器地址
美国:
20867222222
20867220220
1658713129
16587201244
205171365
205171265
1984104
1984104
198326412
19233412
19220323010
19255241
192112364
1923614817
1925812830
192993
193014129
12890107
12881090
6633206206
2089610221
6633216216
205171365
205171265
1658713129
16587201244
加拿大:
20916616036
209166160132
英国:
193014129
日本
202122733
20221622818
韩国:
16412410131
20324824031
1681266360
1681266361
新西兰:
202271843
泰国:
209166160132
20244834
2024482
印度:
202138103100
202138962
国内各省市DNS服务器地址
北京:
20296199133
202960133
202106020
2021061481
2029716195
202138962
深圳:
20296134133
2029615415
广州:
6114456100
6114456101
广东:
2029612886
20296128143
上海:
20296199132
20296199133
202962095
20296209133
天津:
202999668
2029910468
广西:
2029612868
20210322468
20210322568
河南:
20210222768
20210224512
20210222468
河北:
2029916068
福建:
2021019854
2021019855
厦门:
20210110355
20210110354
湖南:
202103068
2021039668
20210396112
湖北:
202103068
2021030117
2021032468
江苏:
20210215162
202102293
20210213141
2021022435
浙江:
202961023
202969668
2029610418
陕西:
2021001311
202100416
202100415
202100068
山东:
2021021543
2021021523
20210212868
20210213468
山西:
2029919268
202991986
四川:
202989668
61139269
重庆:
6112812868
成都:
202989668
202989669
辽宁:
20298068
202967568
202967564
202966938
202968618
202968624
安徽:
20210219268
20210219968
1089645
吉林:
20298568
202981418
202981419
江西:
20210122468
2021091292
20210124036
新疆:
611289774
611289773
贵州:
2029819268
10157215
云南:
202989668
2029816068
黑龙江:
20297229133
2029722468
21915032132
海南:
20210019268
2021001998
宁夏:
202100068
2021009668
甘肃:
2021007213
内蒙古:
2029922468
青海:
20210012868
全球路由DNS服务器
全球只有13台路由DNS根服务器,在13台路由服务器中,名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。下表是这些机器的管理单位、设置地点及最新的IP地址。
名称管理单位及设置地点IP地址
A INTERNICNET(美国,弗吉尼亚州) 1984104
B 美国信息科学研究所(美国,加利弗尼亚州) 12890107
C PSINet公司(美国,弗吉尼亚州) 19233412
D 马里兰大学(美国马里兰州) 12881090
E 美国航空航天管理局[NASA](美国加利弗尼亚州) 19220323010
F 因特网软件联盟(美国加利弗尼亚州) 19255241
G 美国国防部网络信息中心(美国弗吉尼亚州) 192112364
H 美国陆军研究所(美国马里兰州) 12863253
I Autonomica公司(瑞典,斯德哥尔摩) 1923614817
J VeriSign公司(美国,弗吉尼亚州) 1925812830
K RIPE NCC(英国,伦敦) 193014129
L IANA (美国,弗吉尼亚州) 198326412
打开CSDN APP,看更多技术内容
Swoole系列26Redis 服务器_码农老张Zy的博客
服务端的意思是一个可以提供服务的应用,redis-server 才是我们最熟悉的那个 Redis 的服务端。 那么在Swoole中,这个 Redis 服务端是个什么东西呢其实它是一个基于 Redis 协议的服务器程序,可以让我们使用 Redis 的客户端来连接这个服务
继续访问
内网服务器,同时内网用户实现通过公网地址访问内外那个服务器
在实际应用中,路由器作为联网设备,wan口接运营商(唯一一个公网地址),内网口(作为网关)接内网,内部有一台服务器,面向所有用户。内网IP地址19216821(g0/0/2), 外网IP地址:2191468442(g0/0/1),服务器ip192168212 (2)客
继续访问
国内外DNS大全
你还在为上网找不到dns而发愁吗? 港澳台DNS服务器地址 香港:20525214422820815169652021812021402021812242 澳门:2021753820217533 台湾:1689519211689511 国外DNS服务器地址 美国: 
继续访问
免费公共DNS服务器IP地址大全
国内常用公共DNS 114 DNS: (114114114114;114114115115) 114DNS安全版(114114114119;114114115119) 114DNS家庭版(114114114110;114114115110) 阿里 AliDNS: (223555;223666) 百度 BaiduDNS(新增ipv6地址
继续访问
网络显示服务器,服务器网络-什么是网络中所说的服务器
“床”就是保证你和老婆所有程序都能正常运行的服务器。 当然极个别情况除外 去网络手册中查即可知道答案! 服务器干什么用的 从广义上讲,服务器是指网络中能对其它机器提供某些服务的计算机系统(如果一个PC对外提供ftp服务,也可以叫服
继续访问
rp魔兽那个服务器人最多,《魔兽世界》怀旧服RP服务器介绍 什么是
在这里,有着绅士的圣骑士,阴冷孤僻的盗贼,粗狂豪迈的战士,平衡自然的德鲁伊。当然,这一切都不是必须的,因为在RP服务器中最重要的是你对角色的理解,以及你的扮演。即使是在阴暗处活动的盗贼也可以表现的像一个优雅的绅士,只要你能够自
继续访问
网易dns劫持检测,dns被劫持检测方法有哪些?
1、遇到这种情况,首先是先看看其它人的电脑或手机等设备连接网络是否正常,是 2、电脑重启后还不行,可以尝试将自己的DNS地址固定为一些免费的、速度比较快的 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取 2、IIS7网站监控可以及时防控网站风险,快速准确监控网站是否遭到各种劫持攻击,网站在全国是否能正常打开(查看域名是否被墙),精准的DNS污染检测,具备网站打开速度检测功能,第
继续访问
各地的ADSL MODEM VPI、VCI 和DNS的信息
广西 0 35 dns 20210322468 北京 0 35 DNS 202106196115 广东中山 0 35 DNS : 2029612868 湖南 0 35,DNS:2119824 福建,0 200 ,DNS:2021019855和2021019854 云南 0 35 dns:61166150101 广东湛江 0 80 浙江杭州 8/35  0/
继续访问
web服务器基于那个协议,基于>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13515028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-23
下一篇 2023-08-23

发表评论

登录后才能评论

评论列表(0条)

保存