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

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

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

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

核心功能

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

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

  • 链接管理: 完整的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发布,如需转载请注明出处。

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

分享给朋友:

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

wordpress主题Zibll子比主题 V7.6 免授权无限制破解版及安装教程

wordpress主题Zibll子比主题 V7.6 免授权无限制破解版及安装教程

wordpress主题Zibll子比主题专为阅读类网站开发,设计简约优雅、功能全面。UI界面模块化、多种布局、多种显示效果可选择,高度自由化,更容易搭配出自己喜欢的网站。支持付费阅读,付费下载,付费视频的支付功能和完善用户VIP会员系统加上强大的模块化编辑器工具,为站长提供有力的生产力。整体的开发理...

PHP客户资料管理系统网站

PHP客户资料管理系统网站

前言:52破解论坛某男人的媳妇累积客户太多了,之前一直用表格存储,好多时候都找不到放在那里了,用了好多市面上的客户管理系统,都不太适合她,所以我打算直接用ai给写个,这样比较适合她。AI生成的过程已经快逼死我了,一次性又没办法写完,前前后后修改老是会忘记之前修改的文件,感觉还是不太够智能,还是得自己...

Xianyu AutoAgent - 智能闲鱼客服机器人系统

Xianyu AutoAgent - 智能闲鱼客服机器人系统

项目介绍XianyuAutoAgent 是一个开源免费(GPL-3.0 license)、功能强大、高度可定制的闲鱼AI值守解决方案。通过集成智能对话引擎、业务功能矩阵和多专家协同决策等技术,该项目为闲鱼用户提供了更加智能、便捷的交易体验。同时,项目采用了先进的技术栈和模块化设计,便于用户根据自己的...

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

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

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

BillionMail - 开源邮件服务器、电子邮件营销平台

BillionMail - 开源邮件服务器、电子邮件营销平台

用于更智能营销活动的开源 MailServer、NewsLetter、电子邮件营销解决方案什么是 BillionMail?BillionMail 是一个未来的开源邮件服务器、电子邮件营销平台,旨在帮助企业和个人轻松管理他们的电子邮件活动。无论您是发送时事通讯、促销电子邮件还是交易消息,此工具都可以完...

XyPlayer 智能解析 v4.21

XyPlayer 智能解析 v4.21

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