一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
什么是服务器
生活中的服务器
如果我们接触到了软件这个行业,我们经常会听到类似的话语。
“ 浏览器向服务器发起请求,拿到一个 html 文件。”
“将打包完的代码部署到服务器上。”
作为普通用户来说,服务器服务器,顾名思义,它的作用就是当我们通过客户端(手机,电脑,客户使用的终端即可称作客户端)发起请求,然后服务器给我们提供 服务 ,最常用的服务是拿到我们想要的数据。
比如我想访问一个网站,那么我就对服务器发起了访问网站的请求,服务器就把这个网站的内容返回给我。诸如此类,搜索、发布文章,都是跟服务器拿到想要的东西。
作为开发人员来说,我们经常会说,打包部署到服务器上。
那么打包部署到服务器上之后,发生了什么呢?就是所有人,都可以访问到你部署到服务器上的东西。当然哈,并不是所有能访问的数据都是手动的,这里面有一个自动化的过程。比如发布文章,然后存到服务器的数据库上,然后被用户访问。那么这个事我们只需要通过代码控制流程,保证数据进入服务器即可。
那么目前为止,我们可以对服务器建立起一个简单的概念流程。
(手动/自动)发布内容到服务器 -> 客户在客户端访问浏览器获取数据。
虽然这个概念看起来很简单,但是正是这个简单的概念,建立起了互联网世界。互联,相互连接,我们在服务器这样一个中间平台上,交流信息和经验,足不出户即可获得我们想要的知识、和不同国家、不同年龄的人进行交流,正如教科书上曾经提到的一个概念,互联网将世界变成了 地球村。
服务器的真身
我们先来看百度百科中关于服务器的介绍:
服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。
服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。
服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。
看的很迷糊不要紧,让我们先用大白话翻译一下。
服务器是什么,服务器的真身,其实就是一台电脑(计算机)。你可能会有疑问,我,作为一个客户,我用电脑去搜索知识,电脑不是算作客户端吗?
电脑就是计算机,计算机是更加准确的叫法,功能性命名,即它发明出来主要是为了计算的。电脑是通用叫法,因为觉得它插上电以后,能够像人脑一样计算东西,所以叫电脑。
其实,电脑算客户端还是服务端,其实是根据它的用途和服务对象而定的。它本身只是一个工具,就好比一把刀,你用来切菜,就是菜刀,你用来杀猪,它就是杀猪刀。
所以,当你把电脑用来获取知识的时候,它就算是客户端;当你把电脑当作一个公共平台,为其他电脑提供服务的时候,它就是服务器。
你可能要问了,那我的电脑也可以当作服务器,让所有人都能访问到我写的文章吗?
答案当然是可以的。如果把自己的电脑变成一台服务器,这个我们稍后细谈。
到此,我相信,你对 服务器是计算机的一种 这句话已经理解了。
虽然每一台电脑都可以当作服务器,但是,我们作为客户来说,买电脑,主要不是拿来当服务器用的。所以他们的功能侧重点不同。
真正的服务器,第一是要全年无休,要响应快。这很好理解,比如说你打游戏,服务器停了,你不得骂娘?你打一布卡一步,能动的时候发现自己挂了,你不得想卸载这个垃圾游戏?行内用语就叫做影响用户体验,那这肯定是个大问题。【长时间的可靠运行、强大的I/O外部数据吞吐能力、CPU运算能力】
第二就是要负载高。什么是负载?你往货车上装东西,装的多就负载高,装的少就负载低。负载就是容纳量的意思。一个服务器能服务的客户终究是有限的,所以我们肯定希望一个服务器能服务更多客户,所以服务器相比于普通电脑而言,它无论是在硬件上还是软件上,都是朝着负载高去设计的。【负载更高】
那很明显,我们对服务器的要求,是比普通客户用的电脑更高的。一分钱一分货,那自然它价格也就上去了。
所以,你猜我们生活中的服务器长啥样?我就说一种我见过的吧。
看到这张图,你可能会迷惑,咦,不是说,服务器是电脑的一种吗?它的显示屏呢?键盘呢?
昂,因为服务器主要是做数据往来,它把每一步数据的往来像电影那样刷啦啦的展示出来也是没什呢用的,所以它不需要显示屏。
我们往服务器上部署数据,也不是用键盘敲进去的,所以,键盘也不需要。一般以我的开发经验而言,我们部署的时候,是在本地通过一个工具蒋问价传输到服务器上的。
所以它长成这样,它的功能依然是全的,它依然是计算机,只是省略掉了显示和输入设备,不影响它的本质。
服务器的分类
文件服务器 和 数据库服务器
顾名思义,这两种服务器分别用来存文件和数据。这种分发是按照服务器存放的内容来分的。
如果听着很抽象,我们用网盘浅举一个例子。
可以把它看作一个大大的文件服务器,我们往上传文件,然后在任何客户端都可以下载。
而数据服务器呢,它是用来存数据的,它一般是为文件服务器服务的。
举个例子,我们打开聊天软件,会展示一个基本的界面,这个时候呢,一般是从文件服务器拿到一个文件将界面渲染出来。但是现在,我们要查一下我和某人的聊天记录。
然后这个时候,文件服务器接到请求以后,就会跟数据服务器进行连接,来拿到数据。
那为什么要这么分呢?为什么不做的一样呢?
很明显,我们对数据服务器的要求更高,因为数据多,不停的在变更(不停的在聊天),所以读写速度得快,硬件要求高,成本高。而文件服务器内容相对固定、单一,所以它不需要那么高的性能。
如果我们把文件服务器的配置搞得根数据服务器一样,只会让人发出灵魂深处的质问:杀鸡焉用牛刀?
应用服务器和WEB服务器
这种分法是根据服务器的功能来分的。
我来来看关于 web 服务器百度百科的介绍:
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。
从它对于功能的描述来看,我们可以发现,它响应的文件有一个特点:固定的,不变的。
即,无论是谁、无论是什么时候向 web 服务器发起请求,得到的返回文件是一样的。
一般在分前后端的应用软件中,web 服务器往往用来存放前端产生的相关文件,比如,html、js、css 文件、图片等。因为呆在服务器上的是并不需要运行,而是等到浏览器发起请求,获取这些文件,然后再进行解析、运行的。
我们来看应用服务器的简述:
应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样
简而言之,应用服务器就是可以进行计算、进行逻辑处理的服务器。比如,有这么一个网站,它支持我们把上传的图片或者输入的语音文件转化成文字。
那么,识别图片的过程和转化语音的过程就需要大量的计算逻辑。这个时候,浏览器就会向应用服务器发起请求,把图片或者语音发送给应用服务器,然后在被服务器中安装的软件借用,调用某个算法程序得到结果,将最终结果返回回去。
那么,可以这么理解。后端代码,一般部署在应用服务器上。因为它需要在服务器端去做进一步的数据处理。
搭建服务器简述
使用自己的电脑
我已经阐明,自己的电脑可以搭服务器。只要安装服务器软件即可。
如果我们想让其他人访问到我们本地的 html 文件,我们可以搭建一个 web 服务器。
最常用的Web服务器是Apache和Microsoft的Internet信息服务器(Internet Information Services,IIS)。
如果你看过我 webpack 专栏的文章,我有使用过一个 devserver 的插件,搭建了一个 web 服务器。我们也可以用 node 来搭建一个 web 服务器。
具体的搭建方法在此不在累述,对关键词进行搜索,可以得到相关教程。
web 服务器一般是通用的,而应用服务器一般是专用的。如 Tomcat 只处理JAVA应用程序。
例如:java 代码布置到 tomacat 流程如下:
打成war包,把war包放到tomcat里面,然后启动tomcat就会自动解压启动了。服务器中需要集成 JDK 环境,才能保证 java 代码的正常运行。
使用云服务器
如果想让别人持续的访问到你做的东西,在自己的电脑上搭建服务器肯定是不方便的。
我们可以购买云服务器。
就是说,有人一次性购进了大量的服务器,然后租给我们。我们购买了云服务器后,可以在云服务器中部署我们的代码,节省我们购买、维护服务器的精力。
购买云服务器后,可以自己按照教程配置相关环境,也可以直接去云市场用别人打包好的镜像。
具体的搭建方法在此不在累述,对关键词进行搜索,可以得到相关教程。
结语
通过以上说明,我相信你对服务器应该有个大概的了解了。如果对你有帮助,记得给我点个赞~