分布式微服务--核心组件与架构关系(一)
一、注册中心(服务发现)
名称 作用 备注 Nacos 注册中心 + 配置中心,服务注册与发现、配置管理 Spring Cloud Alibaba 默认注册中心,支持动态配置 Zookeeper 分布式协调和注册中心 Dubbo 常用注册中心,强一致性
二、远程调用框架
名称 类型 通信协议 备注 Dubbo RPC 框架 TCP、HTTP2(二进制) 高性能 RPC,自己实现序列化、负载均衡等 OpenFeign 声明式 HTTP 客户端 HTTP REST Spring Cloud 官方支持,简化 HTTP 调用
三、负载均衡组件(客户端)
名称 作用 备注 Ribbon 客户端负载均衡器 Netflix 开源,旧版 Spring Cloud 默认,已弃用 Spring Cloud LoadBalancer 客户端负载均衡器 Spring Cloud 官方替代 Ribbon,推荐使用
四、整体关系及典型组合
方案 注册中心 远程调用 负载均衡 备注 Dubbo 方案 Zookeeper / Nacos Dubbo RPC(二进制协议) Dubbo 自己实现负载均衡 高性能 RPC 方案 Spring Cloud Alibaba 方案 Nacos OpenFeign(HTTP REST) Spring Cloud LoadBalancer 或 Ribbon 云原生微服务生态
五、调用链流程简述
┌────────────┐│ 调用远程服务 │└──────┬─────┘│┌──────────────▼─────────────┐│ 客户端调用方式(两种) │├────────────┬──────────────┤│ RestTemplate │ OpenFeign │└──────┬────────┴────────────┘│┌─────────▼───────────┐│ 负载均衡(客户端)组件 │├─────────┬───────────┤│ Ribbon(老) │ Spring Cloud LoadBalancer(新)│└─────────┴───────────┘后面就是下面这个图了,从注册中心(Nacos / Zookeeper)获取服务列表
客户端发起请求↓ 远程调用框架(Dubbo RPC 或 OpenFeign)↓ 负载均衡器(Dubbo自带或 Spring Cloud LoadBalancer / Ribbon)↓ 从注册中心(Nacos / Zookeeper)获取服务列表↓ 选取服务实例,完成远程调用
1
六、简要总结
注册中心负责服务注册与发现(Nacos、Zookeeper)
远程调用分为 RPC(Dubbo)和 HTTP REST(OpenFeign)两种主流方式
负载均衡实现方式有 Ribbon(老)和 Spring Cloud LoadBalancer(新)
Spring Cloud Alibaba默认 Nacos + OpenFeign + Spring Cloud LoadBalancer
Dubbo采用自己的 RPC 协议和负载均衡,常配合 Zookeeper 或 Nacos