一、系统架构设计
一个可扩展的SaaS档案管理系统应采用前后端分离架构,核心是微服务化的后端与多租户数据隔离方案。
1. 技术栈选型
后端:Spring Boot + Spring Cloud Alibaba,数据库:PostgreSQL(主业务)+ Redis(缓存),文件存储:MinIO(兼容S3协议),前端:Vue 3 + Element Plus。
2. 多租户方案
采用数据库Schema隔离模式,每个租户拥有独立的Schema,确保数据物理隔离。在数据库连接层实现动态数据源切换。
二、环境搭建与初始化
1. 开发环境准备
- JDK 17:
sudo apt install openjdk-17-jdk
- Node.js 18:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs
- PostgreSQL 15:
sudo apt install postgresql postgresql-contrib
- MinIO Server:
wget https://dl.min.io/server/minio/release/linux-amd64/minio && chmod +x minio
2. 数据库初始化
创建系统管理数据库和基础表结构:
```sql
-- 创建系统库
CREATE DATABASE saas_archive_system;
\c saas_archive_system;
-- 租户信息表
CREATE TABLE tenants (
id VARCHAR(32) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
schema_name VARCHAR(50) UNIQUE NOT NULL,
status INT DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建默认租户schema
CREATE SCHEMA tenant_default;
```
执行完成后,系统会有一个用于管理租户的系统库。
三、核心功能实现
1. 动态数据源配置
创建DynamicDataSourceConfig类实现多租户数据源切换:
```java
@Configuration
public class DynamicDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.system")
public DataSource systemDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public DataSource dynamicDataSource() {
Map