与技术朋友防尬聊指南之—你们总说的服务器到底是个啥?

服务器
我们每天打开手机和网页,淘宝、百度、微信还有很多app和网站,都能看到精彩纷呈的用户界面。但很少有人知道他们的背后,是被称作后端的技术在进行支撑,包括网络、数据库、响应等等很多方面的内容。

 我们每天打开手机和网页,淘宝、百度、微信还有很多app和网站,都能看到精彩纷呈的用户界面。但很少有人知道他们的背后,是被称作后端的技术在进行支撑,包括网络、数据库、响应等等很多方面的内容。

如果你哪天听到了一堆如API、数据库、Json的词语中已经云里雾里了...那就和我们一起来了解下服务器端的相关知识,看看手机的后面到底藏着何方神圣...

[[203899]]

钻到屏幕后面去

当你用手机点开一个APP,是不是每次用APP都感觉很爽的样子啊?其实我们把app称作是前端,它的主要功能之一是提供流畅舒适的用户体验,但是要实现真正的功能,一个app是不够的。

 

让我们一起来做个试验,比如就拿即时通信app来说吧,你给我的手机发了一条信息但是我关机了,发完后你关上手机我打开手机却发现能收到你的信息。这不仅仅是app能够做到的,在你我手机之间一定还有其他的东西在默默的奉献着。

这就是后端,服务器!

简单来说,服务器就是一台一只联网并运行着服务程序(支持各种app、网页、API)的电脑。

服务器有两大功能:

  • 存储数据
  • 促进(便捷)通信

那么刚刚的例子里,你的app其实是将信息发送给了服务器,服务器发现我的手机没有开机(不在线)就将信息暂存(也许是***)下来。当服务器监测到我的手机打开app上线的时候,就会将这段时间的信息都发到我的app上来,这样就不会漏接信息啦。

可以说服务器是app的温暖港湾。

当需要数据或者信息的时候,app都会通过互联网向服务器发起请求;当一个用户通过app希望联系到另一个用户的时候,服务器就在中间起到了牵线搭桥,方便通信的作用。

所以你觉得蒙圈的服务器、后端和API其实都可以理解成相似相近的东西。

存 储

服务器的首要职责是存储数据。没有数据几乎就没有其所支撑的一切功能和服务了。

存储的数据包括像音视频、照片、文档一类的文件,也包括用户的信息和使用数据等。服务器一般利用结构化的方式存储数据,以便app可以方便的进行读写;

让我们来看看上面两个图,服务器的数据存储很像一系列的电子表格。例如需要存储用户的信息,和登录的认证信息以便运行登录和授权。想象一下我们的外卖app,服务器中需要存储每一个美食商家的相关信息就像上图中一样,用户就可以在前端按照不同的分类策略来浏览所需的商家(按价格、远近排序等等)。

同时,服务器还需要存储信息之间的相关性,例如用户是否喜欢某一家餐馆的某一道菜品,或者某一用户喜欢的所有餐馆,以及同类型的餐馆或美食。这样就可以针对性的为用户推荐相似的美食了。

有了这些信息后,app就可以回答很多用户的问题,使得公司可以更加了解用户、更好的服务客户:

  • 有多少人喜欢这家餐厅呢?
  • 这位用户喜欢哪一类的餐厅?
  • 用户A和用户B都喜欢那种餐厅呢?

数据库

所有的这些都被存储在数据库(database)中。虽然数据库有各种各样不同的类型,但是他们都具有以的共通特征:

  • 存储信息
  • 存储信息间的关系
  • 可以响应不同的信息问询(这就可以方便客户提交每一种不同信息请求的响应)

每一种数据库类型都有自己的优缺点,但是如果别人告和你讲“SQL”、“MongoDB”,“CouchDB”,“Redis”这些词,那么他都是在说数据,只要把握上面的三点就不会尬聊了。

 

Stackoverflow统计的各类数据库使用情况

https://www.eversql.com/most-popular-databases-in-2017-according-to-stackoverflow-survey/

https://insights.stackoverflow.com/survey/2017

通 信

服务器另一个重要的作用是与app以及其他服务器间进行高效的通信。app在工作时需要与服务器进行频繁的通信。

例如你要搜索附近好吃的餐馆,你的搜索信息就会由app提交至服务器,服务器检索数据库内的相关信息后响应app的请求,将相关的信息返回给app,这样你就能看到搜索到的餐厅了。

如果是个其他的用户发送信息的话,你的app会将信息提交到服务器,服务器根据用户ID判断信息需要分发的地址,随后将信息发到你朋友的app上,app弹出消息提醒用户(当然,如果不在线的话服务器会对信息进行保存,随后发出)

