RPC
RPC架构(怎么设计RPC)
- 服务层,Service,其中主要部分就是动态代理,主要用于将服务提供者的接口封装成远程服务调用。
- 过滤器层,服务调用职责链,提供多种调用切面供框架自身和使用者扩展,例如负载均衡,性能统计,服务调用完成通知,失败重试等。
- RPC 层,这里就是 RPC 框架的核心部分,包括通信框架(Netty、Http),序列化框架,还有用于屏蔽底层通信框架和序列化框架的抽象接口。
分布式服务框架通常会包含另外两个重要功能:服务治理中心(系统监测、性能、报警、故障定位) 和 服务注册中心。
一个RPC应该支持:
- 服务订阅发布:比如,配置化发布和引用服务,服务自动发现,服务在线注册和取消注册。
- 服务路由:比如,默认提供随机路由,轮询,基于权重的路由,粘滞连接,路由定制功能。
- 集群容错:比如,Failover(失败自动切换),Failback(失败自动恢复),Failfast(快速失败)。
- 服务调用:需要支持:同步调用,异步调用,并行调用。
- 多协议:包括私有协议,公有协议。
- 序列化方式:需要支持二进制和文本类序列化方式。
- 统一配置:支持本地静态配置,支持基于配置中心的动态配置。