rpc协议

RPC框架的理解-------转载

℡╲_俬逩灬. 提交于 2019-12-21 04:34:56
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 下面重点介绍三种: gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。 Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用

网络编程

♀尐吖头ヾ 提交于 2019-12-20 04:01:57
概述 通过通信线路(有线或无线)可以把不同地理位置且相互独立的计算机连同其外部设备连接起来,组成计算机网络。在操作系统、网络管理软件及网络通信协议的管理和协调下,可以实现计算机之间的资源共享和信息的传递。 网络编程是指用来实现网络互联的不同计算机上运行的程序间可以进行数据交换。对我们来说即如何用编程语言 java 实现计算机网络中不同计算机之间的通信。 1.网络通信三要素 IP地址 网络中计算机的唯一标识; 32bit(4 字节),一般用“点分十进制”表示,如 192.168.1.158; IP 地址=网络地址+主机地址 可分类: A 类:第 1 个 8 位表示网络地址。剩下的 3 个 8 位表示主机地址 (主要留给ZF或者大型企业) B 类:前 2 个 8 位表示网络地址。剩下的 2 个 8 位表示主机地址 (主要分配给中等规模的公司) C 类:前 3 个 8 位表示网络地址。剩下的 1 个 8 位表示主机地址 (分配给小公司或者个人) D 类地址用于在 IP 网络中的组播 E 类地址保留作研究之用。 Java 编程中可使用 InetAddress 类来操纵 IP 地址 public static void main(String[] args) throws UnknownHostException { InetAddress localHost = InetAddress

dubbo和springcloud的区别

非 Y 不嫁゛ 提交于 2019-12-18 20:34:00
dubbo和springcloud的区别 1)springcloud 相对来说更加完善一点。因为都是已经集成的,但是也不代表dubbo就不完善,需要另外整合进来 2)springcloud相对来说不用引入那么多组件,大部分都是java开发的,直接运行即可。 3)从通信方面来说,采用的协议不同,dubbo采用的是RPC的方式,springcloud采用的基于http的REST方式。 dubbo采用的是 RMI 协议 springcloud 采用的是 http 协议 RPC(Remote Procedure Call)远程过程调用,是一种技术思想,客户端需要把方法的参数以二进制的方式传给远程的方法调用,远程的方法执行之后返回结果给客户端。 4)springcloud的发展更好,更有前景。毕竟是spring系列的。 5)定位不同 Dubbo的定位始终是一款RPC框架, Spring Cloud的目的是微服务架构下的一站式解决方案。 来源: CSDN 作者: 我是全村最靓的仔 链接: https://blog.csdn.net/xyb0926/article/details/103603725

【转】libgo

北慕城南 提交于 2019-12-18 02:53:42
原文: https://blog.csdn.net/libaineu2004/article/details/80554870 ---------------------------------------------------------- Kiev框架简介 kiev是魅族科技推送平台目前使用的Linux-C++后台开发框架。从2012年立项起,先后由多位魅族资深架构师、资深C++工程师倾力打造,到本文写就的时间为止,已经在推送平台这个千万用户级的大型分布式系统上经历了近5年的考验。如今Kiev在魅族推送平台中,每天为上百个服务完成数百亿次RPC调用。 kiev作为一套完整的开发框架,是专为大型分布式系统后台打造的C++开发框架,由以下几个组件组成: RPC框架(TCP/UDP) FastCGI框架 redis客户端(基于hiredis封装) mysql客户端(基于mysqlclient封装) mongodb客户端 配置中心客户端(Http协议, 基于curl实现) 基于zookeeper的分布式组件(服务发现、负载均衡) 日志模块 状态监控模块 核心模块是一个开源的`CSP并发模型`协程库(libgo) 并发模型 Kiev采用了很先进的CSP开发模型的一个变种(golang就是这种模型),这一模型是继承自libgo的。

JSON-RPC远程调用协议

谁说胖子不能爱 提交于 2019-12-17 02:00:42
1. JSON-RPC简介 2. 请求 3. 响应 4. 错误 4.1. 错误对象 4.2. 错误码 5. 批量调用 6. 示例 6.1. 列表形式参数 6.2. key-value形式参数 6.3. 错误的调用 7. 参考文献 1. JSON-RPC简介 JSON-RPC是一种基于JSON的跨语言远程调用协议。有文本传输数据小,便于调试扩展的特点。 2. 请求 JSON-RPC非常简单,在请求时向服务器传输数据格式如下(基于JSON2.0) { "jsonrpc" : 2.0, "method" : "sayHello", "params" : ["Hello JSON-RPC"], "id" : 1 } jsonrpc:定义JSON-RPC版本。 method:调用的方法名。 params:方法传入的参数,若无参数则为null。 id:调用标识符。可以为字符串,不推荐包含小数(不能准确二进制化),或为null(可能引起混乱)。 3. 响应 服务器返回的数据格式也为JSON,其格式如下: { "jsonrpc" : 2.0, "result" : "Hell JSON-RPC", "error" : null, "id" : 1 } jsonrpc:定义JSON-RPC版本。 result:方法返回值,调用成功时,不能为null,调用错误时,必须为null。 error

【基础】RPC、JSON-RPC和HTTP区别

不想你离开。 提交于 2019-12-14 01:10:53
一. RPC RPC是什么 RPC(Remote Procedure Call)指的是远程过程调用,简单的说,RPC就是从一台机器上通过参数传递的方式调用另一台机器上的一个函数或方法并得到响应结果。 RPC会隐藏底层的通讯细节。 RPC是一个请求响应模型,客户端发起请求,服务器返回响应。 RPC在使用形式上像调用本地函数一样去调用远程的函数。 常见的RPC框架 dubbo: 阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 motan: 新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。 rpcx: Go语言生态圈的Dubbo,比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。 gRPC: Google开发的高性能、通用的开源RPC框架,主要面向移动应用开发并基于HTTP2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 thrift: Apache的一个跨语言的高性能的服务框架 JSON-RPC: JSON

