大家好,我是程序员鱼皮。从夯到拉,锐评 28 个后端技术,一口气说完!
正式开始前先郑重声明,每个后端技术都有自己的应用场景,很多时候没办法完全公平地去比较。本期鱼皮只是希望帮大家学到知识、认识更多的技术。而且由于我是个学 Java 的,也会带有一定的主观性,某些跟语言绑定的技术我会以 Java 生态作为例子。
大家也可以在评论区打出自己的评价,看看跟我想的是否一样。
⭐️ 本文对应视频版:https://bilibili.com/video/BV1HiqQBgEoN
评价维度
接下来我将从 5 个维度来评价这些后端技术:
-
实用性:能解决多少实际问题
-
生态成熟度:包括社区活跃度、文档完善度、第三方库丰富度等
-
学习成本:上手难度和学习曲线
-
性能表现:比如吞吐量、响应速度、资源占用等
-
维护成本:后期迭代和排查问题的难度
作为开发者,我个人最看重的是实用性和生态成熟度。毕竟技术是用来解决问题的,生态好意味着遇到问题能很快找到解决方案。
后端技术从夯到拉排行榜
1、Spring 【顶级】
上来就是重量级,这是 Java 后端开发的绝对霸主,企业级应用的基石。Spring 框架统治 Java 企业级开发十几年,IoC 容器和 AOP 编程思想深入人心,从 Web 开发、数据访问、批处理到安全认证,Spring 全家桶都能给你安排的明明白白。国内大厂标配,社区活跃度非常好,出了 Bug 很快就能找到解决方案。但缺点是传统的 Spring 配置比较繁琐,给到 顶级 。
第二个:Spring Boot 【夯】
Spring 的亲儿子,Java 快速开发的不二之选。约定大于配置,能够轻松整合 Spring 全家桶,开箱即用。自动配置省心省力,内嵌服务器一键启动,几行代码就能跑起来一个 Web 应用。缺点是依赖太多,打包文件动辄上百 M,而且启动速度慢、内存占用高。不过现在有了 GraalVM 原生镜像技术,这些问题正在被改善,考虑到 Java 后端标配的江湖地位,必须给到 夯 !
3、EJB 【拉】
全名 Enterprise JavaBeans,企业级 Java 的黑历史。当年 Sun 公司力推的重量级框架,配置复杂到离谱,开发效率低、性能还差。正是因为 EJB 太难用,才催生了 Spring 框架的诞生。现在已经被淘汰,毫无疑问给到 拉 !
第四个:Docker 【夯】
容器化技术的绝对王者,解决环境一致性问题的神器。Docker 把应用和环境打包在一起,开发环境和生产环境完全一致,再也不用听 "在我机器上能跑啊" 这种鬼话。它很轻量、秒级启动、资源占用少,是微服务架构的基石,也是 CI/CD 的好搭档。Docker 的学习曲线友好,文档齐全,社区活跃到爆炸。唯一的缺点可能就是 Windows 上体验稍差,但瑕不掩瑜,给到 夯 !
第五个:Kubernetes 【顶级】
容器编排领域的霸主,云原生的核心技术。简称 K8s,是管理成百上千个 Docker 容器的神器。自动扩缩容、服务发现、负载均衡、滚动更新全都给你安排的明明白白,大厂标配。但学习难度较大,配置文件能把人绕晕,小项目没必要用它,适合大规模集群和复杂场景,给到 顶级 。
第六个:Redis 【夯】
高性能键值存储数据库,缓存界的扛把子,快到飞起。它支持字符串、列表、哈希、集合、有序集合五大数据结构,常用于实现缓存、分布式锁、排行榜等。它的核心处理逻辑采用单线程,持久化方案成熟。唯一要注意的是内存成本和数据一致性问题,必须给到 夯 !
第七个:Memcached 【NPC】
缓存界的老前辈,简单的分布式内存缓存系统。它简单纯粹,就是个键值存储,性能也还不错。但是功能太单一,只支持字符串、没有持久化,没有主从复制、扩展性差。现在基本被 Redis 全面碾压,只有一些老项目还在用,给到 NPC 。
第八个:MySQL 【夯】
关系型数据库的常青树,国内使用率最高的数据库。ACID 特性保证数据安全,事务支持完善,开源免费,中小企业首选。虽然复杂查询性能一般、功能扩展性不如 PostgreSQL,但凭借超高的普及度和成熟的生态,给到 夯 !
9、PostgreSQL 【顶级】
据说是功能最强大的开源数据库。支持 JSON、数组、地理信息、向量(通过插件实现)等复杂类型,扩展性极强,适合复杂查询和数据分析场景。性能和稳定性都不输 MySQL,甚至在某些场景更优秀,但是我这里只能给到 顶级 。
我知道有同学不服,从技术角度看,PostgreSQL 确实更胜一筹,但是目前国内生态不如 MySQL,遇到问题后解决的成本更高,学习难度也更大。虽然 AI 给 PostgreSQL 助力了,但再三考虑现在还是只能给到 顶级 。
第十个:MongoDB 【人上人】
NoSQL 文档数据库的代表,存储 JSON 格式数据,Schema 非常灵活,查询语言直观,容易上手,横向扩展也很容易,适合快速迭代的项目。但事务的处理能力上还是不如传统关系型数据库成熟,适合内容管理、日志存储等不需要强一致性的场景,给到 人上人 。
第十一个:Nginx 【夯】
Web 服务器和反向代理的王者,高性能 HTTP 服务器。它的高并发处理能力强悍,占用资源少,性能吊打 Apache,使用场景也很多,负载均衡、静态资源服务、SSL 卸载样样在行。学习成本也不高,在我这给到 夯爆了 !
第十二个:RabbitMQ 【人上人】
功能完善的经典消息队列。基于 AMQP 协议,支持多种消息模式,路由灵活;自带管理界面,监控方便。但性能不如 Kafka,吞吐量有限,适合中小规模的异步处理场景,给到 人上人 。
第十三个:Kafka 【顶级】
那么下一个自然是消息队列的性能怪兽 Kafka,分布式流处理平台。吞吐量很大,百万级 TPS 轻松拿下,而且采用分布式架构,可靠性高,是日志收集 / 流式计算的标配、大数据场景的基础设施。不足之处是运维复杂,学习成本高,消息顺序性和重复消费需要仔细处理,给到 顶级 。
14、Elasticsearch 【夯】
搜索引擎界的一哥,分布式搜索和分析引擎。基于 Lucene,全文搜索速度贼快;采用分布式架构,能应对 PB 级数据。除了搜索外,还能用来做日志分析、数据可视化,是 ELK 技术栈的核心。不足之处是资源占用较高,有一定的调优难度。但毕竟是搜索场景必备技术,给到 夯 !
15、Git 【夯】
版本控制的绝对霸主,分布式代码管理工具。它采用分布式架构,每个开发者本地都有完整的代码仓库,分支管理能力强大,合并冲突的处理机制完善。再加上 GitHub、GitLab 等平台的生态加持,已经成为开发者必备技能,不会 Git 基本就告别开发了,给到 夯爆了 !
第十六个:SVN 【拉】
上古时代的集中式版本管理系统。采用集中式架构,必须联网才能提交代码,分支管理能力弱,处理合并冲突比较麻烦。Git 出来之后被按在地上反复摩擦,现在还在用 SVN 的基本都是十年前的老项目。真的该淘汰了,给到 拉 !
第十七个:gRPC 【顶级】
Google 出品的高性能 RPC 框架,微服务间通信的利器。RPC 就是远程过程调用,让你调用远程服务就像调用本地方法一样简单。
gRPC 基于 HTTP/2 协议,性能强悍,使用 Protocol Buffers 序列化,使得体积小速度快,流式传输支持也很完善;而且还支持多种编程语言,是跨语言服务调用的首选,给到 顶级 。
第十八个:Dubbo 【人上人】
阿里开源的高性能 RPC 框架,国内微服务的老大哥。性能优秀,支持多种通信协议和负载均衡策略,服务治理功能也很完善。国内文档和案例还算丰富,但是国外用的少,给到 人上人 。
19、Nacos 【人上人】
阿里出品的服务发现和配置中心,微服务治理的新秀。它提供了友好的配置管理界面,支持多种服务注册模式,灵活性高,是 Spring Cloud Alibaba 的核心组件。但跟 Dubbo 一样,国际化程度不够,给到 人上人 。
20、Zookeeper 【NPC】
分布式协调服务的老前辈了,能够实现配置管理、服务发现、分布式锁。具有强一致性保证,数据可靠。但缺点是运维复杂,并且在大规模集群下写性能和选举恢复速度一般。随着 Kafka 转向 KRaft 架构以及 etcd 在云原生领域的霸权,ZK 正在慢慢退居二线,只能给到 NPC 。
21、etcd 【顶级】
Go 语言编写的分布式键值存储,云原生时代的协调服务。它是 Kubernetes 的御用存储,基于 Raft 协议实现,有强一致性保证,性能比 Zookeeper 好。它的 API 简洁,同时支持 HTTP 和 gRPC 接口。缺点是国内生态一般,中文资料相对较少。但作为云原生场景首选,我相信它火起来只是时间问题,给到 顶级 。
22、Prometheus 【人上人】
开源的系统监控和告警工具集。采用 Pull 模式采集数据,配置灵活,提供 PromQL 查询语言,还可以和 Grafana 可视化工具完美搭档。但长期存储需要额外方案,而且告警规则配置有点繁琐,维护成本确实不低。考虑到监控的重要性和云原生的趋势,给到 人上人 。
第二十三个:Jenkins 【人上人】
CI/CD 的老大哥,持续集成的经典工具。流水线配置灵活,插件生态非常丰富,开源免费,社区活跃。但问题也很明显,界面老旧,用户体验一般;配置复杂,新手容易懵;而且资源占用较高。虽然 Jenkins 仍然是企业级 CI/CD 的主流选择,但很多开发者去拥抱 GitHub Actions、GitLab CI 这些体验更好的新工具了,给到 人上人 。
第二十四个:GraphQL 【NPC】
API 查询语言的新贵,灵活的数据获取方案。客户端可以按需获取数据,一个接口就能搞定所有查询,告别 RESTful 的接口爆炸问题,适合前端复杂的项目使用。
但学习成本高,在国内应用场景相对有限,大部分公司还是用 RESTful,给到 NPC 。
第二十五个:Swagger 【人上人】
接口文档自动化工具。可以通过注解自动生成接口文档,还提供在线调试功能方便测试,支持多种编程语言,是前后端协作的神器。
但是相比数据库、缓存这些基础设施,Swagger 并不算刚需,现在用 AI 或者 Postman 也能搞定接口文档,给到 人上人 。
第二十六个:Tomcat 【NPC】
经典的 Java Web 容器,曾经的王者,支持 Servlet 和 JSP 规范,配置灵活,文档完善。但现在 Spring Boot 内嵌服务器一键启动,谁还单独部署 Tomcat 啊?而且你敢信,甚至有同学都不知道 Tomcat!而且它的性能也不如 Undertow。时代变了,只能给到 NPC 。
27、Struts 【拉】
Java Web 框架的老古董,MVC 框架的先驱。曾经风光一时,和 Spring、Hibernate 组成 SSH 三剑客。但架构老旧、漏洞频出、性能一般、学习成本高,现在应该没有新项目在用了吧?妥妥的 拉中拉 !
28、JSP 【拉】
Java 服务端页面技术,前后端混合开发的产物。把 Java 代码和 HTML 混在一起写,性能差、调试困难、代码混乱,维护起来简直是噩梦。
现在都前后端分离了,谁还用 JSP 啊?给到 拉 !
最后
最终排行如图:
OK 就分享到这里,如果你们还想看哪些技术的排名,或者你觉得哪个技术的排名不合理,都可以在评论区告诉我哦。我是鱼皮,关注我,带你解锁更多编程和 AI 知识~