怎么进行RPC实战与原理的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司-专业网站定制、快速模板网站建设、高性价比抚州网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式抚州网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖抚州地区。费用合理售后完善,十年实体公司更值得信赖。
什么是 RPC?
Remote Procedure Call,远程过程调用。
RPC 有什么作用?
屏蔽远程调用、本地调用的区别
隐藏底层网络通信的复杂性,让我们更专注于业务
RPC 步骤

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

为什么需要零拷贝?
网卡等操作,只能通过内核操作,应用程序要发送网络数据,需要将数据复制到内核。
如何实现零拷贝?
虚拟内存
mmap + write
sendfile
Netty 的零拷贝有何不同?
一个请求,可能拆分成多个数据包
数据包的组合在用户空间,解决用户空间内存的拷贝处理问题,CompositeByteBuf
也包括用户空间、内核空间的数据拷贝:Direct Buffers
动态代理实现
JDK:只能代理接口
Javassist:操作底层字节码,不需要反射,性能好Byte Buddy:更容易的 API,速度比 Javassist 快,Spring、Jackson 使用
HTTP/2 特性
多路复用,同一链路双向发送stream数据Header 压缩
为什么需要服务发现?
公共的“通讯录”
为什么不用 DNS?
DNS多级缓存,且缓存时间长
需要搭建负载均衡,额外成本
定时任务 & 时间轮
定时任务的问题?
future 启动线程进行异步编程,sleep
如果5秒超时,高并发的
让CPU额外轮询遍历,浪费CPU
时间轮的应用
延迟消息
订单过期(10分钟未付款,取消订单)
时钟轮本质
减少额外的扫描操作
时间轮在 RPC 的应用
调用端请求的超时处理,节省CPU
时间轮实现
Netty的 TimeWheel
如何注册和发现服务?
RPC Server提供服务,向 Registry 注册自身RPC Client调用服务,从 Registry 拉取服务列表Server 节点变更时,同步变更,Client 感知刷新本地的「服务节点列表」

实现:
注册中心 API
服务健康状态监测:ZooKeeper 的会话超时控制机制
服务状态变更通知:ZooKeeper 的 Watcher 机制
如何实现 RPC 远程调用?
客户端、服务端如何建立网络连接:HTTP、Socket
服务端如何处理请求:NIO(使用
Netty)数据传输采用什么协议
数据如何序列化、反序列化:JSON,PB,Thrift
如何追踪微服务?
核心理念:调用链,全局唯一的 ID 将同一请求串联起来,从而还原调用关系,统计系统指标。

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

关于怎么进行RPC实战与原理的分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
网页标题:怎么进行RPC实战与原理的分析
浏览路径:http://www.jxjierui.cn/article/jpgccg.html


咨询
建站咨询