c# grpc

不想你离开。 提交于 2019-12-12 15:03:43
刚接触RPC时只知道概念是远程过程调用协议,分为服务端和客户端,客户端请求服务端,服务端再回应客户端,粗看和HTTP一应一答没有什么区别。既然有着存在即合理的说法,网上找找说法,有的讲的太深感觉太啰嗦,有的自己用了也没了解为什么要用。自己看了后总结一下,可能不是很对。 首先RPC和HTTP不是同层次概念,HTTP是WEB的通信协议,RPC应该是在HTTP更上层的一种通信概念或者规范,PRC框架程序本身需要使用通信协议和数据协议来实现,换句话说就是可以用HTTP作为通信协议来实现RPC框架。以简单的HTTP和JSON来实现也可以说符合RPC定义,但是几乎没有人会这么做,因为低效,和直接使用HTTP请求没啥区别。 现在一些RPC框架基本用来服务于后端的通信。随着业务越来越复杂,系统会拆分成不同的服务,比如用中心,财务中心等等,用户的一个业务请求由多个服务来处理,服务于服务之间有着频繁的通信。这种场景中如果用curl请求http接口性能上是低效的,因为http请求会带一大堆头报文信息,而且http会频繁的建立连接和断开连接消耗资源。而目前的主流RPC框架服务端和客户端之间的通信基本是长连接或者连接复用等来避免频繁建立断开连接的情况,而且RPC通信也不会带很多报文头信息增加通信成本。因此这些框架是面向服务的。当然在master-slave集群通信中,如果RPC框架程序符合通信需求

进程间通信/RPC/Thrift RPC介绍

此生再无相见时 提交于 2019-12-12 14:18:55
进程间通信 (IPC) 分为 (1)本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。 (2)远程过程调用(RPC)RPC类似于LPC,只是在网上工作 RPC(Remote Procedure Call远程过程调用)是一种应用层协议,用于实现进程间通信,并封装了远程调用的细节。目前的RPC框架大致有两种不同的侧重方向,一种偏重于服务治理(如Dubbo、DubboX)等,另一种偏重于跨语言调用(如Thrift、gRPC、Hessian等)。 Thrift是一个典型的C/S结构,用户在thrift描述文件(IDL)中声明自己的服务,包括相关数据结构定义和服务接口声明;通过代码生成工具生成服务端和客户代码(可以为不同语言),开发人员在服务端实现服务,在客户端调用服务即可实现不同语言间的远程服务调用。 Thrift RPC 分层架构如下: 来源: CSDN 作者: wyy_blog 链接: https://blog.csdn.net/qq_36616692/article/details/103486583

如何从0到1设计一个类Dubbo的RPC框架

和自甴很熟 提交于 2019-12-11 23:26:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RPC和RPC框架 1.RPC(Remote Procedure Call) 即远程过程调用, 主要解决远程通信间的问题,不需要了解底层网络的通信机制。 2.RPC框架 RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式、以及通信细节。 实际使用中,并不需要关心底层通信细节和调用过程,让业务端专注于业务代码的实现。 国内大家熟知的PRC框架,阿里的HSF和Dubbo(开源) Dubbo的发展由来 1. 业务规模小 比如早期一个应用Java War包,将所有功能都打包,部署在一个单机服务器,调用接口也比较方便,不涉及到任何分布式场景。 2.业务规模变大 随着业务的快速发展,业务越来越多、子系统也越来越多时。比如:淘宝的交易系统、商品系统、用户系统、评价系统…上百个系统的出现。 系统变得越来越复杂,业务代码依然耦合在一起。比如最早期的淘宝denali工程,包含所有业务系统的代码,就仅打包部署都需要很长的时间。 并且,随着每个业务线的快速发展,业务代码耦合在一起,上线后出现问题急需要回滚代码,拉分支、大量的代码merge工作,这个过程极其痛苦。 这个时候,你会发现技术已经成了业务的瓶颈,急需把业务单独抽离出来,各自单独部署。 3.Dubbo和HSF的出现 应用系统一旦涉及到拆分部署,问题就来了

第6章 RPC之道

ⅰ亾dé卋堺 提交于 2019-12-10 13:23:29
    6.1 认识RPC      分布式、微服务的架构思维中都不能缺少 RPC 的影子       RPC(Remote Procedure Call)远程过程调用。通过网络在跨进程的两台服务器之间传输信息,我们使用的时候不用关心网络底层的实现,通过RPC调用远程服务就像本地调用系统内部方法一样方便。      在 OSI 网络通信模型中,RPC跨越了传输层和应用层,使开发分布式应用程序变得非常方便。      RPC基本的调用过程如下图。客户端发起一个 RPC请求,本地调用 client stub 负责将调用的接口、方法和参数按照事先约定好的协议进行序列化,然后由 RPC 框架的 RPCRuntime 实例通过 socket 传输到远程服务器上。      远程服务器端 RPCRuntime 实例收到请求后再通过 server stub 进行反序列化,发起最终的 server method 调用。       一个良好的 RPC框架要兼具可靠性和易用性,可靠性方面要保证 I/O、序列化等准确处理,还要考虑网络的不确定性,心跳、网络闪断等因素;易用性方面要考虑超时与重试机制的控制,同步和异步调用的使用等。以上都是考量一个 RPC框架好坏的标准。       目前有很多优秀的开源 RPC框架,比如国内的 Dubbo(阿里)、Motan(新浪微博)等。   6.2