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哪个更好?

总结

本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

重要的事:需要领取完整版的MySQL学习笔记的话,请转发+关注后点这里免费获取到免费的下载方式!

MySQL50道高频面试题整理:

完整版的MySQL学习笔记的话,请转发+关注后点这里免费获取到免费的下载方式!**

MySQL50道高频面试题整理:

Java即时通讯,含小米、腾讯、阿里相关推荐

  1. Java聊天室程序源码 Java即时通讯代码 Java局域网聊天系统 Java即时通讯 Java聊天系统

    Java聊天室程序源码 Java即时通讯代码 Java局域网聊天系统  Java即时通讯 Java聊天系统 public Swingtest002() {// 设置标题setTitle("请 ...

  2. Java即时通讯(IM)——陌生人交友了解

    QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群6493473 ...

  3. java即时通讯im聊天源码,dubbo即时通讯im聊天源码,netty即时通讯im聊天源码,springboot即时通讯im聊天源码

    [后端涉及的框架和技术]:springboot2.1.1, dubbo2.7.3(很新),netty4,mysql,redis,mongodb,fastdfs,oauth2,swagger2,myba ...

  4. java即时通讯源码 IM即时通讯源码 IM源码 安卓苹果原生APP源码 带音视频

    基本功能说明及介绍: 客户端:安卓,苹果,pc,web 开发语言: Java OC C# 运行软件:eclipse Java xcode 数据库:mongodb 环境:Linux Centos 7以上 ...

  5. emqttd java 即时通讯_使用Emqttd搭建一个聊天室

    前言 由于项目需要,目前需要使用Emqttd搭建一个聊天室,自己写了个demo,特记录下来 代码 使用IDEA搭建一个Spring Boot工程 pom.xml文件,此处我只列出dependencie ...

  6. im聊天软件Java即时通讯源码原生四端

    基本功能说明及介绍: 客户端:安卓,苹果,(可赠送web,pc) 开发语言: Java OC C# 运行软件:eclipse Java xcode 数据库:mongodb 环境:Linux Cento ...

  7. java即时通讯框架_Spring Boot 开发私有即时通信系统(WebSocket)

    1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 ...

  8. emqttd java 即时通讯_[emqttd] (EMQ)

    [emqttd] (EMQ)是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器. [emqttd]致力于发布一个基于Erlang/OTP语言平 ...

  9. MSN即将退役,即时通讯开放平台成趋势

    移动互联时代的到来,即时通讯工具如果不做创新,打造极致的用户体验,很快将被抛弃,MSN就是最好的例证.而且随着智能手机的普及和3G网络环境的提升,未来,满足用户移动.实时.异步.融合的即时通讯工具才是 ...

最新文章

  1. 地图处理(dfs算法)
  2. ise的时钟ip核_ISE的IP核clocking wizard使用和例化
  3. python在金融工程领域包括_金融工程专业对计算机的能力要求到底是什么?
  4. 鸡肉和鸡蛋–测试前解决Spring属性
  5. Java String和Date的转换 Date类型操作
  6. python回归分析实验_python线性回归实验
  7. 指定 年 周 星期 获取这周的开始日期和结束日期
  8. 塑料壳上下扣合的卡扣设计_一种塑料件卡扣结构制造技术
  9. 201503-2-数字排序
  10. html密码至少输入6位,JS实现六位字符密码输入器功能
  11. 天津科技大学计算机学院地址,天津科技大学有几个校区及校区地址
  12. Python3之日志模板
  13. 卷积神经网络(CNN)原理详解
  14. 矩阵求导及其链式法则
  15. 自己制作并发布720°VR全景图
  16. 【Mockplus教程】账号和购买
  17. JPBC库的使用实例——BLS签名
  18. 「维基解密」:西游记死亡人数
  19. 群晖 USB存储改内置存储空间 | 玩物下载 到U盘 | 套件安装到U盘
  20. Adobe photshop 安装过程中的问题

热门文章

  1. Python列表和元组的详细区别
  2. 在线制作微信跳转浏览器下载app/打开指定页面源码
  3. Matplotlib 将图片保存为 .tiff 格式
  4. 美国新研发的超级计算机,美国正在开发全球最快超级计算机:明年完成
  5. java在线答疑答题系统
  6. 专访迅雷首席工程师:迅雷的下一代互联网底层技术构想
  7. PotPlayer不支持S/W HEVC(H.265)解码怎么办
  8. CF1430C Numbers on Whiteboard
  9. 交大计算机专硕 学费,上海交大这个专业学费大幅上涨,从4万涨到12万,家长:还上吗?...
  10. 小米物联网世界第一_世界最大物联网?小米牵手宜家布局AloT,却因它栽了大跟头?...