学习RPC主要文章

声哥文章

https://blog.csdn.net/qq_40856284/category_10138756.html

PANDA文章(更易懂一些)

https://blog.csdn.net/qq_38685503/category_10794078.html

RPC八股文

关于RPC的一些问题的八股文总结_技术交流_牛客网

下面补一些RPC八股文链接里面没有答案的部分以及修改的部分

PS:因为注册中心用的NACOS 所以没有记录zookeeper的问题

一.注册中心

4.常用的服务注册中心, 注册中心的差异

​​​​​​微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比_琦彦-CSDN博客_zookeeper和nacos

5.为什么用Nacos做注册中心?

Nacos的使用比较简单

6.集群一般有几个节点,为什么?

三个,选举leader

7.socket过程中发生的系统调用

socket系统调用过程_hhhhhyyyyy8的博客-CSDN博客_socket的系统调用

补一张我照着原贴抄的笔记

19.分布式数据一致性协议都知道哪些 20.Raft了不了解

常用的分布式一致性协议_TJtulong的博客-CSDN博客_分布式一致性协议

 21.分布式事务的几种解决方案

微服务架构-实现技术之三大关键要素2数据一致性:分布式事物+CAP&BASE+可靠事件模式+补偿模式+Sagas模式+TCC模式+最大努力通知模式+人工干预模式_xiaofeng10330111的博客-CSDN博客_sagas

33.服务端用的哪个类监听的

这里我觉得应该是serverBootstrap

34.自己实现的定时器是啥?

定时器用的是Netty的IdleStateHandler方法

PANDA的第十三章有写

手把手实现RPC框架--简易版Dubbo构造(十三)Netty心跳机制、实现服务负载均衡_PANDA博客-CSDN博客

用法

IdleStateHandler_丶洗牙刷脸-CSDN博客_idlestatehandler使用

37.如果是你如何设计一个nacos ,rpc如何调用

照搬阿里

二、序列化与反序列化以及协议

5.有没有阅读过序列化(Java Serialization、Fastjson)之后的数据

序列化后数据的解读_weixin_30410119的博客-CSDN博客

9.序列化怎么做的(序列化怎么实现)?Kryo原理了解吗?

源码分析kryo对象序列化实现原理_库克look的博客-CSDN博客_kryo 源码分析

10.你说到你自定义了一个简单协议,自定义的协议头里包括哪些内容,多少字节,各自的作用是什么

PANDA文章有提到

首先是 4 字节魔数,表示一个协议包,用来识别是我们自定义的协议;接着是 Package Type,表示这是一个调用请求还是响应结果;Serializer Type 表示实际数据使用的序列化器编号,这个服务端和客户端应当使用统一标准;Data Length 就是实际数据的长度,设置这个字段主要防止粘包,最后就是经过序列化后的实际数据,可能是 RpcRequest 也可能是 RpcResponse 经过序列化后的字节,取决于 Package Type。

11.对象有一个属性是对象引用,怎么序列化

递归序列化类型和值

12.如何实现编解码及序列化?

手把手实现RPC框架--简易版Dubbo构造(七)netty传输与通用序列化接口实现_PANDA博客-CSDN博客

定义CommonEncoder编码器将原始数据转换为字节流,然后根据上面提到的协议格式,将各个字段写到一个字节数组中(堆外内存ByteBuf[ ]),通过构造器传进的序列化器序列化。

PS:序列化器为自定义序列化接口CommonSerializer的实现类(JSON、Kryo),与kryo原理的序列化器不同。

解码器就是将收到的字节序列还原为实际对象,主要就是进行字段的校验,比较重要的就是取出序列化器编号,以获得正确的反序列化方式,并且利用length字段来确定数据包的长度(防止粘包),读出正确长度的字节数组,然后反序列化成对应的对象。

13.那你这个序列化还是针对Java语言的,如何实现跨语言的序列化或者RPC框架?

跨语言问题在于序列化方式

由于本项目实现了两种序列化器,所以想要实现跨语言序列化使用JSON序列化器即可

三、Netty

14.Netty使用场景

15.Netty的线程模型

16.RPC过程网络上发生了什么

21.Netty解决粘包的几种方式

26.怎么实现保持长连接的

手撸架构,Netty 与 RPC面试48问_vincent-CSDN博客

1.TCP 的粘包的概念是对的吗

2.简述AIO、BIO、NIO的具体使用、区别及原理

