做了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 别用太多私有协议,框架别耦合太深。哪天要换,能换得动。


后端这行,技术栈迭代挺快的,但底层原理变化慢。把网络、操作系统、数据结构、分布式系统这些基础打扎实了,换了新框架也是两周就能上手的事。

框架是工具,而你,才是真正的工程师。

更多推荐