rpc

REST vs JSON-RPC? [closed]

本小妞迷上赌 提交于 2019-12-17 04:08:54
问题 Closed . This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 2 months ago . I'm trying to chose between REST and JSON-RPC for developing an API for a web application. How do they compare? Update 2015: I have found REST easier to develop and use for an API which is served on Web/HTTP, because the existing and mature HTTP protocol which is understood

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

框架day13-分布式RPC框架Apache Dubbo

自作多情 提交于 2019-12-16 09:03:49
分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构。 1.1 单体架构 架构说明: ​ 全部功能集中在一个项目内(All in one)。 架构优点: ​ 架构简单,前期开发成本低、开发周期短,适合小型项目。 架构缺点: ​ 全部功能集成在一个工程中,对于大型项目不易开发、扩展和维护。 ​ 技术栈受限,只能使用一种语言开发。 ​ 系统性能扩展只能通过扩展集群节点,成本高。 1.2 垂直架构 架构说明: ​ 按照业务进行切割,形成小的单体项目。 架构优点: ​ 技术栈可扩展(不同的系统可以用不同的编程语言编写)。 架构缺点: ​ 功能集中在一个项目中,不利于开发、扩展、维护。 ​ 系统扩张只能通过集群的方式。 ​ 项目之间功能冗余、数据冗余、耦合性强。 1.3 SOA架构 SOA全称为Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。 站在功能的角度,把业务逻辑抽象成可复用的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。 架构说明: ​

分布式系统的发展演变以及RPC简介

限于喜欢 提交于 2019-12-16 00:03:38
场景 什么是分布式系统 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。 分布式系统是建立在网络之上的软件系统。 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 单一应用结构特点 适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点: 1、性能扩展比较难 2、协同开发问题 3、不利于升级维护 垂直应用结构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 垂直应用结构特点 通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。 缺点: 公用模块无法重复利用,开发性的浪费 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

php的swoole和rpc区别

∥☆過路亽.° 提交于 2019-12-14 16:18:03
RPC是远程过程调用(Remote Procedure Call)的缩写形式。 SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。 推荐学习 (swoole教程) 进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信(IPC)。 本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。 远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNⅨ操作系统的计算机中。 Swoole框架提供的RPC服务器支持了单连接并发、PHP-FPM下长连接维持等特性。在车轮互联大规模应用,构建了4层架构的服务化架构。 很多企业使用Http Rest实现RPC通信,实现简单可以利用到很多现成的工具和方案。但是Http通信协议存在2个严重的缺陷。 Http不支持单连接并发,如果要同时并发很多请求,必须创建大量TCP连接。如果php-fpm开启500个进程,每次需要128个并发,那么就需要创建64000个TCP连接。 Http对长连接支持不够好,很多Http程序都是设计为短连接的,在请求时创建TCP连接

“Already listening” when invoking an RPC call

只愿长相守 提交于 2019-12-14 02:49:55
问题 I use Microsoft RPC for interprocess communications. I have an interface with a set of methods accepting a byte pipe as an "in" parameter (IDL description): [ uuid(ActualGuidHere), version(1.0), pointer_default(unique) ] interface IMyInterface { //other irrelevant methods here error_status_t rpcDoAction( [in] pipe byte params ); //more irrelevant methods here } every once in a while when I invoke such methods on a client side through a client stub generated by MIDL and delegated to

【基础】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

Client/Server role reversal with SimpleXMLRPCServer in Python

浪尽此生 提交于 2019-12-13 19:17:22
问题 I'm working on a project to expose a set of methods from various client machines to a server for the purpose of information gathering and automation. I'm using Python at the moment, and SimpleXMLRPCServer seems to work great on a local network, where I know the addresses of the client machines, and there's no NAT or firewall. The problem is that the client/server model is backwards for what I want to do. Rather than have an RPC server running on the client machine, exposing a service to the

How to pass data from gRPC interceptor to service method call?

主宰稳场 提交于 2019-12-13 17:05:23
问题 I need to pass some data from my ServerAuthIntereptor to call. ServerAuthInterceptor: // used in context parameters map private static final String AUTH_CONTEXT = "authContext"; private static final Context.Key<Object> AUTH_CONTEXT_KEY = Context.key(AUTH_CONTEXT); // ... @Override public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall( ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) { // check credentials from header // remember account and session

Get data from dynamic HTTPService Asynchronous to populate an Advanced Data Grid Flex

∥☆過路亽.° 提交于 2019-12-13 07:38:22
问题 I have to populate an Advanced Data Grid which have the following fields: Continent->State->Society-->Actual Value-->Estimate Value I want to simulate a financial market so i have to change some of the values by asynchronous request from an HTTPService; have you got any idea to do so? Thank you. If necessary i'll post the .as file, but it is generated automatically by Flex Builder. Here's the code of the client side Flex/Air application: <?xml version="1.0" encoding="utf-8"?> <mx