rpc框架主体思想

RPC 框架主体思想笔记 — 服务端部分


一、服务注册方式

1. 接口级注册

  • 注册内容:单个接口及其实现类逐一注册到注册中心。

  • 服务端实现获取

    • 不一定维护独立的本地服务容器。

    • 可能直接依赖 Spring 容器或其他IOC容器,按需获取接口实现。

    • 适合接口单独变更频繁、开发节奏快的场景。

  • 调用时流程:收到请求后,通过接口名查找对应实现,反射或依赖注入执行。

2. 模块级注册

  • 注册内容:整个模块作为服务整体注册到注册中心,模块内含多个接口实现。

  • 服务端实现获取

    • 维护本地服务容器,模块启动时加载所有接口实现。

    • 统一管理生命周期和接口调用的实例。

    • 适合模块化微服务场景,调用性能和管理性较好。

  • 调用时流程:收到请求后,通过本地容器快速定位接口实现,执行调用。


二、远程调用传输内容

  • 调用请求内容结构一致:接口名、方法名、参数、版本号等。

  • 服务端处理路径不同,但传输层协议对接口级和模块级无差别。


三、服务端调用流程总结

步骤接口级注册模块级注册
1. 请求接收接收客户端请求接收客户端请求
2. 服务定位从注册中心获取接口对应实现,或依赖Spring容器查找从本地维护的服务容器定位接口实现
3. 方法调用反射调用接口实现方法容器内实例直接调用接口实现方法
4. 返回结果返回调用结果返回调用结果

RPC 框架主体思想笔记 — 客户端部分


一、服务发现

  • 服务发现目的:客户端需要找到对应服务实例地址才能发起调用。

  • 发现方式

    • 通过注册中心查询接口名或模块名对应的服务地址列表。

    • 支持动态刷新服务地址,保证服务调用的高可用和负载均衡。


二、动态代理实现

  • 动态代理作用:客户端调用接口时,实际上调用代理对象,隐藏了远程调用细节。

  • 实现原理

    • 利用 Java 动态代理(JDK Proxy 或 CGLIB)创建接口的代理实例。

    • 代理方法内将调用信息(接口名、方法名、参数等)封装成请求。

    • 请求通过网络发送到服务端。

    • 等待并返回服务端响应结果。


三、负载均衡与容错

  • 负载均衡:客户端维护服务实例列表,调用时选择合适实例(轮询、随机、一致性哈希等)。

  • 容错机制

    • 重试机制:调用失败时自动重试。

    • 降级策略:调用失败时返回默认值或备用逻辑。

    • 超时控制:防止请求长时间阻塞。


四、调用流程总结

  1. 客户端调用接口的代理方法。

  2. 代理封装请求,查询注册中心获取服务地址。

  3. 选取服务实例,发送网络请求。

  4. 服务端处理请求,执行接口实现。

  5. 返回结果给客户端代理。

  6. 客户端代理返回结果给调用者。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值