一文吃透微服务:从单体到RPC、服务治理、下一代架构Service Mesh
微服务、服务治理、RPC、Service Mesh 是后端面试与架构设计的高频考点。这篇文章用通俗的逻辑,把单体架构 → 微服务 → 服务治理 → RPC框架 → 服务网格整条技术演进路线讲清楚,看完就能理解本质、应对面试。
一、先搞懂:单体应用是什么?
单体应用(Monolith):所有功能打包在一个项目里,运行在同一个进程中。
- 优点:开发简单、部署简单、测试简单。
- 缺点:
- 耦合严重,改一处动全身。
- 无法单独扩容,压力大只能整应用扩容。
- 发布风险高,一次变更影响全系统。
- 技术栈统一,无法按需选型。
当业务变大、团队变多,单体就会变得难以维护。微服务就是为了解决这些问题而生。
二、微服务到底是什么?
微服务是把一个大应用,按业务边界拆成多个小型、独立、自治的服务。
核心特点:
- 单一职责:一个服务只做一件事。
- 独立部署:可单独发布、扩容、回滚。
- 技术异构:可用不同语言、不同存储。
- 松耦合:通过网络协议通信,不强依赖。
- 高可用:一个服务挂了,不拖垮全局。
一句话总结:
微服务 = 小而自治 + 业务边界清晰 + 独立运行 + 网络协作。
三、微服务 vs SOA:别再混淆
很多人分不清 SOA 和微服务,其实差别很明显:
- SOA:重、企业级、总线模式(ESB)、协议重(SOAP)、耦合高、适合 legacy 系统。
- 微服务:轻、去中心化、HTTP/gRPC、轻量化部署、云原生友好。
可以简单理解:
微服务是去 ESB 化、轻量化、更现代化的 SOA。
四、微服务的优缺点
优点
- 技术异构:服务可用不同语言、不同数据库。
- 故障隔离:一个服务崩了,不影响其他服务。
- 弹性扩缩容:压力大的服务单独扩容。
- 独立部署:发布快、风险小、可快速回滚。
- 易于维护:代码量小,业务清晰,重构成本低。
缺点
- 分布式复杂度:网络不可靠、超时、分布式事务。
- 运维成本高:服务多、监控多、链路复杂。
- 调试困难:跨服务调用追踪麻烦。
- 测试成本高:需要整套环境联调。
为了解决这些问题,就出现了服务治理。
五、服务治理:微服务的“管理中枢”
微服务一多,就必须统一管控,这就是服务治理。
核心能力:
- 服务注册与发现:服务在哪里?怎么找到?
- 服务监控:健康、流量、耗时、错误率。
- 服务容错:熔断、限流、降级、隔离、超时重试。
- 服务安全:认证、授权、链路加密。
- 配置管理:统一配置、动态推送。
- 链路追踪:一次请求经过哪些服务、哪里慢、哪里错。
六、RPC:微服务通信的核心
什么是RPC?
RPC(Remote Procedure Call)远程过程调用:
让你像调用本地方法一样,调用另一台机器上的方法,屏蔽网络细节。
为什么微服务需要RPC?
- HTTP/REST 通用性强,但性能一般、报文大。
- RPC 协议更紧凑、序列化更快、吞吐量更高,适合内部服务调用。
主流RPC框架
- Dubbo:阿里开源,Java 生态,高性能、服务治理完善。
- gRPC:Google 开源,基于 HTTP/2 + Protobuf,跨语言、标准、高效。
- Thrift:Facebook 贡献 Apache,跨语言、IDL 定义、高性能。
- Motan:微博开源,Java 语言,高可用、集群友好。
- Tars:腾讯开源,C++/Go 为主,内置服务治理。
微服务框架 vs RPC
- RPC:只负责远程调用。
- 微服务框架:包含 RPC + 服务发现 + 负载均衡 + 熔断限流 + 监控等全套治理能力。
七、下一代微服务:Service Mesh(服务网格)
当微服务数量达到几十上百个,传统框架(如Dubbo/Spring Cloud)的代码侵入性就成了痛点。
Service Mesh 服务网格:
- 把服务治理能力从业务代码中剥离,放到独立的代理(Sidecar)中。
- 业务代码无感知、无侵入。
- 统一控制流量、安全、监控、熔断、重试。
核心特点
- 非侵入式:不用改代码,不用引SDK。
- 透明治理:对应用透明,流量自动接管。
- 统一管控:全局策略、统一观测。
- 云原生:天然适配 K8s。
代表产品
- Istio:最流行、功能最全。
- Linkerd:轻量、稳定、CNCF 项目。
一句话理解:
Service Mesh 就是微服务时代的“TCP/IP”,让业务只关心业务,治理交给基础设施。
八、架构演进总结(超清晰)
- 单体架构:简单,但大了就乱。
- 微服务架构:拆分服务,独立自治,解决单体痛点。
- 服务治理:管控服务,解决分布式问题。
- RPC框架:高性能服务通信。
- Service Mesh:无侵入治理,下一代标准。
九、面试高频问答(速记)
- 微服务和单体的区别?
单体耦合、统一部署;微服务拆分、独立、可扩展。 - 微服务的核心组件?
注册中心、配置中心、网关、RPC、监控、链路追踪、熔断限流。 - 为什么用RPC不用HTTP?
性能高、序列化快、吞吐量高、适合内部调用。 - Service Mesh解决什么问题?
无侵入服务治理,业务与治理解耦。 - 服务治理包含哪些能力?
注册发现、监控、容错、安全、配置、追踪。
降重鸟技术团队分享内容未经允许请勿转载,部分技术来自pianlai.com
