当前位置:首页 > 源码相关 > 正文内容

开源项目-木雷短网址 - 企业级短链接服务平台

admin2周前 (09-21)源码相关1043

木雷短网址 - 企业级短链接服务平台

核心功能

  • 短链接生成: 支持自定义短码,自动生成唯一标识

  • 多域名支持: 支持配置多个短链接域名,灵活管理

  • 链接管理: 完整的CRUD操作,支持批量管理

  • 过期管理: 支持设置链接过期时间,自动失效

  • 链接状态: 支持启用/禁用链接状态控制

🧪 AB测试系统

  • 多版本测试: 为同一短链接创建多个目标URL版本

  • 智能分流: 支持平均分配、权重分配等流量分配策略

  • 会话一致性: 同一用户在测试期间始终访问相同版本

  • 实时统计: 实时收集各版本的点击数据和转化率

  • 测试管理: 完整的测试生命周期管理

👥 用户管理

  • 用户认证: 支持用户注册、登录、密码管理

  • Token管理: 支持API Token和登录Token双重认证

  • 权限控制: 基于用户的访问权限管理

  • 操作日志: 详细记录用户操作,支持审计追踪

📊 统计分析

  • 点击统计: 实时记录点击数据,包括IP、地理位置、设备信息

  • 数据分析: 提供多维度统计分析,包括地理分布、时间分布等

  • AB测试分析: 专门的AB测试数据分析和转化率统计

  • 导出功能: 支持数据导出,便于进一步分析

🛡️ 安全与监控

  • 操作日志: 自动记录所有操作,支持敏感信息脱敏

  • 健康检查: 提供服务健康状态监控

  • 性能监控: 高并发场景下的性能优化

  • 安全防护: 防止恶意访问和数据泄露

🏗️ 技术架构

技术栈

  • 语言: Go 1.23+

  • Web框架: Gin

  • 数据库: MySQL/PostgreSQL

  • 缓存: Redis

  • ORM: GORM

  • 配置管理: Viper

  • 日志: Zap

  • HTTP客户端: go-resty

架构设计

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Web Client    │    │   Mobile App    │    │   API Client    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
         ┌─────────────────────────────────────────────────┐
         │                Load Balancer                    │
         └─────────────────────────────────────────────────┘
                                 │
         ┌─────────────────────────────────────────────────┐
         │                 DWZ Server                      │
         │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐
         │  │ Controller  │  │ Middleware  │  │   Router    │
         │  └─────────────┘  └─────────────┘  └─────────────┘
         │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐
         │  │  Service    │  │     DAO     │  │   Model     │
         │  └─────────────┘  └─────────────┘  └─────────────┘
         └─────────────────────────────────────────────────┘
                                 │
         ┌─────────────────────────────────────────────────┐
         │                 Data Layer                      │
         │  ┌─────────────┐              ┌─────────────┐    │
         │  │   MySQL     │              │    Redis    │    │
         │  │ PostgreSQL  │              │   Cache     │    │
         │  └─────────────┘              └─────────────┘    │
         └─────────────────────────────────────────────────┘

分层架构

  • Controller层: 处理HTTP请求,参数验证,调用Service

  • Service层: 业务逻辑处理,事务管理

  • DAO层: 数据访问,数据库操作

  • Model层: 数据模型定义

  • Middleware层: 认证、日志、CORS等中间件

🚀 系统预览

Snipaste_2025-07-16_01-30-57.png

Snipaste_2025-07-16_01-32-13.png

Snipaste_2025-07-16_01-32-59.png

Snipaste_2025-07-16_01-33-14.png

Snipaste_2025-07-16_01-33-45.png

Snipaste_2025-07-16_01-33-56.png

Snipaste_2025-07-16_01-34-36.png

Snipaste_2025-07-16_01-34-59.png

Snipaste_2025-07-16_01-35-19.png

Snipaste_2025-07-16_01-35-56.png

Snipaste_2025-07-16_01-36-07.png

Snipaste_2025-07-16_01-36-18.png

Snipaste_2025-07-16_01-36-35.png

Snipaste_2025-07-16_01-36-59.png

🔧 快速安装

1. 创建项目目录

mkdir mliev-dwzcd mliev-dwz

2. 创建 Docker Compose 文件

启动后,后台地址是 http://{ip}:{端口}/admin/ 默认安装后的账号:admin 默认安装后的密码:admin

创建 docker-compose.yml 文件:

