RPC简介
一:为什么会出现RPC呢?
当公司业务量还是很小的时候,所有的程序都放置在一台机器上,程序之间通过函数或者类来调用。
1:当公司的业务发展越来越大,业务线越来越多,公司后端人员也越来越多,分布在不同的业务线,不同的项目里,其他项目组开发了一个服务,另外一个组想调用这个服务,这时候该怎么办?
2:业务越来越多,我们需要划分不同的业务模块,需要把公共服务独立出来,如何调用这些公共服务和不同的业务模块提供的服务?
3:如果后端有2个开发组,做着的不同业务,并且使用不同的开发语言,比如php和java,那么他们之间的业务怎么相互进行调用呢?
这时候 rpc 就应运而生了,它可以在不同的模块不同语言之间进行通信。
所以 rpc 是业务变得越来越多,需要对业务进行拆分,不同的模块提供不同的服务时,各服务模块之间相互进行通信的一种方式。
二:RPC是什么?
RPC(Remote Procedure Call Protocol)——远程过程调用协议。
它是一种通过网络从远程计算机程序上请求服务,而调用者不需要了解底层网络技术的协议,它让调用者对网络通信这些细节是透明的。
rpc采用的是客户端<----->服务器模式。 请求程序是一个客户机,而服务提供程序就是一个服务器。
rpc的通信模型如下图:

三:有哪些RPC框架
各大互联网公司都根据自己公司业务特点开发了自己的rpc框架,如阿里巴巴的hsf、dubbo(开源)、Facebook的thrift(开源)、Twitter的finagle(开源)等
下一篇我们分析下thrift框架,看看rpc框架是怎么进行通信的,它的原理是什么?
RPC简介的更多相关文章
- RPC简介与hdfs读过程与写过程简介
1.RPC简介 Remote Procedure Call 远程过程调用协议 RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些 ...
- 01 . RPC简介原理及用Go实现一个简单的RCP
RPC简介 本地过程调用 // 正常情况下程序的执行和调用情况.例如有如下go语言代码: package main import "fmt" func main() { var a ...
- RPC简介及原理
简介 RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用). 越底层, ...
- rpc简介、原理、实例
简介 RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过 ...
- RPC简介与Thrift框架
RPC,全称是remote process call,远程过程调用,简单来讲就是调用部署在另一台服务器上的服务或者被部署在另一台服务器上的服务调用.由于各服务部署在不同机器,服务间的调用免不了网络通信 ...
- RPC简介及框架选择
简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...
- 分布式系统的发展演变以及RPC简介
场景 什么是分布式系统 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统. 分布式系统是建立在网络之上的软件系统. 注: 博客: https://blog.csdn.net/b ...
- [转]新兵训练营系列课程——平台RPC框架介绍
原文:http://weibo.com/p/1001643875439147097368 课程大纲 1.RPC简介 1.1 什么是RPC 1.2 RPC与其他远程调用方式比较 2.Motan RPC框 ...
- abelkhan中的rpc框架
rpc简介:http://www.ibm.com/developerworks/cn/aix/library/au-rpc_programming/index.html 常见的rpc框架有protob ...
随机推荐
- 如何使用CSS 让Table的最后一列的右边框不显示
table{ border-collapse:collapse; } .templateColumn{ border-right:1px solid #AAA; } table.templateCon ...
- 三种bean创建方式
- c++ string类型的定义及方法
1.c++ 有两种风格的字符串形式 c风格字符串 定义及初始化 char a[]={'h','e','l','l','o','\0'} 或者 char a[]="hello&quo ...
- python爬虫requests模块
requests库的七个主要方法 1. requests.requests(method, url, **kwargs) 构造一个请求,支撑以下各方法的基础方法 method:请求方式,对应get/p ...
- MD5进行解密操作
package com.dyy.test; import java.security.MessageDigest; public class TestMD5Util { /*** * MD5加码 生成 ...
- Win10下创建Python3.7创建虚拟环境以及安装Flask框架
鉴于现在看到的很多虚拟环境创建以及flask框架安装方式需要通过dos命令来做,虽然比较常用,但是每次运行都要激活虚拟环境,相对比较麻烦,而现在利用pycharm大可不必如此. 1.安装破解版pych ...
- python学习日记(流程控制习题)
请输出1-2+3...+99除88以外的和 i = 1 sum = 0 while i <= 99: if i == 88: i = i + 1 continue else: if i%2 == ...
- Linux 内存清理
1. Clear PageCache only.sync && echo 1 > /proc/sys/vm/drop_caches2. Clear dentries and in ...
- Summary (7Road)
今天有幸参加了一次考试,碰到的一些考题如下: 很多东西,明明都是会的,可是就是写不出来.可见自己的Linux基础还是很薄弱,懒得去记这些有用的东西.既然自己不是老板,不是项目经理,就该努力记住这些基础 ...
- 通过pycharm将代码push到远程仓库
现在使用pycharm作为python编辑器的人还是不少,而且,也可以通过pycharm将代码push到远程仓库. 步骤见下面截图: 填上远程仓库地址及克隆到本地的目录 输入远程仓库的账号和密码 修改 ...