PHP 网站重构, Rust/ Python + PostgreSQL + astro+solid,大家觉得怎么样子 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Loser110
V2EX    程序员

PHP 网站重构, Rust/ Python + PostgreSQL + astro+solid,大家觉得怎么样子

  •  
  •   Loser110 12 小时 30 分钟前 577 次点击

    如题,传统 php 网站,mysql 数据库,一些 crud 等,pdf 、excel 等处理

    准备重构:
    后端 Rust+python 微服务处理 pdf 、excel 等
    前端 astro+solid
    数据库 PostgreSQL

    部署 Podman

    大家觉得如何,有没有更优化的组合。

    前几天我还在用 Go ,但是,因为感觉很多人倾向于 Rust 替代 Go ,所有把 Go 替换成 Rust 在试一试

    Actrace
        1
    Actrace  
       11 小时 13 分钟前   1
    感觉会把自己玩死。。。
    yekern
        2
    yekern  
       10 小时 46 分钟前
    我前端时间把 用 8 年的 laravel 5.x 的博客使用 go 重构了,对于使用 PHP 习惯的人来说,重构使用静态语言重构代码量太大了, 如果没有 AI 帮忙可能我写一半就不写了. 不像 laravel 很多都是封装好的开箱即用, 使用 go 很多都需要自己尝试组合然后写适配器 然后配置.
    我的建议是如果技术栈特别熟的话, 进行部分替换 别一下就全替换,工作量太大 就如上面说的 会给自己玩死,我的博客网站还不是很复杂呢

    ### 后端技术栈
    - **编程语言**: Go 1.21+
    - **Web 框架**: Gin
    - **ORM**: GORM
    - **数据库**: PostgreSQL 16
    - **缓存**: Redis 7
    - **搜索**: ZincSearch
    - **认证**: JWT
    - **容器化**: Docker + Docker Compose

    ### 前端技术栈
    - **前台网站**: Nuxt.js 3 + Vue 3 + TailwindCSS (SSR)
    - **后台管理**: Vue 3 + Element Plus + TypeScript

    ### 基础设施
    - **反向代理**: Caddy (自动 HTTPS)
    - **部署**: Docker Compose
    - **监控**: 结构化日志 + 健康检查

    ## 系统架构设计

    ### 整体架构图

    ```
    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │ 前台网站 │ │ 后台管理 │ │ API 服务 │
    │ (Nuxt.js SSR) │ │ (Vue3 SPA) │ │ (Go + Gin) │
    │ blog-frontend │ │ blog-admin │ │ blog-api │
    └─────────────────┘ └─────────────────┘ └─────────────────┘
    │ │ │
    └───────────────────────┼───────────────────────┘

    ┌─────────────────┐
    │ Caddy 反向代理 │
    │ (自动 HTTPS) │
    └─────────────────┘

    ┌─────────────────────────────────────┐
    │ │ │
    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │ PostgreSQL 16 │ │ Redis 7 │ │ ZincSearch │
    │ (数据库) │ │ (缓存) │ │ (搜索引擎) │
    └─────────────────┘ └─────────────────┘ └─────────────────┘
    ```
    Loser110
        3
    Loser110  
    OP
       10 小时 37 分钟前
    @yekern 当然是逐步替换,一下子全部替换开发就停滞了,写好一个,替换一个。一键部署
    Loser110
        4
    Loser110  
    OP
       10 小时 36 分钟前
    @yekern 没有 AI 肯定搞不了,正是因为 AI ,才可以尝试其他有挑战性的语言
    Loser110
        5
    Loser110  
    OP
       10 小时 21 分钟前 via Android
    @yekern log 你是怎么统一化弄的呢,目前还没有头绪
    yekern
        6
    yekern  
       10 小时 18 分钟前
    @Loser110 #5 为 GIN 还有 GORM 还有其他使用日志的地方 根据 GIN 或者 GORM 的接口要求 分别实现,然后输出统一的格式
    mengdodo
        7
    mengdodo  
       10 小时 13 分钟前
    @yekern show me your blog
    yekern
        8
    yekern  
       10 小时 12 分钟前
    @mengdodo https://esc.show
    2024
        9
    2024  
       9 小时 53 分钟前
    我是把 go 项目直接接入 laravel telescope; 请求内的 log 和 sql 都和 laravel 一样查看调试

    https://github.com/go-home-admin
    Loser110
        10
    Loser110  
    OP
       9 小时 51 分钟前
    @2024 这是有想法的
    2024
        11
    2024  
       9 小时 45 分钟前
    @Loser110 #10 根据数据库表信息,直接生成 orm 代码,代码编写也和 laravel 一样,同时用多语言开发项目,就不会混乱...
    Smileh
        12
    Smileh  
       9 小时 36 分钟前
    重构的目的是什么
    Loser110
        13
    Loser110  
    OP
       9 小时 18 分钟前 via Android
    @Smileh 更快,更少的服务器消耗
    Loser110
        14
    Loser110  
    OP
       9 小时 16 分钟前 via Android
    @2024 我用微服务架构,podman 一键部署,维护开发不成问题,难点在于上手,php 写这么多年了,转 go 很不适应,希望 rust 能简单些
    2024
        15
    2024  
       9 小时 6 分钟前
    @Loser110 #14 如果 go 都不适应,那么 rust 一定更加不适应
    Loser110
        16
    Loser110  
    OP
       9 小时 4 分钟前 via Android
    @2024 但是学了 go 对 rust 有帮助哈,在这基础上学 rust 就相对轻松些,这两差别小。并且,感觉更喜欢 rust 的语法,有点像 js
    yjhatfdu2
        17
    yjhatfdu2  
       2 小时 16 分钟前 via iPhone
    当然是考虑一下新一代的 next.js ,新一代的 php
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1540 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 16:46 PVG 00:46 LAX 08:46 JFK 11:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86