项目总体架构

本项目为网络安全学习平台的搭建,采用微服务架构模式,主要用go语言编写,配合前端三件套加上MYSQL数据库,Redis缓存,Kafka构建消息队列,Elastic Search做用户检索,gRPC做内网服务调用,Node做前端鉴权和统一API接口。项目总体结构如下:

整体安全架构 安全架构设计_整体安全架构

 

运行环境和技术选型说明:

前端:HTML,CSS,JavaScript

后端:Golang

数据库:MySQL8

缓存: Redis

消息队列: Kafka

搜索: Elastic Search

IDE: VS Code

服务器: 阿里云ECS学生服务器

 

依赖视图:

以评论系统为例,下图中显示了具体的业务流程

整体安全架构 安全架构设计_Redis_02

分解视图:

将项目的各个子业务拆分成微服务,并设置BFF聚合层,用来对业务逻辑的进一步封装,而底层微服务更具平台通用性,具体业务逻辑如下:

整体安全架构 安全架构设计_整体安全架构_03

部署视图:

本项目采用阿里云服务器,并采用docker进行容器部署

整体安全架构 安全架构设计_业务逻辑_04

 

执行视图:

整体安全架构 安全架构设计_Redis_05

 

 

人员分配:

整体安全架构 安全架构设计_整体安全架构_06

 

 

实现视图:源代码目录结构

 

整体安全架构 安全架构设计_业务逻辑_07

 

  • /api   API协议定义目录,包括protobuf文件以及生成的go文件
  • /config   配置文件模板或默认配置
  • /test    额外的外部应用测试程序和测试数据
  • /cmd   本项目的主干
  • /interface  对外的BFF服务层,接受来自用户的请求,暴露HTTP/gRPC接口
  • /service   对内的微服务,仅接受来自内部其他服务以及网关的请求
  • /admin  区别于service,为面向管理员的服务
  • /job  流式任务处理的服务
  • /internal    避免同业务下跨目录引用内部struct
  • /biz   业务逻辑的组装层,类似DDD的domain层,repo接口在这里定义,使用依赖倒置原则
  • /data  业务数据访问层,包含cache,DB等封装,实现了biz的repo接口
  • /service  实现了api定义的服务层,类似DDD的application层,处理DTO到biz实体的转换
  • /pkg   服务内部所依赖的第三方包

    

 

 

数据库设计:

 用户表:                  

整体安全架构 安全架构设计_业务逻辑_08

 

文章表:

整体安全架构 安全架构设计_业务逻辑_09

 

评论表

整体安全架构 安全架构设计_整体安全架构_10

 

系统概念原型的核心工作机制:

普通用户

  • 进行注册和登录
  • 查看题目列表
  • 选择题目作答
  • 查看题目的题解
  • 对进行评论
  • 发布自己的题解

  

管理员

  • 添加或删除题目
  • 修改题目的答案
  • 对评论进行管理
  • 对用户进行管理

 

总结

本项目结合最新的工程架构思想,如DDD领域驱动设计,微服务架构,并采用业界比较成熟的中间件,如MySQL,Redis等,进行了一次架构层面的尝试,还考虑了高并发时的情况,可以说,至少在架构层面,本项目具备一定的优势。