2025年4月15日星期二

go-piblog

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(展示推荐和最新博文)和归档(展示所有历史博文)。每个页面都自动生成大纲,支持快速跳转。

image-20250211205852302

后端

采用go-zero(https://go-zero.dev/)框架,这是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

采用微服务架构,将博客软件拆分为多个服务模块,包括用户访问服务(biz)、管理服务(host)、缓存(Redis)、数据库(MongoDB),以便于管理和开发调试。由于服务数量较少,日志直接通过logx模块进行记录。

CLI

这是本软件最为特色的一点,可以通过一个cli来帮助上传博文文件到管理服务,非常方便日常的编写流程.

他会帮助管理者生成模板文件,检查博文文件是否符合规范并指出问题.

使用时需要再自动生成的配置中配置管理服务的url和TOKEN

image-20250211210843601

 

后日谈

感慨万千,由于自建博客的维护成本,现在又用回了blogspot, 这一次我大改了原先的模板文件,现在即使在国内也能获得较快的访问速度.

0 评论:

发表评论