为博客添加基于数据库的评论系统
创建数据库和数据库用户
CREATE DATABASE IF NOT EXISTS web;
CREATE USER 'web'@'%' IDENTIFIED BY 'commentsystem';
GRANT ALL PRIVILEGES ON web.* TO 'web'@'%';
FLUSH PRIVILEGES;
创建2张表 users表记录评论过的用户信息 comments表记录评论
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) UNIQUE,
avatar BLOB,
email VARCHAR(255) UNIQUE,
age INT UNSIGNED
);
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT UNSIGNED,
article_id VARCHAR(255),
text TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
后端基于gin框架,gin框架基于golang实现,go具有优秀的并发特性,能承受较高强度访问 性能对比
| qps | CPU | 内存 | 包大小 | |
|---|---|---|---|---|
| gin | 14900 | 150% | 0.4% | 9M |
| springboot | 11536 | 143% | 12% | 24M |
- qps上,gin 比 springboot 高出1.3倍
- CPU上,两者持平
- 内存上,gin比springboot 小30倍
- 包大小上,gin比springboot 小2.6倍
前端基于astro框架,astro是一个用于构建现代化网站的静态站点生成器和前端框架。它的设计目标是提供一种简洁、灵活的方式来构建高性能、易于维护的网站。Astro支持使用现代的Web技术和工具,如React、Vue、Svelte等,并采用了一种称为“开箱即用”的方式,使得开发者能够更轻松地构建复杂的用户界面,同时提供了强大的性能优化。 网站之前的加载博客文档和相册功能已经由astro和vue分别实现,但评论系统不再能基于静态网站或文件夹扫描实现。因此,评论系统会通过React组件插入,并提供api和后端gin通信。
因为本项目api较为简单,因此不写接口文档。