[Day1] 技术选型

项目架构

这是第一版的系统架构,后续设计是以这个为基础考虑的,但不是终版!贴出来主要是方便理解技术选型。

技术选型

前端虽然会写,但是确实不擅长,所以直接采用Figma使用的React,并没有什么选择的余地。

框架

后端当然采用SpringBoot作为框架,小项目没必要特意采用SpringCloud。

但是还是会采用新版本来使用的 SpringBoot3.5.0、SpringCloud 2025.0.0.0、SpringCloud Alibaba 2023.0.3.2

大概就是这些版本,小版本号可能没对齐,但是问题不大。

注册中心

Nacos 3.0

没什么理由,足够熟悉、足够强大,要是真能发现什么问题就顺手提PR了。简单方便、开箱就能用,不用考虑几个软件组合起来。

数据库

PostgreSQL 15 + Redis

版本选择比较新的稳定版,Redis没啥好说的,你有问题他都不会有问题,有事自己身上先找找,开个玩笑,其实缓存确实没啥好选的,能用就行,况且Redis我也是读过源码的,足够熟悉了,而且这么多年的使用确实没有任何超过边界的需求。

重点是PostgreSQL。我用Q.A.的形式来讲解一下选型理由。

为什么选择PostgreSQL而不是MySQL?

最关键的一点是在于对于JSON的支持 ,前者对于JSON的支持十分高效,本项目由于对接AI居多,并且在开发过程中会由于提示词的频繁更改涉及到数据结构的变化,如果采用Mysql的固定表结构就会经常地震(纵向修改整个项目),字段存储json是一个比较好的方案,那么我自然会采用支持更好的PostgreSQL。另外PostgreSQL的一些分词、数据类型、生态、性能都是考虑过的点,但是实际上也算是加分项,并不是决定因素。

最后一个原因是因为我不了解PostgreSQL ,没错,我其实并没有使用过PostgreSQL,我看过许多文章,了解过许多特性,但是唯独没有实践过,于是我在简单用DEMO项目测试使用过之后发现和MySQL的学习过渡曲线较为平滑,就借此机会学习一下。

对象存储

MinIO

选用这个其实有点重了,实际上整理文章的时候发现开发过程中也注意到实际上没有这么大的文件存储需求,只是单纯的想学习一下。

搜索引擎

ElasticSearch 8.x

搭建知识库会用到(没还写呢),这个没什么好说的,没啥好选的。

消息队列

RabbitMQ 3.11

轻量并且和Spring结合好,配置少。

监控

Prometheus + Grafana + Micrometer

这个其实是一套十分成熟的监控体系了,本人工作中有足够的使用经验,所以还是十分熟悉的,但是后来整理文章的时候想到,其实也没有那么需要自定义,其实skywalking就够了。

服务间通信

同步调用:OpenFeign

异步消息:RabbitMQ(任务队列、事件通知)

配置管理:Nacos

对于OpenFeign后面会有大篇幅解释使用方式和选型理由,并不是单纯的给自己找事做。

总结

虽然内容不多,可能有些选型只是短短几个字,但是实际山背后是很多功能点的权衡,而且即便实现仔细考虑,在后续的开发过程中还是会后悔当初的一些选择,不过这都会成为下一次选型的经验(必可活用于下次)。

相关推荐
卢锡荣25 分钟前
乐得瑞Type-c接口产品描述
c语言·开发语言
晴天的雨.99225 分钟前
【C++】模板进阶
开发语言·c++·算法
余槐i10 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹10 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
死磕音视频11 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
顽疲13 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog13 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
思陌Ai算法定制14 小时前
医疗AI系统架构的安全护栏:一句提示让大模型有害医疗决策从16.6%降到10.1%
经验分享
m0_5873830015 小时前
无人自助拼豆系统核心功能开发与部署落地全流程实战指南
java·经验分享·后端·struts·架构
程序喵大人15 小时前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器