返回数据过程:数据库→缓存服务器→业务服务器→web服务器→客户端
大多数数据需要走这两个过程,就拿王二麻子这个人查自己的英语四级成绩来举个例子:
作图不是很擅长,还望理解,过程就是这么个过程,虽然看起来跑来跑去很麻烦,但其实计算机分分钟能处理千万个王二麻子。
1.客户端
web开发目前主要的客户端类型有IOS、Android、PC(电脑)和移动(手机等)四种客户端,这个就不多讲了,通常意义上,每一个用户的界面就是客户端了,用来呈现图片、文字、视频等数据给用户查看。
2.web服务器
web服务器的主要功能有2个:负载均衡和静态资源服务器。
(1)负载均衡
什么叫负载均衡?我们先来看一张图:
这是最简单的一个服务器架构了,它没有web服务器,就只有客户端、业务服务器、数据库组成,在数据量较小的情况下,它是可以正常运行的。
假如一个业务服务器能支持5000个客户端访问,只要不超过5000台设备访问都是OK的,但如果超出了5000个客户端访问呢?
那就只剩下2个方法:
一是通过换开发语言来重构业务服务器以达到提升它的性能,这涉及开发语言的性能,后面我们再讲。
.
二是增加业务服务器的数量来保证大量用户端的正常访问,增加负载能力,这也是较为常用的方法。
那么问题来了,增加业务服务器的数量,但它们“长得”都差不多,客户端就很郁闷,我该访问哪个服务器?
所以需要一个web服务器来统筹分配,分配客户端应该访问哪个业务服务器,合理分配资源,避免导致客户端统一访问某个业务服务器而造成负载超核,这就是web服务器的负载均衡作用。
(2)静态资源服务器
不是所有的数据请求都要访问数据库。前面我们所说的从客户端一步一步跑到数据库来进行数据的请求和返回数据动态请求,而有些数据存储在web服务器上的,不需要访问数据库就能获取数据到用户端,称为静态请求。
比如某些网页不常变化的一些文字、图片、视频等,基本就固定在某个地方做展示,开发员不调整就不会更新的那种,静静地待在那里,谁进入页面就显示出来,这些数据放在web服务器上而没有存在数据库,便于更快地展现给客户端。
3.业务服务器
业务服务器的主要功能是:接受数据、处理(查询、写入)数据、返回数据三方面。
(1)协议
目前服务器对数据的传输和处理主要遵循两种协议:http/https和socket请求。http协议属于应用层,socket就比较原生了,就是所谓的TCP/IP层,属于网络层。这两个就不细讲了,往这方面发展都会学的。
(2)开发语言
服务器的开发语言算是百家争鸣了,你可以用C、C++、Java、PHP、Python、Ruby等语言来开发,但是从性能、性价比方面还是有区别的。
目前在做服务器比较多的语言还是Java和PHP,为什么呢?
第一,PHP相对比较简单,比较容易入门这功能;第二,java可以大规模的团队协作开发,封装成模块,代码可复用。
但现在还存在这么一种趋势:用C/C++和Python来做服务器开发的公司越来越多了,为什么呢?
因为很多服务器开发的时期是很久以前了,十年或十几年前了,那时候企业为了快速地攻城略池,先把业务跑起来,选用了开发周期短的语言来做服务器,虽然负载有限,但可以用硬件来补足,但随着手机和电脑的数量越来越多,客户端数量上升,如果还是用硬件来补足服务器的负载性能,将会面临很多问题。
比如说其中的电费问题,阿里就遇到过,机器得一直开着,随着阿里的业务量越来越大,硬件每天消耗的电费开销是个头疼的问题,日以继夜地烧下去只会是烧钱,光是电费开销就占到了公司年开销的10~30%,那怎么办?那就只能从服务器的开发入手,选用性能更高的语言来重构服务器,性能提高,有的服务器重构之后性能,单台性能可以提升10倍。
所以C/C++这种机器语言就成为了有实力的企业开发服务器首选,所以说C/C++永不过时。
对于中小型企业来讲,开发服务器不建议用C/C++,虽然它们的性能高,但开发起来难度大,而且市面上真正懂C/C++的程序员比较少,所以支付的工资自然也就高了。可以选用脚本语言来开发,让业务先跑起来,等到了瓶颈时,相信公司也有了稳定的资金支持了,这个时候再重构服务器更合适。
我个人比较推崇用Python来做中小企业的服务器开发,为什么不是其他的语言呢?
首先Python是一门面向对象的脚本语言,代码量少,语法简洁,逻辑清晰,从的代码优美程度和团队协作开发上来讲,PHP不如Python;Java虽然好,但是比较重,比如干一件事情C语言需要100行代码,那么Java差不多就是50行左右,而Python只需要10行。
我个人不推荐用Ruby来做服务器。
一是因为Ruby是日本人做的东西,个人的爱国情怀,别杠,杠就是你赢。
二是Ruby是一种魔幻语言,什么意思呢?也就是你写了一个符号或者写了一个指令,他背后给你干了很多事儿,你看不到这个东西的底层,逻辑上不清晰,随便写,也就是说你按照它的一些特殊的符号,它会给你带来很多事儿。这种魔幻性语言他们不适合团队开发,团队开发的话,大家水平参差不齐,有的人掌握了更多的魔幻语法,有的人不掌握,不适合团队开发。
最后
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容
uZVssIB-1714732785021)]
[外链图片转存中…(img-qoL9JVNB-1714732785022)]
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容