微服务基础设施架构全貌
微服务 vs SOA
微服务基础设施优先级
微服务框架核心
模式1-嵌入式SDK式
【优点】
-
架构简单,天然支持高性能、高可用;
-
维护简单,无需维护独立的 Proxy 节点。
【缺点】
-
应用侵入,需要集成 SDK,并联动升级;
-
多语言重复开发 SDK
模式2-反向代理式
【优点】
-
应用无侵入;
-
天然支持多语言。
【缺点】
-
Service Proxy 需要通过集群来做高性能、高可用;
-
维护复杂,需要维护 Service Proxy 集群。
模式3 - 网络代理式(Service Mesh)
【优点】
-
应用无侵入;
-
天然支持多语言;
-
天然支持架构高性能、高可用。
【缺点】
-
维护复杂,需要维护每台服务器上的 Service Proxy;
-
单台服务器的 Service Proxy 是单点;
-
全链路请求性能会下降。
微服务框架模式对比
|------|---------------|-------------------|-------------------------|
| | 嵌入SDK | 反向代理 | 网络代理 |
| 多语言 | 每个语言都需要开发SDK | 天然支持多语言 | 天然支持多语言 |
| 应用侵入 | 需要集成SDK | 无 | 无 |
| 可维护性 | 无需额外维护工作 | 维护Proxy服务器集群 | 维护每台机器上的Proxy节点,数量非常多。 |
| 高性能 | 天然支持 | 需要通过Proxy集群来实现 | 整体架构是高性能的,但全链路请求性能会下降 |
| 高可用 | 天然支持 | 需要通过Proxy集群来实现 | 整体架构高可用,单台服务器上的proxy是单点 |
| 适应场景 | 团队技术栈统一为单个单语言 | 团队技术栈多语言,服务集群规模不大 | 团队技术栈多语言,服务集群规模超级大 |
常见的微服务框架
嵌入式 SDK 样例 - Dubbo
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架,提供了六大核心能力:
-
面向接口代理的高性能 RPC 调用;
-
智能容错和负载均衡;
-
服务自动注册和发现;
-
高度可扩展能力;
-
运行期流量调度;
-
可视化的服务治理与运维。
嵌入式 SDK 样例 - Spring Cloud
反向代理式案例 - APISIX
Service Mesh 案例 - Istio
如何选择开源微服务框架