《2009年的老古董笔记本,我是如何用它部署Go + Python高性能Web服务的》

记一次基于 2009 年老古董笔记本的极限部署尝试

1. 项目背景

我在以往学习过Python和Java的后端服务,虽然这两种语言在后端开发上十分的便利与高效,拥有大量的开源库可以实现日常应用开发,但是由于这两种语言本身的原因(如 Python 的 GIL 全局解释器锁,以及 JVM 庞大的内存开销),运行起来极其笨重,十分消耗计算机资源。对于大型的项目追求于性能稳定的要求我们倒也无可厚非,但是我们还有一部分是小规模的模块添加以及小规模的数据计算,或是在一些小型机等(或是一些古老的旧设备,如我此次项目实验的设备)的运行,因此使得我对高效高性能的Web服务十分感兴趣。

与此同时我也十分感兴趣于高性能计算。

2. 设备参数

  • 设备型号:Lenovo IdeaPad V450(2009年上市)
  • 操作系统:Ubuntu 18.04.6 LTS (内核 4.15.0-213-generic)
  • CPU:Intel Core 2 Duo T6600 (双核双线程,2.20GHz)
  • 内存:3GiB DDR2 667MHz(1GiB + 2GiB 组合)
  • 硬盘:WDC WD3200BEVT (西部数据 320GB 5400转 2.5寸 SATA 机械硬盘)
  • 显卡:NVIDIA GeForce G 105M (使用nouveau开源驱动)
  • 有线网卡:Broadcom NetLink BCM5906M (100Mbps)
  • 无线网卡:Intel PRO/Wireless 5100 AGN

3. 技术选型

  • 前端 :直接使用的Go(html/template)的页面渲染。(并未使用Vue/React前端)
    • 原生JavaScript 交互逻辑 (无框架、无打包工具)
    • 原生CSS 样式实现(JS与CSS都是Go内部路径注册,在template的html中引用实现)
  • 后端 :基于Go语言的Gin Web框架,用来实现路由的管理
    • 以 GORM作为中间件实现逻辑计算与数据库之间的调度
  • 数据库:此次项目以SQLite作为数据库,拓展升级也可更换MySql以及PgSql。

4. 目录结构

text 复制代码
gin/
├── main.go
├── controllers/     # 路由处理
├── models/          # 数据模型
├── views/           # HTML 模板
├── sqlconfig/       # 数据库配置
├── static/          # CSS / JS
└── app.db           # SQLite 数据库

5. 专项计算

  • 语言:Python 3.10
  • HTTP框架:FastAPI
  • ASGI 服务器:uvicorn
  • 五运六气计算:WYLQ 库
  • 历法底层(WYLQ 依赖) :sxtwl
  • 天文计算(WYLQ 依赖) :ephem

6. 部署

  • 服务器操作系统:Ubuntu 18.04.6 LTS (内核 4.15.0-213-generic)
  • 网络实现:Cloudflare Tunnel(内网穿透至公网访问)

7. 开发环境

  • 操作系统:Windows
  • CPU:12th Gen Intel(R) Core(TM) i9-12900H(2.50 GHz)
  • 内存:16GB DDR5 4800MHz (8GB+8GB)

8. 最终展示结果

edt-clearing-arrive-convicted.trycloudflare.com

注:当前使用 Cloudflare 临时隧道,重启服务后链接会变动,后续计划绑自定义域名。

相关推荐
for_ever_love__8 小时前
上下文工程:比提示词工程更重要的事
llm·agent·提示词·设计·context·engineering·上下文工程
Percy_kk1 天前
AI Agent 开发实践:从手写 ReAct 到框架选型
agent·设计
高晶1 天前
Android 计算器开发实战:从界面设计到核心逻辑
程序员·设计
易知微EasyV数据可视化1 天前
会插卡片的编辑器:在 Agent 输入框里混排文字与结构化内容
人工智能·经验分享·编辑器·agent·设计
广州智造2 天前
Radioss时间步长(Time Step)
前端·设计·cad·建模·cae·radioss
用户6919026813395 天前
LangChain 与 LangGraph:从「链」到「图」,一次讲清它们是什么、什么关系
面试·架构·设计
广州智造15 天前
Radioss复合材料使用的单元属性
前端·设计·cad·建模·cae·radioss
仿生狮子19 天前
实现近乎免费之后,设计工程师还剩什么
前端·后端·设计
sarasuki1 个月前
工具设计的坏味道:什么样的定义会让模型乱调
人工智能·agent·设计