服务器为app提供了一个可以调用的接口——API,其中封装了各种app需要的功能和服务。

通信的本质是数据的传输,在服务器的范畴主要使用两种主要的格式,XML和JSON,如下图所示:

其中的“<>”、“{}[]”符号是引导计算机进行有效读取的标志。

虽然看起来这样的格式觉得有点懵,但是对于计算机来说确十分便捷。需要记住,服务器、手机都是一台台计算机。手机上app处理用户输入的文字、声音、图像,随后会输出图像、声音等信息。手机上的app主要用于用户交互,输入输出都十分人性化,不需要我们自己去读取上面难懂的格式。但计算机并不知道人类在说什么,所以需要将信息转换成特定的格式,让计算机之间可以互相理解并高效地通信,这就是上面这些格式的作用。

服务器应用

和手机app一样,服务器也需要app才能够运转。不同的是服务器使用的是服务器端的框架,主要有Ruby on Rails,PHP,ASP.NET,Java以及Node.js等流行的框架为服务器构建响应的程序和应用。

构建应用后一般会有一个接口来调用这些应用,这一接口便是API(Application Program Interface应用程序接口)。手机上的app在运行过程中会不断的调用各种API来完成任务。

让我们来完整的看一下app是如何工作的。

我们首先需要明白API是app调用程序的接口,数据库存储了所有的信息,服务器应用则是调度、处理所有请求、信息、响应的中枢。服务器应用通过API监听app传来的请求并进行响应,同时回传数据库中的检索信息已经处理结果。

当你登录时,app会将你的登录信息通过API传到服务器,服务器应用就会与数据库中的信息进行比对。随后根据比对结果通过API向app回传相应的信息(登录成功、登录失败:用户错误、用户不存在等等),这时你就会在手机上看到相应的变化了。

硬 件

[[203907]]

刚刚我们说过服务器也是一台电脑,那么就是需要什么样的电脑呢?很多人提到服务器便会想到成千上万的机房、黑乎乎的机柜、严热的空气,以及荧光闪烁的指示灯。

很多大公司有自己的服务器机房,向Facebook和Google曾经(现在也是)在世界各地构建了许多个自己地机房安放服务器。由于需要向全球亿万人提供服务,需要强大的数据中心的服务器。搭建自己的服务器的成本更低、提供的用户体验更好。

但是如今开发者们拥有了新的选择,云服务的性能不断提升价格也日益低廉。例如亚马逊AWS,微软的Azure以及Digital Ocean还有很多其他云服务商都提供所谓的虚拟服务器。

开发者无需购买任何的硬件,就可以通过这些服务商提供的服务器来运行自己的应用,你需要做的就是提交自己的服务器应用,设置相应的参数即可(当然还需要交费呐)。

最近还出现了叫做一些后端即服务(BaaS)提供商,开发者不需要写复杂的服务器应用就可以轻松部署自己的后端了。

是不是所有的app都需要后端?

大多数app是的。需要服务器存储数据为用户提供更好的服务(公司也会收集用户数据啥的)。但确实有一些app可以不需要后端。有一个简单的方法来判断:

断开所有网络连接后,如果app的功能还能正常使用的话说明它是可以不用后端的(比如说手机里的相机,记事本等等)。

看到这里,你应该对事情的来龙去脉比较清楚了吧,下次再遇到搞后端的朋友就可以开心的聊天啦~~

***附上一幅服务器(后端)的简图再回味一下。

责任编辑:武晓燕 来源: hackernoon
相关推荐

2013-05-29 10:17:56

Hadoop分布式文件系统

2022-04-10 19:26:07

TypeScript类型语法

2024-02-07 12:35:00

React并发模式concurrent

2021-05-11 07:30:58

JNIJavaAPI

2022-05-04 08:38:32

Netty网络框架

2021-01-28 17:41:32

Github网站Pull Reques

2022-09-06 21:38:45

数字人数字孪生

2021-12-16 15:11:59

Facebook天秤币加密货币

2021-12-26 00:01:51

Log4Shell漏洞服务器

2021-02-01 06:41:47

流水线计算机队列

2012-07-25 09:09:46

GNOME OS桌面

2020-03-07 09:47:48

AVL树算法场景

2024-02-01 20:15:37

2021-12-16 21:13:38

通信网管平台

2021-05-19 10:44:42

数据库架构技术

2019-10-28 09:59:26

区块链技术智能

2011-07-01 13:46:55

服务器整合

2024-02-26 00:00:00

人工智能序列数据机器人

2020-10-29 07:03:56

Docker容器存储

2017-10-11 08:51:13

点赞
收藏

51CTO技术栈公众号