rpc

GWT - RPC SerializationException

假如想象 提交于 2019-11-27 20:42:24
It's been a while since I've been doing GWT and I needed something small done quickly. I set things up and now I have a RPC I need, but it fails. The RPC is supposed to give me a ArrayList, and Vacancy is located in #projectname#.client.model. The call is made in #projectname#.client.model. The interfaces for my Services are in #project#name.client.Service. Finally, the calls of course go to #projectname#.server. Vacancy implements IsSerializable. The Exception I get from running my RPC is the following: Starting Jetty on port 8888 [WARN] Exception while dispatching incoming RPC call com

inter jvm communication [closed]

旧时模样 提交于 2019-11-27 19:55:38
I am looking for an inter-process communication library in Java. I am looking to send small messages between JVMs and would like to do it using shared memory if I could. Java NIO has support for memory-mapped files. If multiple JVMs memory-map the same file they can use it as shared memory. Here is an example of memory mapping a file. try { int shmSize = 1024; RandomAccessFile file = new RandomAccessFile("shm.raw","rw"); // inialize file size if(file.length() < shmSize) { byte[] tmp = new byte[shmSize]; file.write(tmp); file.seek(0); // seek back to start of file. } // memory-map file.

使用Java快速入门Thrift

元气小坏坏 提交于 2019-11-27 18:25:40
Apache Thrift 是一个facebook建立的RPC框架,现在是一个Apache的顶级项目。Thrift允许通过一个跨语言的定义文件的方式定义数据类型和服务接口,这个文件作为RPC客户端和服务器通信的标准,你也可以去看看Thrift的白皮书了解更多信息。 根据Apache Thrift的官方站点的描述,Thrift是一个: software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. 安装Thrift比较的烦,但是在Windows下官方编译了一个thrift.exe,下载安装就行了。 写 Thrift定义文件(.thrift file) 如果你之前有接触过这个东西的话,写定义文件非常的简单

rabbitmq消息RPC

泪湿孤枕 提交于 2019-11-27 16:56:15
RPC:Remote Producre Call     远程  过程  调用 str(uuid.uuid4())  唯一标志符 队列谁先声明谁先启动 命令+&  异步  fg 查看正在执行的任务 fg+序列号  查看对应的任务 [ 序列号 ] import pika import uuid class FibonacciRpcClient(object): def __init__(self): credentials = pika.PlainCredentials('alex', 'alex123') self.connection = pika.BlockingConnection(pika.ConnectionParameters( '192.168.14.52', credentials=credentials)) channel = self.connection.channel() self.channel = self.connection.channel() result = self.channel.queue_declare(exclusive=True) self.callback_queue = result.method.queue self.channel.basic_consume(self.on_response, no_ack=True,

【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计

拟墨画扇 提交于 2019-11-27 16:06:12
前言 最近在读《大型网站系统与Java中间件实践》这本书,第一次系统的简单接触分布式的东西,了解到从单机应用到分布式集群大型应用的道路上,应用的拆分与服务化对于系统的维护、各模块的解藕等都非常重要。这本书的第四章详细介绍了服务框架的各个部分的实现原理。他分别从客户端(服务调用者)以及服务端(服务发布者)的角度介绍了服务框架基本的工作原理,又在基本工作原理的基础上,介绍了服务治理等更加生产实际化的部分。 研究生学习期间,接触过一些rpc远程调用框架的知识,例如webservice等等,关于webservice的基本知识、发布调用等等进行过简单基本的学习与实验。16年暑假在淘宝实习,接触了阿里非常重要的一个远程调用框架的中间件——HSF,当时简单的看了下源码,明白了HSF基本的工作原理(其实就是所有远程调用框架的基础原理),又在实习转正答辩的时候,了解了下webservice与hsf的不同。但有一点可以肯定的是,他们都是远程调用服务框架,基础的实现原理都是一致的。因此我想对这个一般rpc框架都会实现的原理亲身实现一波,于是便有了这篇博客。整个系列目前分为三篇博客,分别是想法与设计、实现、提升。 其实很惭愧的是我既没有看过webservice的源码、也没有深入仔细推敲过HSF的源码,因此准备在完成这个基础的不能再基础的RPC服务框架之后,认真分析一下HSF的源码,也为今年入职淘宝做准备。

【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用

柔情痞子 提交于 2019-11-27 16:05:51
【如何实现一个简单的RPC框架】系列文章: 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用 【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式 【远程调用框架】如何实现一个简单的RPC框架(四)优化二:改变底层通信框架 【远程调用框架】如何实现一个简单的RPC框架(五)优化三:软负载中心设计与实现 第一个优化以及第二个优化修改后的工程代码可下载资源 如何实现一个简单的RPC框架 服务注册查找中心 1 接口设计 11 服务注册接口 12 服务ip地址列表查询接口 13 服务信息查询接口 2 类设计 21 UML类图 22 核心代码 LCRPC服务框架核心部分 1 服务框架UML类图 2 服务调用部分 3 服务发布部分 LCRPC服务框架使用 1 服务发布 2 服务调用 3 效果 参考 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 ,对应四个模块一共创建了四个Java工程,他们分别是: 【ServiceAccessCenter】 :一个Java Web应用,服务注册查找中心 【LCRPC】 :LCRPC服务框架的核心部分,最终利用Maven生成一个jar包提供服务发布以及远程调用功能 【LCRPCTest】 :服务端的测试部分,发布一个计算器服务

【远程调用框架】如何实现一个简单的RPC框架(五)优化三:软负载中心设计与实现

[亡魂溺海] 提交于 2019-11-27 16:05:31
【如何实现一个简单的RPC框架】系列文章: 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用 【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式 【远程调用框架】如何实现一个简单的RPC框架(四)优化二:改变底层通信框架 【远程调用框架】如何实现一个简单的RPC框架(五)优化三:软负载中心设计与实现 第一个优化以及第二个优化修改后的工程代码可下载资源 如何实现一个简单的RPC框架 前言 主要功能与结构 1 软负载中心的主要功能 11 聚合地址信息 12 生命周期感知 2 软负载中心的结构 21 服务端 22 客户端 设计 1 软负载中心维护的三类重要数据 11 聚合数据 12 订阅关系 2 软负载中心工作模式 3 软负载中心设计 31 通信数据结构设计 32 服务端维护三种数据结构设计 33 客户端接口设计 实现与使用 1 资源下载 2 使用示例 21 服务发布 23 服务订阅 24 效果 1.前言 在博客 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 中我们介绍了“服务注册查找中心”,负责服务信息的管理即服务的注册以及查找,在目前为止的实现中,我们采用web应用的方式,以http协议接口的方式为服务发布者以及调用者提供使用接口

【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式

倖福魔咒の 提交于 2019-11-27 16:05:20
【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式 原创 2017年03月29日 09:43:08 514 【如何实现一个简单的RPC框架】系列文章: 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用 【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式 【远程调用框架】如何实现一个简单的RPC框架(四)优化二:改变底层通信框架 【远程调用框架】如何实现一个简单的RPC框架(五)优化三:软负载中心设计与实现 第一个优化以及第二个优化修改后的工程代码可下载资源 如何实现一个简单的RPC框架 这篇博客,在(一)(二)的基础上,对第一版本实现的服务框架进行改善,不定期更新,每次更新都会增加一个优化的地方。 1优化一利用动态代理改变用户服务调用方式 1 目的 2 方法 3 使用 1、优化一:利用动态代理改变用户服务调用方式 1.1 目的 改变用户使用LCRPC进行服务调用的方式,使得用户像访问本地接口一样访问远程服务。 在第一个版本的服务框架开发完成后,如果用户希望远程调用一个服务的某一个方法,为了得到正确结果,那么他必须要掌握的信息包括:方法的名称、方法的参数类型及个数、方法的返回值,以及服务发布者提供的二方包和LCRPC依赖。使用时

RPC简述

限于喜欢 提交于 2019-11-27 15:53:16
RPC简述 提问:什么是RPC? PRC是一种远程过程调用框架,相比远程调用,我们可以先理解本地调用,本地调用就是方法A和方法B都写在同一个工程中,然后A可以调用B。但是如果A方法和B方法是属于不同工程中,则需要进行远程调用。 误解:如A工程中需要调用B工程中的方法,一般是将B工程打一个包,然后A中会引入这个包,然后就可以调用到B中的方法了,这种两个工程间没有网络通信则只能称为远程方法的引用,只有两个工程存在网络通信,A调用B的方法并且是B处理后返回给A,才能称为远程过程调用!! RPC远程调用原理 一、RPC是怎么做到远程调用的,其原理是什么? 追根究底,R客户端与服务端建立TCP链接,相比于HTTP通信协议少去应用层的许多东西。数据的传输就是通过这个TCP的链接。 Client:服务消费方 Server:服务提供方 (1).Client以调用本地服务方式调用远程API (2).Client Stub负责接收参数,方法等,将其封装(编码)成能够进行网络传输的消息体 (3).Client Stub负责网络寻址,将消息体发送对应的服务端 (4).Server Stub负责接收消息,并解码成服务端能够识别的信息,调用对应的服务端方法 (5).Server本地服务将调用结果发送给Server Stub (6).Server Stub将返回结果包装成消息体返回给Client Stub (7

RPC from Windows to linux

旧巷老猫 提交于 2019-11-27 14:54:44
问题 Is there some (working) example how to create RPC from windows to linux? Client should be windows NT application, server is linux. It needs to be MSRPC. No Corba, no XML-RPC, SUN-RPC etc MSDN says this: RPC can be used in all client/server applications based on Windows operating systems. It can also be used to create client and server programs for heterogeneous network environments that include such operating systems as Unix and Apple. Unfortunately after spending few hours on google I'm