5.说说你对Netty的认识?

Netty经典高频面试题!_技术交流_牛客网

3.BIO,NIO,AIO的痛点,怎么优化?

Java 性能优化之——从BIO 到 NIO,再到 AIO_vincent_wen0766的博客-CSDN博客

4.IO/NIO/AIO区别?介绍Reactor,介绍Proactor?

reactor和proactor模式_系统运维-CSDN博客

为啥要用异步IO不用多线程

异步IO和多线程的关系_Viewwuyou-CSDN博客_异步io和多线程

6.NIO中Channel的作用

7.NIO的设计架构?JDK中NIO有哪些重要组件?

Java NIO?看这一篇就够了!_u011381576的博客-CSDN博客_nio

8.为什么选Netty用来做通信框架?

12.为什么大多数rpc框架都用Netty(聊了下Netty的特点)?你为什么会用到Netty?

三大特点:高并发、传输快和封装好

9.Netty怎么实现高性能的?Netty高性能主要依赖了哪些特性?Netty为什么快?

NIO、零拷贝、线程模型

零拷贝:彻底理解Netty-----零拷贝_爱琴孩的博客-CSDN博客

10.netty bytebuf工作原理,和NIO里buffer区别?

Netty原理:ByteBuf对Nio bytebuffer做了什么导致效率提升?_doomwatcher的博客-CSDN博客

17.RPC多个请求是在一个连接完成的吗

一个长连接

19.基于Netty实现通信,使用了哪些TCP优化参数?

option(ChannelOption.SO_BACKLOG, 256)

服务端接受连接的最大队列长度,如果队列已满,客户端连接将被拒绝。

option(ChannelOption.SO_KEEPALIVE, true)

启用该功能时,TCP会主动探测空闲连接的有效性。可以将此功能视为TCP的心跳机制,默认的心跳间隔是7200s即2小时

childOption(ChannelOption.TCP_NODELAY, true)

nodelay没有延迟

20.粘包半包怎么解决的

自定义协议、设置Data Length 防止粘包

22.Netty底层原理

23.Netty中的select过程

24.Netty的两个线程池,为什么两个,有什么区别,具体说来。

Netty初始化的时候需要初始化两个线程池,你能简单说一说吗?

netty全过程图解(最详细清晰版)_PANDA博客-CSDN博客_netty

27.如何实现心跳保持

option(ChannelOption.SO_KEEPALIVE, true)

28.多少个线程

Netty 默认是 CPU 处理器数的两倍,bind 完之后启动

四、负载均衡

1.项目中负载均衡怎么实现的

2.项目中负载均衡算法用到那些

利用列表获取某个服务的所有提供者,根据选择的负载均衡策略选择其中一个提供者,实现的负载均衡策略有随机策略和轮询策略

9.如何设计负载均衡器

接收客户端请求,将请求转发给集群中的各台服务器处理,服务器将处理结果返回给负载均衡器,负载均衡器将处理结果转发给相应的客户端。

能够根据客户端的性能要求选择相应服务器

五、RPC 和 HTTP

原贴写的很清楚了这里不做补充

六、Nacos

NACOS面试题

Nacos面试题_KGyyds的博客-CSDN博客_nacos面试

因为项目本身Nacos只是作为注册中心,所以只提取其中几个题

1.为什么要将服务注册到Nacos?

为了更好的查找这些服务

2.在Nacos中服务提供者是如何向Nacos注册中心(Registry)续约的?

(5秒心跳包Nacos中的负载均衡底层是如何实现的?(通过Ribbon实现,Ribbon中定义了一些负载均衡算法,然后基于这些算法从服务实例中获取一个实例为消费方法提供服务)
Ribbon是什么?(Netflix公司提供的负载均衡客户端,一般应用于服务的消费方法)
Ribbon可以解决什么问题?(基于负载均衡策略进行服务调用,所有策略都会实现IRule接口)
)

3.对于Nacos来讲它是如何判断服务实例的状态?

(检测心跳包 ,15,30)

4.服务消费方是如何调用服务提供方的服务的?

通过本地创建的代理对象调用远程接口

5.Nacos中的负载均衡底层是如何实现的?

(通过Ribbon实现,Ribbon中定义了一些负载均衡算法,然后基于这些算法从服务实例中获取一个实例为消费方法提供服务)

6.Ribbon是什么?

