怎么进行RPC实战与原理的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
什么是 RPC?
Remote Procedure Call,远程过程调用。
RPC 有什么作用?
屏蔽远程调用、本地调用的区别
隐藏底层网络通信的复杂性
,让我们更专注于业务
RPC 步骤

为什么需要序列化?
网络传输必须是「二进制」,调用方的参数都是对象
请求↔二进制消息体
零拷贝
什么是零拷贝?

为什么需要零拷贝?
网卡
等操作,只能通过内核操作
,应用程序
要发送网络数据,需要将数据复制到内核
。
如何实现零拷贝?
虚拟内存
Netty 的零拷贝有何不同?
动态代理实现
HTTP/2 特性
多路复用
,同一链路双向发送stream数据
Header 压缩
为什么需要服务发现?
公共的“通讯录”
为什么不用 DNS?
DNS多级缓存,且缓存时间长
需要搭建负载均衡,额外成本
定时任务 & 时间轮
定时任务的问题?
future 启动线程进行异步编程,sleep
如果5秒超时,高并发的
让CPU额外轮询遍历,浪费CPU
时间轮的应用
时钟轮本质
减少额外的扫描操作
时间轮在 RPC 的应用
调用端请求的超时处理,节省CPU
时间轮实现
Netty的 TimeWheel
如何注册和发现服务?
RPC Server
提供服务,向 Registry 注册自身
RPC Client
调用服务,从 Registry 拉取服务列表
Server 节点变更时,同步变更,Client 感知刷新本地的「服务节点列表」

实现:
如何实现 RPC 远程调用?
如何追踪微服务?
核心理念:调用链,全局唯一的 ID
将同一请求串联起来,从而还原调用关系,统计系统指标。

注册中心选型
高可用
集群部署:多个实例
多机房部署:一个机房断电等不可抗因素
数据一致性
开源 RPC 框架
限定语言
Dubbo:Java,阿里
Motan:Java,微博
Tars:C++,腾讯(已支持多语言)
Spring Cloud:Java
网关 Zuul
注册中心 Eureka
服务超时熔断 Hystrix
调用链监控 Sleuth
日志分析 ELK
跨语言 RPC 框架
Spring Cloud 微服务架构

关于怎么进行RPC实战与原理的分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注天达云行业资讯频道了解更多相关知识。