- 支持试读
内容简介
本章将带你了解本专题的整体内容。 - 支持试读
项目结构
本专题相对复杂,规划好结构非常必要。 前置知识:AXUM中间件
我们曾在《漫游AXUM》专题中讲解过中间件,随着版本迭代,AXUM中间件的机制发生了很大的改变。本章我们将基于当前最新版本的AXUM,讨论各种类型的中间件的实现以及如何在 handler 中,获取中间件里的数据。- 支持试读
前置知识:位运算
你或许有疑问,Web 应用也要位运算?正如你所疑惑的,和底层应用不同,作为高级应用的 Web 应用基本不需要考虑位运算,无论是本章还是后续涉及位运算的章节,都可以用其它数据结构代替。我们之所以会把位运算拿出来给大家介绍,是因为:一、让应用更高效;二、正因为大部分 Web 应用都没用上位运算,所以我们想阐明一件事:对于 Web 应用,位运算也同样能发挥重要作用。 前置知识:PostgreSQL树
我们来讨论 PostgreSQL 维护树的数据结构。由于 PostgreSQL 支持递归查询和递归视图,所以很多模式实现起来都非常方便。本章将讨论使用递归视图,实现《邻接表模式》和《路径枚举模式》结合的树模型。前置知识:PostgreSQL 的继承
你没看错,PostgreSQL 和 OOP 一样,支持继承。惊不惊喜?意不意外?本章我们将学习这一特性。前置知识:PostgreSQL 全文检索
PostgreSQL 不但内置向量/矢量(Vector)数据类型,而且还可以为其维护索引。这为全文检索、AI大模型等场景/领域提供了强力的支持。这方面和 MySQL 提供的只是儿童玩具似的功能相比,简直不是一个维度的降维打击。前置知识:gRPC 拦截器、元数据及身份验证
本章我们将学习 Rust 实现 gRPC 的拦截器、元数据,以便 gRPC 的实现鉴权。趁此机会,回顾一下 Rust 操作 gRPC 的基础知识。新版的 tonic 提供了新的 `builder` ,我们需要使用这个新的 `builder`。前置知识:配置的热加载
本章我们将讨论配置的热加载方案。除了讨论集中热加载实现的方案,还将学习到全局共享数据的实践。前置知识:将 Rust 应用编译为通用二进制
本章将讨论在 Linux 中,如何把 Rust 应用编译为通用二进制。用户及验证码服务
本章将分别实现用户服务、验证码服务和诸如错误处理、PostgreSQL、sqlx 数据迁移、Redis、邮件发送和人机验证等通用功能。前置知识:补充知识:静态配置文件的热加载
本章将补充一个知识:静态配置文件的热加载。之前有讨论过配置的热加载,为了避免已经学过该文章的用户忽略文章变动,所以通过单独篇章来补充这一知识点。配置服务和用户鉴权
本章我们将实现配置服务和用户的 gRPC 及 RESTful API 鉴权。商品分类和保证金
本章我们实现商品分类和保证金。商家入驻
本章我们将实现商家入驻品牌与店铺
本章我们将讨论品牌与店铺。本项目是多商家多店铺的系统,而每个店铺依据类型可以绑定品牌。前置知识:分布式锁(上)
本章我们来讨论一个非常重要的功能:分布式锁。典型场景是:在高并发下,库存的扣减,其中尤为典型的是秒杀场景。前置知识:分布式锁(下)
我们继续讨论实现分布式锁的第二种方式。前置知识:使用自定义类型和数组等 PostgreSQL 高级类型维护商品 SKU
本章我们将讨论 PostgreSQL 自定义类型,并结合 PostgreSQL 数组来维护商品 SKU 及库存。商品服务
本章我们将实现商品服务,其中包括商品管理、SKU及库存以及商品评价。
项目结构
- 10299
- 2025-01-19 10:07:26
项目结构
如上文所述,整体看,本专题包含几大部分:
- 分布式商城,我们命名为
plaza - 商城的UI,我们命名为
plaza-ui - 各种所需要的前置知识,我们命名为
knowledge
其中,前置知识比较繁杂,包含多种知识,每个知识都将以单独项目出现,knowledge 只是用于组织这些单独的项目。
目录结构
我们通过一个 plaza 目录组织本专题所需要的所有项目,如下:
├── plaza
│ ├── knowledge
│ ├── plaza
│ └── plaza-ui
商城UI
我们使用 NextJS 来构建 UI,使用的是官方的 create-next-app 命令,并使用 App 路由方式。所以它的结构就是典型的 NextJS 项目结构,具体结构我们到时详解。
整体结构
经过以上讲解,让我们看一下整个专题大概的目录结构:
├── plaza
│ ├── knowledge
│ │ ├── distributed-lock
│ │ └── sse
│ ├── plaza
│ └── plaza-ui
开发环境
- Rust:version 1.92.0 (ded5c06cf 2025-12-08)
- Axum:0.8
- sqlx:0.8
- tokio:1
- serde:1
开发工具和插件
本专题使用 Visual Studio Code 进行开发,为了提高开发效率,将使用以下插件:
源码仓库
本专题代码位于axumrs/plaza仓库,每个涉及代码编写的章节都使用独立的分支。该仓库将公开一段时间,之后将转为私有仓库,请已购买本专题的用户尽快联系我们,提供你的 github 邮箱,我们将把你加入到该仓库中。
