背景
在日常学习过程中,经常需要把遇到的问题记录下来,记录自己的成长之路,所以一直想拥有一个完全属于自己的博客。其间也体验过wordpress,无奈可定制化性不高,索性自己实现一个。
简介
本博客系统前端使用React技术栈,后端使用Go技术栈。从运维到设计都是自己完成的。
mermaidCopy
graph LR
  A[Webpack 构建] --> B[生成带 ContentHash 的文件]
  B --> C{静态资源类型}
  C -->|JS/CSS/图片| D[OSS 存储]
  C -->|HTML| E[自建服务器]
  D --> F[CDN 加速]
  F --> G[用户访问]
  E --> G
技术选型
博客主页
https://zeus.zzfzzf.com
- 考虑到
seo和加载性能,使用服务端渲染框架nextjs开发 
- 公共组件提取到
@oc/designUI组件库中 
- 静态资源托管在阿里云cdn上
 
- 使用 
drone + K8S 持续集成 
管理后台(宙斯系统)
https://zeus.zzfzzf.com
- 使用从零搭建的webpack5+Typescript+React18方案
 
- UI组件库使用
antd 
- 静态资源托管在阿里云cdn上
 
- 使用 
drone + K8S 持续集成 
- 做了权限控制,可用测试账户
test/test访问 
服务端
- 使用
fiber框架开发 
- 数据库使用
mysql,缓存使用redis,全文搜索引擎和日志使用elasticsearch 
- 使用
rabbitmq和kafka处理异步任务 
- 文件上传至阿里云oss保存
 
- 消息通知使用飞书消息
 
- 服务监控使用 https://github.com/louislam/uptime-kuma
 
错误监控以及用户行为日志
- 使用gif上报日志到es中
 
- 采集方法参考此篇文章前端应用性能及错误监控设计方案
 
运维
- drone+ K8S 持续集成
 
- Grafana + Prometheus 对整个系统进行监控报警
 
数据库
- Mysql数据库生产环境使用阿里云rds服务
 
- redis、es等服务无备份只负责缓存和临时处理数据
 
特色
- 完全开源,可折腾性高。
 
- 博客支持暗黑模式,支持移动端
 
- 从组件库到后台管理系统都是从零搭的,实现了esbuild插件 babel插件处理组件库markdown转html文档,自动生成类型表格