返回 登录
9

写给非专业人士的服务器技术指南

阅读7348

原文:The non-techie’s guide to servers
作者:Kannan Chandrasegaran
翻译:Vincent

译者注:当你遇到别人讨论关于服务器的内容时,你是否能够听得懂?本文作者向读者介绍了一些非技术类的内容,让读者对服务器有一个更好的理解。以下为译文。

假设你在休息室里面碰到了一位软件开发的同事。她正准备去玩桌上足球,而你为了能够提提神,正在喝红牛。虽然你不是故意为了和她在一起而特意这么做的,但是事实是现在这里只有你们两个。为了让场面不那么尴尬,你尝试打破这种寂静,

“所以你现在手头负责的是什么项目?”

她开始告诉你,你们就这么开始聊起来了,最后你也很赞同她的说法,然后你俩就分道扬镳了。这样就完美地避免了尴尬。

但有时,如果你遇到了其他的同事,比如服务器工程师,后端开发人员。你可能对他们工作的内容不太了解,所以你可能会询问他们到底是如何实现的。



听到这些陌生的词汇,你的脑海可能已经有大量的疑问了。“API是什么东西?我们应该在什么时候用到数据库?Jason又是?”

你的工程师朋友们谈论的是关于服务器。也许你以前听过这个词,但可能根本就不知道它究竟是什么。今天我们就来好好聊聊它。

钻到屏幕后面去

当你用手机点开一个APP,是不是每次用APP都感觉很爽的样子啊?事实上应用程序就是所谓的前端。它负责给用户带来友好的体验。但这并不是应用程序的全部功能。

假设你在消息传递平台(如Whatsapp)上给我发送了一条消息。看起来好像是信息从你的手机发到了我的手机上。但是让我们仔细想想,比方说,当我的手机关机了,你给我发送完信息以后你又关机了,然后我开机了。尽管我们的手机从来没有在同一时间运行,但我还是收到了消息。

很明显,我们还是忽略了某些东西。



其实我们忽略的就是后端,也可以称之为服务器

服务器

服务器是一台计算机,它负责连接到互联网,并且一直处于运行状态。


服务器有两个主要功能:存储数据和促进通信。


因此,当你发送消息时,实际上是手机上的应用程序将消息发送了服务器上面,并存储在了服务器上。当服务器监测到我的手机连上了以后,服务器就会把这些存储的消息发送给我。


服务器就是应用程序的强大后援团

无论应用程序需要什么信息,它都会向服务器发送请求。当应用程序的某位用户需要与另一位用户对话时,服务器就会促进通信。

服务器后端API这样的术语是可以经常互换使用的。

存储

服务器的主要功能之一是存储。

存储的内容包括照片、视频和文档这些文件。服务器以结构化的方式进行存储,类似于计算机上的文件夹,这样它们就可以被应用程序访问。

服务器也可以存储信息。每个应用程序都有一些很重要的信息,这些信息对于应用程序的工作方式来说很重要。



你可以把它想象成一堆的电子表格。例如,应用程序需要存储用户信息,以及登录情况,以便能够进行身份验证。应用程序可能是一个餐馆目录,在这种情况下,服务器会存储关于每家餐馆的详细信息。

除了信息之外,服务器还记录了一些信息之间的关系。例如,某个用户“喜欢”应用程序上的某家餐馆,服务器会记住该用户和餐馆之间的关系。



这样很多问题都可以迎刃而解,比如:

有多少人喜欢这家餐厅?

用户喜欢什么餐馆?

用户都喜欢什么菜?

信息以及信息之间的关系存储在数据库中。数据库有很多类型,但它们都有一些核心功能:

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

我可以列出很多不同类型的数据库,它们各有千秋。如果你听到有人使用“SQL”,“MongoDB”,“CouchDB”,“Redis”这样的术语,说明他们正在讨论的是关于数据库的内容。

通信

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



应用程序中的许多活动都需要与服务器进行通信。例如,如果用户搜索某样东西,则需要将搜索项发送到服务器,服务器将对结果进行响应。如果用户向另一个用户发送消息,则消息将发送到服务器。然后通常是以推送通知的形式发送到另一个用户的应用程序。

服务器为app提供了一个可以调用的接口——API。接口中的各个函数可以称为端点

通信的本质是数据的传输。最常见的两种通信格式是JSON和XML。


左边的是xml,右边的是JSON

乍一看,这些格式似乎很难读懂。

需要谨记的是服务器只是一台计算机,跟笔记本电脑或手机一样。应用程序以触摸或声音的形式接收用户输入,再处理这些信息,然后以图像的形式输出到屏幕上。手机上的app主要用于用户交互,输入输出都十分人性化,不需要我们自己去读取上面难懂的格式。

服务器是只与其它计算机通信的计算机。

人类通过诸如字体大小、文字颜色和布局之类的进行表达。但这些对计算机来说是没有意义的。


服务器通信以易于另一台计算机解析和理解的格式发生。

服务器应用程序

与在手机上运行应用程序一样,你需要一个在服务器上运行的应用程序。服务器应用程序是使用服务器端框架构建的。流行的选项包括Ruby on Rails、PHP、ASP.NET,Java,Node.js



API是通往服务器的网关,应用程序知道在那里调用。数据库存储所有信息。您的服务器应用程序是“大脑”,它把所有东西都放在一起。

它侦听并响应来自API的请求,它将从数据库中添加和检索信息,并做出决策。例如,当应用程序发送登录信息时,请求通过API进来,正确的登录信息存储在数据库中。但是服务器应用程序的工作是比较两者,并通过API对应用程序做出适当的响应。

硬件



当有人说“服务器”时,你可能会一下子想到这种场景:一间锁着的房间里闪烁着灯光,等待汤姆·克鲁斯饰演的007从天花板上跳下来偷东西。

许多大公司都有自己的服务器。Facebook和谷歌在全球拥有数百台服务器。当运行的服务用户量达到数百万时,运行自己的服务器可以更便宜,而且性能也会更好。

很多开发人员自己不会使用物理服务器,而是使用某种云服务。像Amazon Web ServicesAzureDigital Ocean这种提供“虚拟服务器”的。这些服务本身拥有硬件,也是自己去维护,而开发人员只是上传服务器应用程序。

现在甚至还有一些后端作为服务提供者,开发者不需要写复杂的服务器应用就可以轻松部署自己的后端了。

所有的应用程序都需要后端吗?

你看到的大多数应用程序可能都有一个后端组件。当然也有一些应用程序是不需要的。判断是否存在后端有一种简单的方法:


如果切换到飞行模式,应用程序还能正常工作吗?

如果不能,那么可能存在后台服务器。

读完这篇文章希望可以帮助你更好地理解应用程序的后端是什么样子的。也许,下次遇到朋友时,你可以和他们轻松地谈论JSON的故事。




2017年9月23日,SDCC 2017之区块链技术实战线上峰会正式召开,邀请圈内顶尖的布道师、技术专家和技术引领者,共同探讨区块链技术栈架构与性能(架构与跨链操作)、智能合约安全、分层评测区块链项目难点与策略、贴近云计算的下一代区块链平台、区块链+AI等热门话题与技术。更有区块链技术在互联网公司的成功应用经验七位大牛与你相聚狂欢,详情查看所有嘉宾和议题,以及注册参会

评论