RPC框架学习总结
1、RPC是一种技术框架的称呼,不是某种具体协议,不局限于某种协议,RPC顾名思义就是远程过程调用,其核心思想是,RPC客户端调用远程服务器上的接口完成过程调用,远程服务器把结果返回。
2、RPC的最底层仍然是socket来实现服务器之间的网络通信。但是,socket之上,在哪一层实现RPC调用,则可以有两大类,一类是基于TCP实现的,一类是基于HTTP实现的。
基于TCP实现的RPC,参见参考文档中“基于TCP和HTTP协议的RPC简单实现”
基于HTTP实现的RPC,根据数据序列化的方式分为XML和JSON两种,即XML-RPC和JSON-RPC,实践见文档:
http://www.cnblogs.com/zhouhaibing/p/7005235.html
3、RPC实现了客户端和服务器端之间的一对一的关系,现实情况是,RPC的客户端应用分布在多个服务器上,RPC的服务器端也分布在多个服务器上,此时就不可能让客户端指定某个服务器的方式进行远程调用,于是,消息队列派上用场。
4、openstack中大量使用的消息队列是rabbitMQ,但是为了屏蔽具体实现,以及可以替换成其他产品实现,于是在AMQP上抽象了 oslo_message 公共库,关系如下:
参考文档:
1、OpenStack的oslo_messaging组件使用 http://blog.csdn.net/gj19890923/article/details/50278669
2、Neutron-server初始化 — RPC服务初始化 http://blog.csdn.net/qiqishuang/article/details/52056511
3、基于TCP和HTTP协议的RPC简单实现 http://blog.csdn.net/xlgen157387/article/details/53543009
4、
RPC框架学习总结的更多相关文章
- 简易RPC框架-学习使用
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- RPC框架学习+小Demo实例
一.什么是RPC协议? 全称:远程过程调度协议 效果:使消费者向调用本地方法一样调用远程服务方法,对使用者透明 目前常用:Dubbo.Thirft.Sofa.... 功能: 建立远程通信(socket ...
- 一个入门rpc框架的学习
一个入门rpc框架的学习 参考 huangyong-rpc 轻量级分布式RPC框架 该程序是一个短连接的rpc实现 简介 RPC,即 Remote Procedure Call(远程过程调用),说得通 ...
- rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)
学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...
- 学习写简单的RPC框架demo
学习实现一个简单的RPC框架. 工程主要目录分级结构: rpc-common: 公共基础包,能力提供包 rpc-provider: 服务提供者 rpc-consumer:服务消费者 rpc-servi ...
- RPC 框架要实现这个功能,我们可以使用泛化调用。那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用。
RPC 框架要实现这个功能,我们可以使用泛化调用.那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用.
- rpc框架之gRPC 学习 - hello world
grpc是google在github于2015年开源的一款RPC框架,虽然protobuf很早google就开源了,但是google一直没推出正式的开源框架,导致github上基于protobuf的r ...
- rpc框架之 thrift 学习 1 - 安装 及 hello world
thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:http://thrift.apache.or ...
- dubbo入门学习 二 RPC框架
rpc框架解释 谁能用通俗的语言解释一下什么是 RPC 框架? - 远程过程调用协议RPC(Remote Procedure Call Protocol) 首先了解什么叫RPC,为什么要RPC,RPC ...
随机推荐
- 简介 - MongoDB
1- NoSQL简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL": NoSQL是指非关系型的数据库,有时也称作Not Only SQL的缩写, ...
- 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?
文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...
- 新装mysql数据库登陆不上去(账号密码正确)
Open & Edit /etc/my.cnf Add skip-grant-tables under [mysqld] Restart Mysql You should be able to ...
- leetcode — plus-one
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...
- .NET CoreCLR 源码调试
https://github.com/dotnet/coreclr/blob/master/Documentation/building/windows-instructions.md https:/ ...
- 浅谈基于WOPI协议实现跨浏览器的Office在线编辑解决方案
如今,基于Web版的Office 在线预览与编辑功能已成为一种趋势,而关于该技术的实现却成为了国内大部份公司的技术挑战,挑战主要存在于两方面: 其一:目前国内乃至微软本身,还没有相对较为完善的解决方案 ...
- Perl的子程序
子程序(subroutine) perl中的子程序其实就是自定义函数.它使用sub关键字开头,表示声明一个子程序 子程序名称有独立的名称空间,不会和其它名称冲突 Perl中的子程序中可以定义.引用.修 ...
- 分布式系统监视zabbix讲解六之自定义监控项--技术流ken
宏 概述 Zabbix支持许多在多种情况下使用宏.宏是一个变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 宏解析为一个特殊的值. 有效地使用宏可以节省时间,并使Zabbix变地更加高效. ...
- java实现带空格字符串的倒序输出
import org.junit.Test; public class StringtoChar { @Test public void main(){ String str ="hello ...
- LeetCode哈希表
1. Two Sum https://leetcode.com/problems/two-sum/description/ 不使用额外空间需要n*n的复杂度 class Solution { publ ...