rpc
RPC的全称是Remote Procedure Call,它是一种进程间通信方式。允许像本地服务一样调用远程服务,它的具体实现方式可以不同,例如spring的http invoker,Facebook的thrift二进制协议通信。Rpc具有以下特点:
- 简单:RPC概念十分清晰简单
- 高效:过程调用看起来十分简单而且高效
- 通用:在单机计算中往往是不同算法和API,跨进程调用最重要的是通用的通信机制。
RPC框架的定位
在分布式和微服务下,随着服务数量的增多,机器的增多,使用RPC直接调用接口地址变得越来越难维护,耦合越来越多,服务管理起来越来越困难。因此对服务调用需要统一管理。
RPC框架的目标是让远程过程调用更加简单,透明,RPC框架负责屏蔽底层的传输方式,序列化方式,和通信细节。框架使用者只需要了解谁在什么位置提供了什么样的远程服务接口,开发者无需关系底层通信细节和调用过程。
常见的RPC框架
-
Apache thrift
-
Arvo rpc protocol
-
Hession
-
gRpc
-
dubbo
rpc框架有哪些要素?
- 服务订阅发布
- 配置化发布和引用服务
- 服务自动发现
- 服务在线注册和下线
- 服务健康状态检测
- 故障切换
- 高HA(注册中心宕机,走本地缓存)
- 心跳检查,断连重连机制
- 服务路由(负载均衡)
- 提供多种路由策略,轮询,权重
- 粘滞链接
- 路由定制
- 集群容错
- Failover
- Failback
- Failfast
- 服务无状态
- 服务调用方式
- 同步调用
- 异步调用
- 并行调用
- 多协议
- 私有协议(可以自定义扩展)
- 公有协议
- 序列化方式
- 二进制序列化(thrift,protobuf)
- 文本类序列化(json,xml)
- 统一配置
- 本地静态配置
- 基于配置中心的动态配置
- 服务监控
- 操作界面
- 性能统计
- 统计报表
- 告警