来源:hackernoon
编译:Tom R
我们每天打开手机和网页 , 淘宝、百度、微信还有很多app和网站,都能看到精彩纷呈的用户界面 。但很少有人知道他们的背后,是被称作后端的技术在进行支撑,包括网络、数据库、响应等等很多方面的内容 。
如果你哪天听到了一堆如API、数据库、Json的词语中已经云里雾里了...那就和我们一起来了解下服务器端的相关知识,看看手机的后面到底藏着何方神圣...
钻到屏幕后面去
当你用手机点开一个APP,是不是每次用APP都感觉很爽的样子?。科涫滴颐前補pp称作是前端,它的主要功能之一是提供流畅舒适的用户体验,但是要实现真正的功能,一个app是不够的 。
让我们一起来做个试验 , 比如就拿即时通信app来说吧,你给我的手机发了一条信息但是我关机了,发完后你关上手机我打开手机却发现能收到你的信息 。这不仅仅是app能够做到的,在你我手机之间一定还有其他的东西在默默的奉献着 。
这就是后端,服务器!
简单来说,服务器就是一台一只联网并运行着服务程序(支持各种app、网页、API)的电脑 。
服务器有两大功能:
- 存储数据
- 促进(便捷)通信
可以说服务器是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回传相应的信息(登录成功、登录失败:用户错误、用户不存在等等),这时你就会在手机上看到相应的变化了 。
硬 件
刚刚我们说过服务器也是一台电脑 , 那么就是需要什么样的电脑呢?很多人提到服务器便会想到成千上万的机房、黑乎乎的机柜、严热的空气,以及荧光闪烁的指示灯 。
很多大公司有自己的服务器机房 , 向Facebook和Google曾经(现在也是)在世界各地构建了许多个自己地机房安放服务器 。由于需要向全球亿万人提供服务,需要强大的数据中心的服务器 。搭建自己的服务器的成本更低、提供的用户体验更好 。
但是如今开发者们拥有了新的选择,云服务的性能不断提升价格也日益低廉 。例如亚马逊AWS,微软的Azure以及Digital Ocean还有很多其他云服务商都提供所谓的虚拟服务器 。
开发者无需购买任何的硬件 , 就可以通过这些服务商提供的服务器来运行自己的应用,你需要做的就是提交自己的服务器应用,设置相应的参数即可(当然还需要交费呐) 。
最近还出现了叫做一些后端即服务(BaaS)提供商,开发者不需要写复杂的服务器应用就可以轻松部署自己的后端了 。
是不是所有的app都需要后端?
大多数app是的 。需要服务器存储数据为用户提供更好的服务(公司也会收集用户数据啥的) 。但确实有一些app可以不需要后端 。有一个简单的方法来判断:
断开所有网络连接后,如果app的功能还能正常使用的话说明它是可以不用后端的(比如说手机里的相机,记事本等等) 。
看到这里,你应该对事情的来龙去脉比较清楚了吧,下次再遇到搞后端的朋友就可以开心的聊天啦~~
最后附上一幅服务器(后端)的简图再回味一下 。
-END-
欢迎加入将门技术社群!
现已涵盖CV、机器人、NLP、ML、IoT等多个当下火热的技术话题 。我们每周邀请来自产学研的优秀技术人进行线上分享,目前群里已汇聚数千位上述领域的技术从业者 。
入群方式>>关注“将门创投”(id:thejiangmen)微信公众号,在后台回复关键词“技术社群”,提交入群申请表 。通过审核后,我们会在第一时间发出邀请 。
点击右上角 , 把文章朋友圈
将门创投
让创新获得认可!
微信:thejiangmen
service@thejiangmen.com