RPC概述

RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。

现在互联网应用的量级越来越大,单台计算机的能力有限,需要借助可扩展的计算机集群来完成,分布式的应用可以借助RPC来完成机器之间的调用。

RPC框架原理

在RPC框架中主要有三个角色:Provider、Consumer和Registry。如下图所示:

节点角色说明:

  • Server: 暴露服务的服务提供方。

  • Client: 调用远程服务的服务消费方。

  • Registry: 服务注册与发现的注册中心。

RPC调用流程

RPC基本流程图:

一次完整的RPC调用流程(同步调用,异步另说)如下:

1)服务消费方(client)调用以本地调用方式调用服务;

2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;

3)client stub找到服务地址,并将消息发送到服务端;

4)server stub收到消息后进行解码;

5)server stub根据解码结果调用本地的服务;

6)本地服务执行并将结果返回给server stub;

7)server stub将返回结果打包成消息并发送至消费方;

8)client stub接收到消息,并进行解码;

9)服务消费方得到最终结果。

RPC框架的目标就是要2~8这些步骤都封装起来,让用户对这些细节透明。

服务注册&发现

服务提供者启动后主动向注册中心注册机器ip、port以及提供的服务列表;

服务消费者启动时向注册中心获取服务提供方地址列表,可实现软负载均衡和Failover;

使用到的技术

1、动态代理

生成 client stub和server stub需要用到 Java 动态代理技术 ,我们可以使用JDK原生的动态代理机制,可以使用一些开源字节码工具框架 如:CgLib、Javassist等。

2、序列化

为了能在网络上传输和接收 Java对象,我们需要对它进行 序列化和反序列化操作。

  • 序列化:将Java对象转换成byte[]的过程,也就是编码的过程;

  • 反序列化:将byte[]转换成Java对象的过程;

可以使用Java原生的序列化机制,但是效率非常低,推荐使用一些开源的、成熟的序列化技术,例如:protobuf、Thrift、hessian、Kryo、Msgpack

关于序列化工具性能比较可以参考:jvm-serializers

3、NIO

当前很多RPC框架都直接基于netty这一IO通信框架,比如阿里巴巴的HSF、dubbo,Hadoop Avro,推荐使用Netty 作为底层通信框架。

4、服务注册中心

可选技术:

  • Redis

  • Zookeeper

  • Consul

  • Etcd

编程实践:手写实现千万级流量架构必备的RPC框架

视频内容

1、为什么千万级流量分布式、微服务架构都有RPC?
2、什么是RPC?
3、辨析RPC和HTTP
4、实现RPC框架我们需要解决哪些问题?
5、具体问题具体分析,各个解决和实现!
6、应付千万级流量,这样够了吗?反思我们的实现。
7、Dubbo和SpringCloud哪个更好?

总结

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

如果你对下面我说的这些笔记感兴趣,可以点赞+关注后,戳这里即可免费领取

  • 第一个是算法

关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

《算法的乐趣》共有23个章节:

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

[外链图片转存中…(img-3AMc81Q3-1626021680458)]

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

