2026 后端技术栈最全总结:9年实战选型与踩坑
做了9年后端,大厂6年,独立3年。这篇文章把我用过的、踩过的、现在还在用的后端技术栈全梳理了一遍。不是名词科普,是选型建议,每个工具都带推荐理由和坑。
技术栈这东西没有最好的,只有适合你的。
一、编程语言
|
语言 |
适用场景 |
我的评价 |
|
Java |
中大型业务系统、金融 |
生态最全,人最多,慢但稳。JVM 调优是必修课 |
|
Go |
高并发微服务、网关、中间件 |
我现在的主力。启动快、并发模型简单、部署就一个二进制 |
|
Rust |
性能敏感、底层中间件 |
学习曲线陡,但写完基本不会有运行时崩溃。值得投入 |
|
Python |
数据处理、AI、脚本 |
别拿它写高并发 Web 服务,GIL 会让哭 |
|
Node.js |
BFF、实时应用、SSR |
事件循环玩明白很爽,玩不明白内存泄漏到怀疑人生 |
|
C# |
企业内网、游戏后端 |
.NET 跨平台之后其实很强,但国内生态一般 |
|
Kotlin |
JVM 生态、Android 后端 |
Java 的更好版本,协程比 Java 的虚拟线程早了好几年 |
我的选型:新项目默认 Go,老系统维护 Java,性能瓶颈组件用 Rust 重写,数据处理用 Python。
一句话:别用语言信仰绑架自己,什么场景用什么,成年人不做选择题。
二、Web 框架
Java 系
- Spring Boot:行业标准,生态无敌,但启动慢、内存吃得多。微服务多了启动时间能让你等咖啡。
- Quarkus / Micronaut:云原生方向,启动快、内存小,但生态差 Spring 一截。新项目可以试,老项目别折腾。
Go 系
- Gin:用得最多,文档全,但设计偏老派。
- Echo:和 Gin 差不多,API 更干净一点。
- Fiber:基于 fasthttp,性能炸裂,但 fasthttp 不兼容 net/http 标准库,中间件生态有坑。
- go-zero:国内开源的微服务框架,代码生成做得好,自带服务治理。国内项目可以考虑。
- Hertz:字节开源的,性能强,但社区还在起步。
我的选型:简单 API 用 Gin,微服务用 go-zero,别折腾 Fiber 那点性能差异。
Python 系
- FastAPI:现在首选,类型提示 + 自动文档,体验比 Flask 好太多。
- Django:老项目维护,新项目别开了,太重。
Node.js 系
- NestJS:企业级,装饰器风格像 Angular,适合大团队。
- Express / Fastify:小项目够用,Fastify 性能更好。
三、数据库
关系型
|
数据库 |
评价 |
|
PostgreSQL |
我的首选。JSON 支持、全文检索、地理信息、扩展生态(pgvector、TimescaleDB),一个库能干很多事 |
|
MySQL |
国内最普及,运维生态成熟。但 JSON 支持和窗口函数比 PG 差一截,8.0 之后才好点 |
|
OceanBase |
国产分布式,金融场景在用。贵,但能扛 |
选型:新项目我全上 PostgreSQL。MySQL 只在团队惯性或者存量系统时用。
NoSQL
- Redis:缓存必备,不用多说。但别拿它当主库,持久化机制再好也是缓存,数据丢了别哭。
- MongoDB:文档型,灵活但事务弱。用不好就是灾难,用好了确实省事。我一般只在日志、配置这类弱事务场景用。
- DynamoDB / CosmosDB:云托管 NoSQL,海外项目可以用,国内访问就算了。
NewSQL / 分布式
- TiDB:MySQL 协议兼容,水平扩展,HTAP。国内大厂在用,运维门槛不低。
- CockroachDB:PG 协议兼容,强一致性。海外生态好一点。
向量数据库
- pgvector:PG 插件,已有 PG 的直接加,别单独引一个向量库。
- Milvus:专门做向量的,规模大了再用。
- Qdrant:Rust 写的,性能好,社区活跃。
我的选型:AI 场景先用 pgvector 起步,量大了再上 Milvus。
四、缓存
就两个选择。
Redis:99% 的场景用它。主从、哨兵、集群三件套,社区方案成熟。别用 Memcached 了,功能少、不支持持久化,Redis 完全覆盖。
Redis 的坑主要在:
- 大 key 问题:单个 key 超过 10KB 就要注意,bigkey 会导致阻塞
- 缓存穿透/击穿/雪崩:布隆过滤器、互斥锁、随机过期时间,三板斧
- 别用 KEYS 命令,用 SCAN
五、消息队列
|
MQ |
适用场景 |
踩坑点 |
|
Kafka |
日志、流处理、高吞吐 |
吞吐王,但运维重,topic 多了 zk 会炸(新版用 KRaft 好点了) |
|
RabbitMQ |
业务消息、延迟队列 |
功能全,但 Erlang 写的,出问题排查费劲 |
|
RocketMQ |
国内电商、金融 |
阿里出品,事务消息做得好,文档中文友好 |
|
Pulsar |
云原生、多租户 |
架构先进但生态小,生产用的人不多 |
|
NATS |
轻量、边缘 |
小而美,适合 IoT 或者内部通信 |
我的选型:日志和流用 Kafka,业务消息用 RocketMQ,小项目不想运维就别上 MQ,Redis Stream 凑合用。
六、搜索引擎
- Elasticsearch:老大哥,功能全生态好,但吃内存吃得狠,集群运维是体力活。
- OpenSearch:ES 的开源分叉,AWS 在推。功能基本一样,选哪个看立场。
- Meilisearch:轻量,单机够用,小项目首选。Go 写的,部署一个二进制就行。
- Typesense:和 Meilisache 定位类似,性能也不错。
我的选型:小项目用 Meilisearch,大项目老老实实 ES。别用 MySQL 的全文索引扛搜索,扛不住。
七、RPC 与微服务通信
- gRPC:跨语言首选,Protobuf 性能好。但浏览器不直接支持,要配 gRPC-Web 或者 Connect。
- Dubbo:国内 Java 生态标配,3.x 之后支持 Triple 协议(基于 HTTP/2)。
- Thrift:老了,新项目别选。
Service Mesh 方向:
- Istio:功能全但重,学习曲线陡,小团队别碰。
- Linkerd:轻量,但功能少。
- 实际感受:Service Mesh 这两年热度降了,大部分团队用不上这复杂度。
八、注册中心与配置中心
- Nacos:阿里开源,注册+配置二合一,国内用得最多。2.x 之后性能提升明显。
- Consul:HashiCorp 出品,功能全但国内用得少。
- etcd:K8s 底层用的,强一致性,但功能少,一般当组件用不当产品用。
- Apollo:携程开源,纯配置中心,权限管理做得细。
- Zookeeper:别用了,维护成本高,除了 Kafka 和老 HBase 还在依赖,新项目没理由选它。
我的选型:注册+配置用 Nacos 一个搞定。如果只想要配置中心,Apollo 更专业。
九、API 网关
- Kong:基于 OpenResty,插件多,生态好,但 Lua 二开门槛高。
- APISIX:国产,也基于 OpenResty,插件用 Lua/Go/Java 都能写,国内文档好。
- Spring Cloud Gateway:Java 生态,和 Spring 全家桶无缝,性能一般。
- Envoy:C++ 写的,性能炸裂,但配置复杂,一般是 Service Mesh 的数据面。
- Traefik:Go 写的,自动服务发现,Docker/K8s 场景好用。
我的选型:K8s 环境用 APISIX,Spring 生态用 Spring Cloud Gateway。
十、可观测性
三件套:日志、指标、链路。
日志
- ELK(Elasticsearch + Logstash + Kibana):老方案,重。
- Loki + Grafana:轻量,日志存对象存储,省钱。我的首选。
- ClickHouse 存日志:查询快,适合海量日志分析。
指标
- Prometheus + Grafana:标配,没得选。PromQL 学一下,不难。
链路追踪
- OpenTelemetry:标准,现在新项目都按这个接。
- Jaeger:Uber 开源,OpenTelemetry 后端首选。
- SkyWalking:国产,APM 功能全,Java 生态集成好。
- Zipkin:老牌,功能够用但社区没前面几个活跃。
我的组合:Loki + Prometheus + Grafana + OpenTelemetry + Jaeger。一套 Grafana 面板全看了。
十一、容器与编排
- Docker:必备,不解释。
- Kubernetes:编排之王,复杂但标准。学曲线陡,但值得。
- Nomad:HashiCorp 的,比 K8s 简单很多,小团队可以试。
- K3s:轻量 K8s,边缘和单机场景好用。
实话:K8s 是现在的事实标准,但不是所有团队都需要。十来个服务用 Docker Compose 也跑得好好的,别为了用 K8s 而 K8s。
十二、CI/CD
- GitLab CI:和 GitLab 集成好,.gitlab-ci.yml 够用。
- GitHub Actions:开源项目首选,marketplace 插件多。
- Jenkins:老古董但能打,插件生态最全,UI 难用。
- ArgoCD:GitOps 方向,K8s 原生,声明式部署。K8s 玩明白了上这个。
- Tekton:K8s 原生 CI/CD 框架,灵活但配置繁琐。
我的选型:代码托管在哪用哪个 CI(GitLab CI 或 GitHub Actions),K8s 部署用 ArgoCD。
十三、对象存储
- MinIO:自部署首选,S3 兼容,Go 写的,轻量。
- Ceph:重,但能扛大规模,运营商和大厂在用。
- 云厂商 S3 / OSS / COS:能用云就用云,别自己运维存储集群。
- Cloudflare R2:出流量免费,海外项目省钱利器。
十四、任务调度
- XXL-JOB:国内用得最多,中文文档全,轻量。够用。
- Temporal:工作流引擎,复杂业务流程用这个,代码即流程。学习曲线但值得。
- Airflow:数据领域标配,别拿来跑业务定时任务。
- Quartz:单机够用,分布式别折腾了。
我的选型:简单定时任务 XXL-JOB,复杂业务工作流 Temporal。
十五、分布式事务
- Seata:阿里开源,AT 模式侵入小,但性能一般。TCC 要手写补偿。
- DTM:Go 写的,支持 Saga/TCC/Xa,轻量。
- 本地消息表 + MQ:最朴素也最稳的最终一致性方案,我优先选这个。
大实话:分布式事务能不碰就不碰。把业务设计成不需要分布式事务,比用任何框架都强。
十六、数据库中间件(分库分表)
- ShardingSphere:Apache 顶级项目,JDBC 和 Proxy 两种模式,Java 生态首选。
- Vitess:YouTube 开源,MySQL 分片,K8s 生态友好。
- MyCat:别用了,社区基本停了。
忠告:分库分表是最后手段。先垂直拆、先加索引、先读写分离、先上 TiDB,都试过了再分。
十七、安全与认证
- OAuth 2.0 / OIDC:标准协议,该用用。
- JWT:无状态令牌,别塞太多数据进去,令牌越大每次请求越慢。
- Keycloak:开源 IAM,功能全但重,企业级选这个。
- Casbin:权限模型库,Go/Java/Node 都有,RBAC/ABAC 都支持。
- Auth0 / Clerk:托管方案,省事但贵,海外项目可以。
十八、压测
- wrk / wrk2:轻量,命令行压 HTTP,够快。
- k6:Go 写的,脚本用 JS,报告好看,我现在的主力。
- JMeter:老牌,功能全但重,GUI 难用。
- Locust:Python 写脚本,灵活但性能一般。
我的选型:日常压测 k6,简单接口验证 wrk。
十九、大数据与流处理
- Flink:流处理之王,实时计算首选。但运维重,小项目别上。
- Spark:批处理标配,数据团队在用。
- ClickHouse:OLAP 神器,查询快得离谱。日志、报表、实时大屏都靠它。
- Doris:国产 OLAP,StarRocks 是它的商业分支,兼容 MySQL 协议。
我的选型:实时大屏和报表直接 ClickHouse,复杂流处理上 Flink。
二十、向量与 AI 基础设施
- pgvector:PG 插件,起步首选。
- Milvus:规模大了再上。
- Ollama:本地跑 LLM,原型验证用。
- vLLM:LLM 推理服务,PagedAttention 性能强。
- LangChain / LlamaIndex:LLM 应用框架,做 RAG 用。但抽象层太厚,复杂场景建议自己写。
技术栈选型的几条原则
写这么多,最后说几条我踩了 12 年坑总结的选型原则。
第一,用你团队最熟的。 技术栈最大的成本不是许可证费,是学习成本和踩坑成本。团队都会 Java,你就别非要上 Go 证明自己前卫。
第二,能用云的别自建。 数据库、消息队列、对象存储,云厂商都托管了。你自建省的那点钱,不够运维一个半夜被叫起来的人。
第三,复杂度是债。 Kafka、K8s、Service Mesh、分布式事务,每一个都是运维成本和故障源。能用简单方案解决的,别上复杂方案。"我们用了 K8s" 不是技术实力的证明,"我们的服务 99.99% 可用" 才是。
第四,看社区不看厂商。 选开源项目看 GitHub 活跃度、issue 响应速度、发版频率。厂商主导的项目一旦战略调整就会停更,参考 Service Mesh 这两年的降温。
第五,留退路。 数据库别用太多方言特性,MQ 别用太多私有协议,框架别耦合太深。哪天要换,能换得动。
后端这行,技术栈迭代挺快的,但底层原理变化慢。把网络、操作系统、数据结构、分布式系统这些基础打扎实了,换了新框架也是两周就能上手的事。
框架是工具,而你,才是真正的工程师。
更多推荐
所有评论(0)