Logo
Section 1 / 5

Phoenix 简介

了解凤凰项目的历史,以加深对实时应用的理解。

导入

Phoenix 简介

了解凤凰项目的历史,以加深对实时应用的理解。

引言

本课程聚焦于构建运行迅速、资源开销低的实时应用。如今的软件用户期望屏幕上显示的数据能够即时更新。为了赢得用户的信任,我们必须提供由实时功能驱动的流畅应用体验。

构建能够实现这种实时数据流和反馈的系统是一项具有挑战性的任务,通常需要在应用开发、维护或运行时之间做出权衡。然而,随着实时应用开发技术的进步,这些权衡如今已大幅减少。这意味着,开发实时应用已不再是专家的专属领域——像我们这样的普通开发者也能轻松胜任。

...
Elixir和Phoenix

实时系统的核心在于以最高效的方式将数据从服务器传递给用户,或反之。一个实时系统的关键组成部分是服务器与用户之间的通信层。用户可能使用浏览器、移动应用,甚至另一台服务器。因此,我们需要选择一种能够在各种环境下良好工作的通信层,无论是高延迟的移动网络还是高速互联网连接。

课程结构

本课程分为三个部分,层层递进,帮助我们掌握 WebSocket、Phoenix Channels 和实时应用的相关知识。

第一部分

本部分将重点讲解实时技术栈中的核心内容:

  • Elixir Phoenix Channels
  • WebSockets
  • GenStage

在这些课程中,我们将覆盖广泛的知识点,打下构建实时应用所需的基础。

第二部分

在第二部分中,我们将基于第一部分建立的基础,开发一个真实的实时应用。我们将为一个同时服务大量用户的电商应用添加实时功能。此外,还将深入探索 Phoenix 的一些高级特性,例如 Phoenix Tracker。

第三部分

第三部分将指导我们如何在生产环境中运行实时应用。编写完应用只是开始,我们还需要确保应用在生产环境中的健康与稳定运行。

先修要求

本课程要求掌握以下技术。如果你不熟悉这些内容,强烈建议在进入课程前先学习相关知识:

  • Elixir
  • Erlang
  • Phoenix

上述组件的安装说明请参见附录。

实时系统的必要性

用户期望应用能准确反映现实世界的状态。

设想一个时尚商店的在线购物车。你浏览商品,终于找到心仪的一款,但库存只剩几件。你顺利完成了结账流程并输入了支付信息。就在即将完成购买时,却收到提示:“该商品已售罄!” 你原本期待的顺畅结账体验瞬间落空,难免感到沮丧——明明经历了漫长的流程,最终却无法买到想要的商品。

实时的定义

实时功能 是一种确保用户所认知的真实状态能在应用界面中及时体现的技术,从而提升应用可用性,减少用户挫败感。

仅仅反映页面加载时的状态往往不够。以上述电商应用为例,结账页面加载时商品尚有库存,但在你填写账单信息的过程中,商品已被售出。因此,应用必须持续展现最新信息,而无需用户主动操作刷新。

示例

聊天应用可以在窗口中自动插入新消息,无需用户点击“获取新消息”按钮。正是这种实时特性,让聊天系统对使用者而言既实用又愉悦。

实时系统的基本架构