version: '3.8'services:
  dwz-server:
    container_name: dwz-server
    image: docker.cnb.cool/mliev/open/dwz-server:latest
    restart: always
    ports:
      - "8080"  # 仅暴露给容器网络
    volumes:
      - "./config/:/app/config/"
    environment:
      - TZ=Asia/Shanghai
      - DATABASE_DRIVER=mysql
      - DATABASE_HOST=mysql
      - DATABASE_PORT=3306
      - DATABASE_DBNAME=dwz
      - DATABASE_USERNAME=root
      - DATABASE_PASSWORD=dwz123456
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=redis123456
      - REDIS_DB=0
      - AUTO_INSTALL=install
      - GIN_MODE=release
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy

  dwz-admin:
    container_name: dwz-admin
    image: docker.cnb.cool/mliev/open/dwz-admin-webui:latest
    restart: always
    ports:
      - "8081:80"
    depends_on:
      dwz-server:
        condition: service_healthy
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

  mysql:
    image: mysql:5.7
    container_name: dwz-mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=dwz123456
      - MYSQL_DATABASE=dwz
      - MYSQL_USER=dwz
      - MYSQL_PASSWORD=dwz123456
      - TZ=Asia/Shanghai
    volumes:
      - "./data/mysql_data:/var/lib/mysql"
    ports:
      - "3306"
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "dwz", "-pdwz123456"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  redis:
    image: redis:7-alpine
    container_name: dwz-redis
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - "./data/redis_data:/data"
    ports:
      - "6379"
    command: redis-server --requirepass redis123456
    healthcheck:
      test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5
      start_period: 10s

3. 创建配置目录

mkdir -p config
chmod 666 ./config

4. 启动服务

# 后台启动所有服务docker-compose up -d# 或者前台启动(可以看到日志)docker-compose up

5. 验证安装

# 检查服务状态docker-compose ps# 查看服务日志docker-compose logs -f

6. 页面配置

打开 http://{您的IP}:8081 进行继续配置(请注意8081端口放开)

🚀 二次开发

环境要求

  • Go 1.23+

  • MySQL 5.7+ 或 PostgreSQL 9.6+

  • Redis 6.0+

开发步骤

  1. 克隆项目

git clone https://github.com/your-org/dwz-server.gitcd dwz-server
  1. 安装依赖

go mod download
  1. 配置数据库

# 复制配置文件cp config.yaml.example config.yaml# 编辑配置文件,设置数据库连接信息vim config.yaml
  1. 初始化数据库

# 创建数据库表结构# 执行项目中的数据库迁移脚本
  1. 启动服务

go run main.go
  1. 验证服务

# 健康检查curl http://localhost:8080/health# API测试curl -X POST http://localhost:8080/api/v1/short_links \
  -H "Content-Type: application/json" \
  -d '{"original_url": "https://example.com"}'

Docker 部署

# 构建镜像docker build -t dwz-server .# 运行容器docker run -d \
  --name dwz-server \
  -p 8080:8080 \
  -v /path/to/config.yaml:/app/config.yaml \
  dwz-server

📖 API 文档

基础信息

  • 基础URLhttp://localhost:8080

  • 内容类型application/json

  • 认证方式: Bearer Token

主要接口

短链接管理

# 创建短链接POST /api/v1/short_links
{  "original_url": "https://example.com",  "domain": "short.ly",  "custom_code": "abc123"}# 获取短链接列表GET /api/v1/short_links?page=1&page_size=10# 获取短链接详情GET /api/v1/short_links/{id}# 更新短链接PUT /api/v1/short_links/{id}# 删除短链接DELETE /api/v1/short_links/{id}

用户管理

# 用户登录POST /api/v1/login
{  "username": "admin",  "password": "admin123"}# 创建用户POST /api/v1/users
{  "username": "newuser",  "password": "password123",  "email": "[email protected]"}

AB测试

# 创建AB测试POST /api/v1/ab_tests
{  "short_link_id": 1,  "name": "按钮颜色测试",  "variants": [
    {      "name": "红色按钮",      "target_url": "https://example.com/red"
    },
    {      "name": "蓝色按钮", 
      "target_url": "https://example.com/blue"
    }
  ]
}# 获取AB测试统计GET /api/v1/ab_tests/{id}/statistics

详细的API文档请参考 API.md

🔧 配置说明

配置文件结构

app:
  name: "DWZ Server"
  version: "1.0.0"
  port: 8080
  mode: "debug"database:
  driver: "mysql"
  host: "localhost"
  port: 3306
  database: "dwz_server"
  username: "root"
  password: "password"redis:
  host: "localhost"
  port: 6379
  password: ""
  database: 0middleware:
  operation_log:
    enable: true
    max_request_size: 1048576
    sensitive_fields: ["password", "token"]
    async_logging: true