java完全自学手册下载,已拿offer相关推荐

  1. C语言编程新手自学手册下载,C语言编程新手自学手册

    C语言编程新手自学手册 出版时间:2012年01月 定 价:69.80 I S B N :9787111358343 所属分类: 计算机•网络 &nbsp计算机•网络  >  编程语言与 ...

  2. 2018最新阿里Java技术三面(已拿Offer):JVM+高并发性能+单点登录+微服务

    一面 1.自我介绍 2.谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里 3.Spring的bean的作用域?(比如:singleton,prototype等) 4.Spring的IOC实现原 ...

  3. 京东三面(后端)凭借这份Java面试复盘手册,已斩获60K*15offer

    京东提前批一面: 简单的自我介绍 看我的项目取名叫"高级",问我项目中怎么体现高级的(直接被人蒙了,瞎说了一通,把面试都逗笑了)? 怎么理解springboot.mybatis等框 ...

  4. 网易考拉海购Java开发面经(已拿offer)

    2019独角兽企业重金招聘Python工程师标准>>> 网易的面试是在8月23日进行的,说是三面,但hr面的时候面了两次,后来得知好像是主管面,所以实际上是四次面试,两轮技术面+主管 ...

  5. Java老鸟5年压箱底面试真题资料+自学手册,秋招拿下阿里45k offer

    背景 又逢"金三银四",年轻的毕业生们满怀希望与忐忑,去寻找.竞争一个工作机会.已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇.更大的平台.然而,面试人群众多, ...

  6. 百度统计 java 实现思路_211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer...

    背景 计算机六年入门选手,大大小小面试了不少,从小白一路成长而来,也希望能帮助到学弟学妹们.本面试经验只适用于我这种普普通通没有背景的萌新,大神勿扰 先介绍一下个人情况211本+985硕+计算机专业, ...

  7. 阿里钉钉、天猫、同程、百度春招暑期Java实习重点面经综合(已拿offer)

    每面完一个就按照知识点分类插入了,所以也忘记了哪一个题是哪家公司的面经,不过这是我近半月被问到过的几乎所有题目,已拿offer,面经就发出来希望能帮到大家吧... 七大排序的时间复杂度 排序类别 时间 ...

  8. java软件自学_Java编程自学软件下载

    有一些用户在下载软件时没有仔细查看软件的下载量及软件评论什么的,导致下载的软件总是出现各种问题,其实,你只要看看这款软件的评论及下载量,你就可以知道这款软件是不是好软件,也确实是太多的软件不值得去下载 ...

  9. 华为Java社招面试(已拿到offer)

    华为Java社招面试(已拿到offer) 之前8月底华为cloudsop部门打电话叫我要不要面试,当时正处于换工作的期间,于是就把简历发给华为hr,人事审核后经过一些列面试.机试,最终顺利拿到了off ...

  10. 阿里P8大能倾力编撰的“Java 进阶面试手册”,助力跳槽外包毕业生秋招收获大厂offer

    先来一波致命四连问! 都快2022年9月份了,你的工资涨了吗?跳槽成功了吗?秋招面试收到offer了吗?找着对象了吗? 这波问题问的是无语凝咽呀,对于即将到来的金九银十跳槽涨薪季,我想很多小伙伴都已经 ...

最新文章

  1. 混合式APP开发中中间件方案Rexsee
  2. SAP Analytics Path Framework的filter实现原理分析
  3. Gridview一次更新所有记录
  4. php中获取上一页的url地址
  5. MongoDB开发环境搭建(windows)
  6. 四路智能抢答器电子系统综合设计
  7. 伪代码 嵌套循环_大学开始,跟着别人的代码敲对自己编程提高有用吗?
  8. java数字处理_Java数字处理类(上)
  9. python转视频格式高清_树莓派环境下使用python将h264格式的视频转为mp4
  10. 在构建好XPE操作系统上增加EWF功能
  11. 计算机网络系统与分布式系统之间的区别
  12. 队列与栈的原理及特点
  13. 浅析游戏中的打击感如何实现
  14. vba筛选出满足条件的数据_VBA专题02:使用代码进行复制操作
  15. 在IIS上部署ASP网站
  16. go module 详解
  17. 盘点阿里巴巴 15 款开发者工具 侵删
  18. C语言abs和labs函数详解和示例
  19. 嵌入式操作系统风云录:历史演进与物联网未来Chapter1 第1章
  20. 图书管理系统python pycharm 数据库

热门文章

  1. colorui 使用iconfont图标
  2. python压缩视频_如何压缩视频大小?
  3. 泛微OA数据库表说明
  4. c语言算开方程序,C语言计算开方
  5. 一篇博文让C盘瘦身!清理内存!
  6. 酷Q插件dll 加载失败!错误:缺失AppInfo返回的AppID(york.1996.com)对应的文件(-110)
  7. 分享6个关于自主学习的思维导图模板
  8. 南方科技大学计算机系师资,于仕琪 - 教师个人主页 - 南方科技大学
  9. 图解tcpip 第5版 pdf_现代实用气动技术 第2版 pdf下载 0776
  10. unity 插件uniwebview 内嵌H5游戏