(Netflix公司提供的负载均衡客户端,一般应用于服务的消费方法)

7.Ribbon可以解决什么问题?

(基于负载均衡策略进行服务调用,所有策略都会实现IRule接口)

8.Ribbon内置的负载均衡策略有哪些?

Ribbon详解与实例_JinXYan的博客-CSDN博客_ribbon

​​

纠正:轮询策略

补一个面经

Java面试,你应该准备这些知识_程序员小灰的博客-CSDN博客_java面试需要准备什么

刷面经时如果遇到没总结到此文章的问题将会更新

RPC框架项目的学习相关推荐

  1. motan学习笔记 一 微博轻量级RPC框架Motan

    前言 motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Dem ...

  2. RPC - 如何动手实现一个简单RPC框架 - 学习/实践

    1.应用场景 主要用于学习RPC的原理,工作流程,拆解和组装一个简单的RPC框架. 2.学习/操作 1.文档阅读 31 | 动手实现一个简单的RPC框架(一):原理和程序的结构-极客时间 32 | 动 ...

  3. 还发愁项目经验吗?基于Netty实现分布式RPC框架[附完整代码]

    写给大家的话 最近我收到很多读者的来信,对如何学习分布式.如何进行项目实践和提高编程能力,存在很多疑问. 分布式那么难,怎么学?为什么看了那么多书还是掌握不了? 开源的框架比如Dubbo代码太多了,完 ...

  4. 又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目

    2023 年 1 月 26 日,Apache 软件基金会 (ASF) 官方正式宣布Apache bRPC 正式毕业,成为 Apache的顶级项目. 我听到这个消息是挺开心的,毕竟是又一款由国人主导的a ...

  5. 移动周刊第 178 期:iOS 开源框架、项目和学习资料汇总

    写在前面 本期移动周刊第 178 期如约而至,聚焦 Android.iOS.VR/AR/MR.直播等前沿移动开发技术,收录一周最热点,解读开发技巧,我们希望从中能够让你有一些收获,如果你有好的文章以及 ...

  6. 经典项目|手撸一个高质量RPC框架

    hi, 大家好,RPC是后端系统节点之间通信的核心技术,属于后端开发必须要学习的技能. 后端技术趋势指南|如何选择自己的技术方向 如何从0搭建公司的后端技术栈 远程过程调用(Remote Proced ...

  7. 六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  8. 五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  9. 四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

最新文章

  1. Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压...
  2. [导入]Google Earth坐标集(能更看清这个世界喽!)
  3. MySQL审计特性调研
  4. git push 报错:you are not allowed to upload merges
  5. 手机计算机的冷知识,重度手机控也未必知道的冷知识!现在智能手机都一个样?...
  6. 5. JavaScript Number 对象
  7. 技术记录 -- 只要开始,永远不晚
  8. RunLoop运行循环机制
  9. 基于消息的软件架构模型演变
  10. [CTF] 攻防世界MISC高手区部分题目WriteUp
  11. 自媒体人必看,这些无版权背景音乐网站,免费下载
  12. 【转】论文阅读理解 - Panoptic Segmentation 全景分割
  13. 激发数据潜力,“东数西算”带动数据中心新发展
  14. Angular $injector:unpr Unknown provider 问题原因汇总
  15. 社区疫情防控的微信公众号文章排版必备素材集锦
  16. 经典博弈论之3人分100枚金币
  17. 关于解决Photoshop CS5打开后出现已停止工作强制退出的问题
  18. 杨柳絮-Info:春天将不再漫天飞“雪”,济源治理杨柳絮在行动
  19. 多核异构核间通信-mailbox/RPMsg 介绍及实验
  20. H5页面与原生页面的区别

热门文章

  1. CN2线路好处都有啥?
  2. 吉林大学计算机学院平均绩点,关于实行吉林大学本科生课程学分绩点的说明
  3. 免费好用无广告的开源 gif制作软件 screentogif
  4. 5类与对象:kivy库
  5. java borderlayout_Java BorderLayout
  6. win7共享xp打印机_手把手教你win7系统文件夹共享与打印机共享
  7. docker安装openGauss数据库
  8. Android程序设计之学生考勤管理系统
  9. 助力质量生产,基于目标检测模型MobileNetV2-YOLOv3-Lite实现PCB电路板缺陷检测
  10. 流水灯花灯c语言程序,用汇编语言编八路彩灯控制系统(流水灯)