环境变量

  • APP_PORT: 服务端口 (默认: 8080)

  • DB_HOST: 数据库主机

  • DB_PORT: 数据库端口

  • DB_USER: 数据库用户名

  • DB_PASSWORD: 数据库密码

  • REDIS_HOST: Redis主机

  • REDIS_PORT: Redis端口

🔍 性能特点

高性能设计

  • 并发优化: 支持高并发访问,经过性能测试验证

  • 缓存策略: 多级缓存机制,提升响应速度

  • 异步处理: 统计记录异步处理,不影响主流程性能

  • 连接池: 数据库连接池优化,减少连接开销

性能基准

  • 响应时间: 平均响应时间 < 10ms

  • 并发处理: 支持万级并发请求

  • 吞吐量: 单实例支持 10,000+ QPS

  • 可扩展性: 支持水平扩展,多实例部署

🛡️ 安全特性

数据安全

  • 敏感信息脱敏: 自动脱敏密码、Token等敏感信息

  • 访问控制: 基于Token的访问控制机制

  • 操作审计: 完整的操作日志记录

  • 数据加密: 敏感数据加密存储

系统安全

  • 防刷机制: 防止恶意刷取短链接

  • 访问限制: 支持IP访问频率限制

  • 输入验证: 严格的输入参数验证

  • 错误处理: 安全的错误信息返回

📊 监控与运维

健康检查

# 详细健康检查GET /health# 简单健康检查GET /health/simple

日志管理

  • 结构化日志: JSON格式日志输出

  • 日志级别: 支持不同级别日志配置

  • 日志轮转: 自动日志文件轮转

  • 监控集成: 支持主流监控系统集成

性能监控

  • 实时监控: 实时性能指标监控

  • 告警机制: 异常情况自动告警

  • 性能分析: 详细的性能分析报告

  • 容量规划: 基于历史数据的容量规划


扫描二维码推送至手机访问。

版权声明:本文由NeiHen.com发布,如需转载请注明出处。

本文链接:https://neihen.com/post/91.html

分享给朋友:

“开源项目-木雷短网址 - 企业级短链接服务平台” 的相关文章

响应式电脑手机维修类pbootcms网站模板

响应式电脑手机维修类pbootcms网站模板

(自适应手机端)响应式电脑手机维修类pbootcms网站模板PbootCMS内核开发的网站模板,该模板适用于电脑维修网站、手机维修网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机版,同一个后台,数据即时同步,简单适用!附带测试数据! 友好的seo,所有页面均...

(自适应手机版)PHP高端互联网建站公司网站模板

(自适应手机版)PHP高端互联网建站公司网站模板

(自适应手机版)高端互联网建站公司网站模板PbootCMS内核开发的网站模板,该模板适用于建站公司网站、网络公司网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机端,同一个后台,数据即时同步,简单适用!附带测试数据! 友好的seo,所有页面均都能完全自定义标题...

一站式开源、免费、功能齐全的SSL证书自动化管理神器

一站式开源、免费、功能齐全的SSL证书自动化管理神器

项目介绍ALLinSSL是一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理工具。它旨在简化SSL证书的管理流程,实现自动化运维,特别适用于中小型网站运维和多证书管理场景。一键自动化申请、续期、部署、监控所有 SSL/TLS 证书,支持跨云环境和多 CA (coding~),告别繁琐配...

开源免费、适合个人和小型团队在线文档系统

开源免费、适合个人和小型团队在线文档系统

MrDoc觅思文档,适合于个人和中小型团队的在线文档、知识库管理私有化部署方案,全面支持跨平台(Windows、macOS、Linux)和跨终端(Web、PC、手机)同步MrDoc 是基于Python开发的在线文档系统。MrDoc 适合作为个人和中小型团队的私有云文档、云笔记和知识管理工具...

Z-Blog 插件推荐

Z-Blog 插件推荐

响应式后台UI-永久免费LY_UEditorPlus编辑器 1.0.49图片灯箱(极简插件) 1.2简洁返顶插件 1.0 带QQ客服后台登录美化 1.0.6  id=24964...

XyPlayer 智能解析 v4.21

XyPlayer 智能解析 v4.21

XyPlayer 智能解析 ,是用PHP开发的一款拥有强大的后台管理,一次解析及资源站对接,线路切换,剧集列表,自动播放下集等功能的智能二次解析系统,由nohacks.cn 原创打造!主要特征特性无需安装,无需数据库,上传即用。强大的后台管理,支持修改各项配置。支持切换模版,内置两套模版,可随意切换...