当前位置:首页 > 通信技术 > 通信技术
[导读]RPC 是远程过程调用协议,实现跨进程透明通信,通过注册中心动态管理服务,支持高效二进制传输(如 Protobuf)、负载均衡和故障容错,解耦服务间依赖,提升分布式系统扩展性与可靠性。

1、定义

    RPC-远程过程调用,是一种通信协议,允许调用不同进程空间的程序,即调用另一个地址空间(通常是远程机器)的过程或函数,就像调用本地函数/方法一样

2、优点

  • 无论是客户端还是服务端,不需要额外的定义,RPC直接调用
  • RPC使用自定义的协议格式,减少冗余报文
  • RPC采用更高效的序列化协议,将文本转换为二进制传输
  • RPC更容易扩展和集成

3RPC框架处理的问题

  • 两个应用程序部署在两台机器选择TCP协议或者HTTP协议
  • 两个应用程序部署在一台机器选择Unix Socket协议
  • 报文编码格式选择JSON或者XML
  • 报文较大选择protobuf

4、注册中心

    客户端和服务端互相不知道对方的存在,服务端启动时,将自己注册到注册中心;客户端调用时,从注册中心获取到所有可用的实例,选择一个来调用。注册中心还需要实现服务动态添加、删除,使用心态确保服务处于可用状态。

核心角色

  • 服务端(Provider):启动时向注册中心注册自己的地址和元数据
  • 客户端(Consumer):调用服务时从注册中心获取可用服务端地址
  • 注册中心(Registry):记录服务地址并提供健康检查(如 ConsulEtcdZooKeeper

5、关键流程解析

服务注册:

  • 服务端启动时将自己的地址(如 192.168.1.100:8080)和元数据(服务名称、健康检查接口)注册到 Consul
  • Consul 会定期调用健康检查接口(如 /health),自动剔除故障节点

服务发现:

  • 客户端不直接写死服务端地址,而是向 Consul 查询 math-service 的可用实例列表
  • 客户端通过负载均衡策略(随机、轮询、权重等)选择一个可用地址进行调用

解耦效果:

服务端无需知道客户端的存在,只需关注自身服务实现;客户端无需维护服务端地址列表,动态感知服务实例变化;注册中心统一管理服务拓扑关系。

6、场景模拟

假设有 3 个服务端实例:

math-service-1192.168.1.101:8080

math-service-2192.168.1.102:8080

math-service-3192.168.1.103:8080

当客户端调用时:

  •     Step1:通过 Consul 获取到 3 个实例地址
  •     Step2:随机选择其中一个(如 math-service-2)发起 RPC 调用
  •     Step3:如果 math-service-2 宕机,Consul 会在下次健康检查时将其标记为不可用
  •     Step4:客户端下次发现时只会获得剩余 2 个健康实例

7、关于GeeRPC

GeeRPC从零实现go语言官方的标准库net/rpc,并在此基础上增加协议交换、注册中心、服务发现、负载均衡、超时处理等模块。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