拥有一台自己的服务器
拥有一台自己的服务器是件很不错的事情.

在不同的语境中,“服务器”一词的含义也不尽相同。本文中谈到的服务器,指的是具体的物理机器(而非服务器程序)。与普通的个人计算机不同,服务器通常保持在线状态,通常用来执行一些不间断的程序或任务,并且对外提供服务。

一般消费者日常购买的消费级设备,通常无法满足作为服务器所需的条件——比如长时间通电启用,或者具备能自动纠错的硬件。此外,架设服务器需要相当的维护成本和各种考虑因素。因此,许多公司或者个人会选择在主机提供商处购买托管服务来使用服务器。主机提供商在一些地方建立规模化的机房,统一管理其中的机器进行,这样用户就不需要自行维护硬件设施了。

由于不同用户的使用场景不同,对性能的需求也不一样,主机商家通常会通过虚拟化技术在一台物理机上分割出若干虚拟机,并为每个虚拟机设置最高可达的性能,再将这些虚拟机出售给不同的用户。市场上说的“服务器”,通常就是指这分割出的一份份。而一整台物理机则被称作“独立服务器”。由于用户并不一定在所有时间内都完全使用到份额内的性能,因此商家可能会出售比理论上所能划分出的数量更多的服务器,并可能会限制机器性能使用率超过某个阈值的时间。当超售的份数实在过多时,可能就会出现资源紧缺的情况,令用户的使用体验大打折扣。

服务器的规格不同,具体能做的事情也不一样,但无论如何,拥有一台服务器总是件不错的事情。

由于服务器一般“远在天边”,用户看不见也摸不着实物,所以通常不会去考虑它的外观或者外设如何,对它的关注也就落在连接性和计算性能上边了。而用服务器可以做什么,一般也是从这个两方面去考虑。

连接性是指用户与服务器连接并进行数据通信的体验。为了操作的即时性,服务器连接到用户端的延迟要小,网络条件也要尽可能好。如果使用场景多是通过命令行界面操作服务器,所需的数据传输量并不大。而涉及大量数据传输,比如图像或视频,那么服务器到用户端的网络带宽也要足够大。

计算性能则一般指服务器的运算能力,比如通用计算能力、图形计算能力,甚至 FPGA 等等。比如大型网站的运营、软件持续集成时的构建、机器学习模型的训练或推理,都对服务器的性能有一定的要求。

使用自己的家用设备时,一是不能保证设备的在线情况,二是通常不具备所谓的“公网”环境:家用的宽带业务,通常并不能为每个用户提供独立的 IPv4,即便是 IPv6 渐渐普及的今日,运营商通常也不给予用户网络入站的权限——用户只能对外发出连接请求,而无法收到其它用户传入的请求。

而服务器通常具有较为完整的网络环境,并且能够为访客提供不中断的服务体验。于是,网站托管就是服务器很常见的一个使用场景。不过,一些网站并不提供服务端功能(也就是通常所说的静态网站)、或者不需要十分特别的计算需求,这时使用服务器进行托管还是略显多余,因此一些主机提供商也会提供仅针对网站的托管服务,或者建议用户使用类似“对象存储”的服务来托管静态网站。

外出时所能携带的设备规格和使用场景,总是会存在一些限制,而将开发迁移到服务器上,就可以一定程度上消除这些差异:无需考虑设备的具体性能,只要足够连接到服务器并进行操作即可;也不用担心突然断电导致工作丢失,主要进度都会保存在服务器上。此外,持续集成的设计,也是将构建步骤迁移到一个中心服务器上,并将结果反馈给参与的各位开发者,减少了这些开发者分别维护环境以及进行构建的工作。


Last modified on 2023-10-23