Go-PiBlog
[产品]
介绍本博客网站所用的软件
本项目开始于24年的9月份,本文写于25年2月
本项目已经开源go-piblog
动机
之前我使用的是Google的Blogger(即blogspot),已经使用超过一年。然而,使用体验方面存在诸多问题。首先是网络条件的限制,众所周知,在国内无法访问Google的大部分服务。虽然通过自定义域名在灰色地带规避了这个问题,但新用户在加载页面时,仍然需要加载一些无法代理的组件(例如blogspot的评论),导致只有在加载超时后才能看到博客页面,这严重影响了用户体验。
此外,Blogger的博客编辑方式较为过时,尤其是在Markdown格式的使用方面。作为一个习惯了Markdown写作的用户,再去适应Blogger默认的HTML编辑工具显得有些笨重。虽然可以通过StackEdit网站将Markdown格式转换并上传至Blogger,但这一多余的步骤让我感觉非常繁琐。
因此,我需要一个能够便捷上传博文并支持Markdown格式的博客软件。经过一番搜索,我发现市面上并没有完全符合我需求的软件,于是我决定自己开发一款博客软件,满足我的个性化需求。
介绍
结构
技术选型
Web 框架:go-zero
IDL 语言:Proto3
RPC 框架:gRPC(go-zero)
ORM:自动生成(go-zero)
数据库:MongoDB,Redis
服务发现:etcd
前端:React + JavaScript
网页服务器:Nginx
容器编排:Docker Compose
前端
前端部分使用原生React和JavaScript,目前包含两个主要功能页面:Home(展示推荐和最新博文)和归档(展示所有历史博文)。每个页面都自动生成大纲,支持快速跳转。
后端
采用go-zero(https://go-zero.dev/)框架,这是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
采用微服务架构,将博客软件拆分为多个服务模块,包括用户访问服务(biz)、管理服务(host)、缓存(Redis)、数据库(MongoDB),以便于管理和开发调试。由于服务数量较少,日志直接通过logx模块进行记录。
CLI
这是本软件最为特色的一点,可以通过一个cli来帮助上传博文文件到管理服务,非常方便日常的编写流程.
他会帮助管理者生成模板文件,检查博文文件是否符合规范并指出问题.
使用时需要再自动生成的配置中配置管理服务的url和TOKEN
后日谈
感慨万千,由于自建博客的维护成本,现在又用回了blogspot, 这一次我大改了原先的模板文件,现在即使在国内也能获得较快的访问速度.
0 评论:
发表评论