产品模型

Frontend SELF ZH
第 48 级 , 课程 1
可用

11.1 现代产品

现代产品

现在都没人直接叫它们程序了。现代产品可能由几十个程序、数百个互联网服务和一堆提供它云数据中心部署的 API 组成。

很多现代产品(如果不是全部的话)都按照 客户端-服务器 的模式工作。就是你的设备上(手机、笔记本、电脑) 有个程序负责和用户(你)沟通,而所有关键功能在远程服务器上完成,所有重要的事情也在那里发生。

有时你的客户端可能会与多个独立服务器通信,又或者一个产品的服务器能访问另一个产品的服务器。这形成了一种 客户端和服务器的全球性网络,大家都在相互协作。

因此,现代应用的模型最好描述为 客户端-互联网-服务器 模式。用上了很多不同的复杂通信。甚至出现了所谓的 “智能通信渠道”,它们可以自行决定将你的请求发送给谁以及何时发送。

11.2 客户端

客户端程序可以大致分为四类:

  • 桌面客户端 — 运行在计算机上的程序
  • 移动客户端 — iOS或Android下的应用程序
  • Web客户端 — 在浏览器中运行的网站或Web应用
  • 服务器客户端 — 运行在另一台服务器上的应用程序

每个类别还可以再细分。例如,web 客户端是一个网站或 web 应用程序,意味着它由 浏览器和加载到其中的网站组成。浏览器也不是都一样的,可能会有所不同。

即使是最常见的浏览器,也还有需要加载到其中的网站。网站通常由三部分组成:

  • HTML
  • CSS
  • JavaScript

你可能觉得这很简单,但没人再直接用 HTML 和 JavaScript 写网站了。现在开发网站 用的不是库,而是完整的框架,比如 React、Angular 或 Vue。现在不仅仅是网站, 而是完整的 web 应用程序。带有他们自己的构建、测试和开发范式。

简单的 CSS 也没人用了:已经有帮助生成它的 CSS 预处理器,甚至还有完整的 CSS 框架。 天哪,甚至有针对 email 的 CSS 框架,让你的邮件在浏览器或大多数邮件客户端中看起来漂亮。

JavaScript 也没人直接用了:所有大型 web 应用程序都是用 TypeScript 编写的,最后再编译为 JavaScript。都懂的...

11.3 互联网和基础设施

客户端和服务器之间的通信——能有多简单?但这一切都已经改变了。

首先,你的产品很可能会被托管在现代的数据中心之一。世界上有很多公司提供各种托管服务, 可以是在他们的服务器上,也可以是在你的物理服务器上。只要付钱,随你选。

互联网和基础设施

物理服务器不再“物理”。所有现代数据中心都提供虚拟服务器的租赁。这是一种虚拟的计算机, 在一个物理服务器上可能有几十个。但从升级服务器的角度来看,这很方便。需要更多的内存, 你可以在几分钟内添加到你的虚拟服务器上。

但这种方法也已过时。现在流行的是迁移到云端——你的产品不仅仅是在数据中心的虚拟服务器上部署, 而是积极利用这些数据中心的大规模基础设施和服务。

需要一个用于存储备份的服务器:在云中有一个完整的便利设施。需要一个可靠性达到 99.9999999% 的数据库吗?也有。 Kafka、RabbitMQ、NoSQL?都有且易于配置。只要花钱就行。

这些数据中心和 云已经成为你产品的一部分。例如,Amazon 在全球拥有大量的数据中心, 因此他们提供 CDN 服务:你的公共内容将缓存到所有 Amazon 数据中心,你的全球用户会更快获取。

或者可以通过 Amazon Gateway API 服务来处理你的应用程序 API 调用,这允许非常灵活地配置与服务的协作。 可以将负载分配到不同服务,抵御 DDoS 攻击,自动上传文件,配置智能缓存,还有很多功能。

因此,在客户端应用程序和你的服务之间,有很多“智能通信”需要配置,必须配置。即使你从未亲自设置过, 也该知道它们存在并可能对程序的运行产生重大影响。

我们还没涉及路由器、5G 塔、卫星和海底网络电缆。你从服务器发送视频流到客户端,如果客户连接不好导致中断, 你猜谁来解决这个问题?

11.4 服务器

使用术语 服务器端 意味着很多不同的概念,所以了解最流行的一些会对你有帮助。

物理服务器

物理服务器是一个独立的计算机设备,拥有处理器、内存、存储资源,用于处理数据和运行各种应用程序。 这些服务器部署在数据中心,提供网页、应用程序、数据库和其他服务的托管能力。

虚拟服务器

虚拟服务器是一种软件模拟的服务器,运行于物理服务器环境中。通过虚拟化技术, 一个物理服务器可被分成多个独立的虚拟服务器,每个虚拟服务器都有自己的操作系统, 可以独立重启和配置。

服务器程序(Nginx示例)

服务器程序,如 Nginx,是用于处理对 web 资源请求的服务器软件。Nginx 以其作为 web 服务器而闻名, 也能在微服务架构中作为邮件代理服务器和反向代理服务器以及负载均衡器使用。

数据库服务器

数据库服务器是用于管理数据库和处理数据库请求的专用服务器。它提供数据的集中存储和处理, 通过网络提供数据访问。数据库服务器支持事务处理、数据搜索和修改,同时确保信息存储的可靠性和安全性。 数据库服务器示例包括 MySQL、PostgreSQL、Oracle Database 和 Microsoft SQL Server。

在一些数据中心中的某个虚拟服务器上,你的 React 和 Node.js 项目会运行,与数据库通信,接收来自 Nginx 的请求,并将操作日志发送到 Splunk。

而正是因为你的代码,数百万用户会对你的产品感到满意。他们会使用产品并为其付费,产品的所有者也会满意。 公司股价会上涨,你会获得股票奖金,也开心。简直是某种自然界的幸福循环 :)

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION