这是一个清晰描绘了本次课程构建的系统全貌的架构图。
此架构图展示了一个典型的、前后端分离的现代微服务应用。
用户请求流:
用户通过浏览器与Next.js应用交互。
所有对后端的请求,都先发送到Next.js的BFF (Backend for Frontend) 层。
BFF层将鉴权、业务类请求转发给Spring Cloud Gateway。
网关根据请求路径,从Nacos查询到目标服务的地址,并将请求路由到相应的微服务(如用户服务)。
服务之间如果需要通信(如问答服务查询用户信息),则通过OpenFeign向Nacos查询地址后进行调用。
AI对话流:
为了极致的流式体验,AI对话请求由Next.js的BFF层直接调用Gemini API。
AI生成的文本流直接返回给浏览器,实现了打字机效果。
服务治理流 (灰色点线):
所有后端微服务在启动时,都会向Nacos注册自身信息。
所有微服务都会从Nacos拉取并监听自己的配置信息。
2. 后端数据库SQL脚本
这是项目所需的最简数据库和表结构。建议在课程开始前,在本地MySQL中执行此脚本。
-- 创建一个名为 'ai_qa_system' 的数据库,如果它不存在的话
CREATE DATABASE IF NOT EXISTS `ai_qa_system` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 切换到该数据库
USE `ai_qa_system`;
-- ----------------------------
-- 用户表 (user)
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` VARCHAR(255) NOT NULL COMMENT '用户名',
`password` VARCHAR(255) NOT NULL COMMENT '加密后的密码',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- ----------------------------
-- 问答历史表 (qa_history) (可选,用于功能扩展)
-- ----------------------------
DROP TABLE IF EXISTS `qa_history`;
CREATE TABLE `qa_history` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`question` TEXT NOT NULL COMMENT '用户提出的问题',
`answer` LONGTEXT COMMENT 'AI返回的回答',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问答历史表';
-- 插入一些测试数据 (可选)
INSERT INTO `user` (`username`, `password`) VALUES ('testuser', '$2a$10$abcdefghijklmnopqrstuv'); -- 密码是加密的,请通过注册接口创建用户
Comments (0)