rpc

多语言跨平台远程过程调用【Avro】

不想你离开。 提交于 2019-12-04 03:44:52
##开始 Avro是Apache的Hadoop家族的项目之一。具有性能高、基本代码少和产出数据量精简等特点。不过这是他们宣传广告,我最近也分别研究了Avro和Protobuf。基本的测试代码,不吐不快。 ##安装 ###Java Avro是应运Hadoop而生的,因此主要也是以Java写就。 Java的安装比较简单,往项目中放入Avro及Avro-rpc的jar包便可。我喜欢使用Maven,因此Maven坐标如下: <dependency> <groupId>org.apache.avro</groupId> <artifactId>avro</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>org.apache.avro</groupId> <artifactId>avro-ipc</artifactId> <version>1.7.2</version> </dependency> ###Python 熟悉Python模块安装应该很简单。avro的Python模块可以在 [ https://pypi.python.org/pypi Python][ https://pypi.python.org/pypi ] 下载。下载<code>tar.gz</code>或者<code>zip<

最简RPC框架实现

时光总嘲笑我的痴心妄想 提交于 2019-12-04 02:24:51
【博文总目录>>>】 | 【项目源码>>>】 RPC概述 RPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。 RPC 调用过程 1、Client 客户端调用方法实现,负责发起RPC调用。 2、ClientStub/SereverStub 可以看作一个代理对象,屏蔽RPC调用过程中复杂的网络处理逻辑,使RPC透明化,使得调用远程方法想调用本地方法一样。 3、Server 服务端提供远程服务。 Stub 主要作用 序列化:负责数据的序列化发序列化。 网络传输:数据发送与接收。 注:ServerStub又叫Skeleton。 RPC 实现 远程服务接口 package mongo.rpc.service.api; /** * Author: 王俊超 * Date: 2018-02-04 10:09 * Blog: http://blog.csdn.net/derrantcm * Github: https://github.com/wang-jun-chao * All Rights Reserved !!! */ public interface IHello { public String sayHello (String info); }

GWT + GAE python: frameworks for COMET & RPC

戏子无情 提交于 2019-12-04 02:17:53
问题 Let's say I want to use Google GWT on the client side and Google AppEngine Python on the server side. Furthermore, I want to be able to use RPC calls to the server as well as performing COMET based exchanges. What are my options in term of existing frameworks? 回答1: I found this by googling "gwt python": http://code.google.com/p/python-gwt-rpc/ -- it appears to be unsupported, since App Engine supports Java now. And this, by googling "gwt comet": http://code.google.com/p/rocket-gwt -- which

NFS实现Unix-like文件共享

房东的猫 提交于 2019-12-04 01:52:28
NFS(Network File System)即网络文件系统,是一种使用于分布式文件系统的协议,由Sun公司开发,于1984年向外公布,功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中,在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样. 目前NFS有三个版本,分别是 NFSv2,NFSv3,NFSv4 ,以下是其常用的版本解析: ● NFSv2:是一个古老的版本,但却被众多的操作系统所支持,这样兼容性更好. ● NFSv3:拥有更多的特点,包括更快的速度,更大的单个文件大小,对TCP的支持. ● NFSv4:提供有状态连接,共容易追踪,安全性增强,RHEL7上默认4版本协议. 当2台主机通过网络建立连接时,双方主机就需要提供基本信息,如IP地址、服务端口号等,当有 100 台客户端需要访问某台服务器时,服务器就需要记住这些客户端的IP地址以及相应的端口号等信息,而这些信息是需要程序来管理的. 在 Linux 中,这样的信息可以由某个特定服务自己来管理,也可以委托给 RPC(Remote Procedure Call) 来管理

ToRPC:一个双向RPC的Python实现

偶尔善良 提交于 2019-12-04 01:45:30
简介 ToRPC(Tornado + RPC) 是一个的基于Tornado IOLoop的异步TCP和双向通信的RPC的Python实现。ToRPC非常轻量级,性能优秀(尤其是在PyPy环境下)。 特性 异步 tcp 通信 异步、双向 rpc 地址: https://github.com/yoki123/torpc 背景 在Python中,消息队列、RPC框架都有很多,很多框架的完成度和稳定性都不错了,但是速度却不尽人意(真的就是慢),于是产生了造一个轮子的想法————一款可以压榨服务器资源的RPC框架。 对比多款框架后,发现了 A fast MessagePack RPC library ,它是基于Cython、Gevent、MsgPack完成的一款,它的简洁和高性能吸引了我,再使用过程中,我试图再优化的时候,发现基本上已经达到CPU和网络I/O的瓶颈。 因为使用Cython和gevent,后者底层也是C语言实现的,那么CPU消耗是没有的办法的时候,将MsgPack换成速度更快的marshal速度提升了10%左右,但是流量随之增加了,最后还要考虑marshal跨版本时的兼容问题(ToRPC目前也是marshal)。 既然达到瓶颈了,试试别的框架吧,后来又找到了 echo servers in many languages 。 根据这个代码,Python部分的Echo

NETCONF

此生再无相见时 提交于 2019-12-03 23:11:52
NETCONF 协议(Network Configration Protocol) NETCONF是一个基于XML的交换机配置接口,用于替代CLI、SNMP等配置交换机。 本质上来说,NETCONF就是利用XML-RPC的通讯机制实现配置客户端和配置服务端之间的通信,实现对网络设备的配置和管理。 NETCONF 通过RPC与交换机通信,协议包含四层 i. 安全传输层,用于跟交换机安全通信,NETCONF并未规定具体使用哪种传输层协议,所以可以使用SSH、TLS、HTTP等各种协议, 官方默认使用 SSH 进行加密及数据传输 ii. 消息层,提供一种传输无关的消息封装格式,用于RPC通信,消息层流程如下 : NETCONF中定义了三种消息类型,分别是hello, rpc和rpc-reply, notification。 Ø <hello> <hello>仅用于回话刚刚建立时netconf-server和netconf-client之间进行能力交换。 server和client需要在回话建立后互相发送<hello>消息,并在<hello>消息中携带自身支持的能力,以及支持的netconf协议的版本号,server和client根据自身和对方的能力信息协商使用的netconf版本。 一般来说,C/S双方互发<hello>且协商版本成功后,认为netconf会话建立成功。操作层

一个RPC服务客户端代理中间件的设计过程的回顾

淺唱寂寞╮ 提交于 2019-12-03 22:55:33
一个RPC服务客户端代理中间件的设计过程的回顾 0 前言 近两年来,负责重新设计和开发一组RPC服务调用的中间件的通讯模块,包括RPC服务端模块(RPC服务容器I/O通讯模块),以及一个RPC客户端代理模块。 在整个设计开发过程中,经历了多次模块重构,终于实现预设的功能以及性能目标。 写这篇文章的目的,一是觉得有必要对这两年的思考、设计和开发过程做一次阶段总结,将这段时间的经验和尝试,以文字的形式沉淀下来,二是为了给将来的进步设定一个认知的基线。 1 设计需求 RPC服务通讯中间件的需求,主要设定了功能和性能两方面的内容。总的来说,实现一个高性能、低延迟的RPC服务中间件, 将客户端的业务处理请求,相对均衡地分配到后端服务执行。 1.1 功能需求 RPC服务中间件的通讯模块,主要包括客户端代理和服务端I/O通讯模块两部分组成,实现分布式服务的透明调用。 客户端代理中间件模块的主要功能包括: 接收业务请求并组成RPC请求消息,并发送到远端服务。 监听Socket连接获取服务端回复消息,从回复的RPC消息提取业务对象,返回给业务模块。 服务的发现。客户端可以动态的获取到指定服务实例的地址。 服务Socket连接的动态维护。如运行过程中关闭异常连接、新增连接等。 1.2 性能需求 性能需求主要在于整个通讯模块整体的吞吐量,以及单个消息的处理延时指标上。这些指标主要包括:

我的第3个开源软件:MyThrift

纵饮孤独 提交于 2019-12-03 20:39:31
http://git.oschina.net/qiangzigege/MyThrift 基于以下组件打造的一款轻量级RPC服务框架:thrift(facebook出品)、commons-pool(socket连接池)、自研服务治理框架(zookeeper). MyThrift 敬请关注! 提出问题: 各种存储越来越多(redis,mysql,hdfs,hbase,mq), 让web开发人员自己访问存储,并保证性能,是一件高要求的事情。 造成的结果就是软件开发进度缓慢,性能低下,各种bug. 分析问题: RPC框架:考虑到本人将thrift的源码看过三四遍,尤其是针对网络模块非常熟悉,并在实际生产环境中使用过,thrift性能不错。 TCP/IP:有过2年的TCP/IP报文分析经验,从链路层到应用层都很熟悉。 ZooKeeper:在MySQL-Binlog项目中攒出了一些使用经验。 连接池:使用commons-pool连接池组件。 解决问题: 糅合thrift,zookeeper,commons-pool打造一款轻量级、性能高、上手容易的rpc调用框架, 使得架构师和后台开发人员可以将各种复杂存储的IO访问对外暴露为服务(其实就是跨机器的普通函数调用) 这样web开发人员可以专注于业务逻辑,加速产品迭代,对企业带来的好处不用多说! ---欢迎朋友们加入QQ群528941497

GWT : best way to do an initial RPC call at startup?

血红的双手。 提交于 2019-12-03 20:37:02
What is the best way to perform an initial RPC call at startup with GWT? I would like to retrieve configuration data that are dynamically generated on the server side, when a user loads a page. but If I do an asynchronous RPC call from the browser to retrieve the data, I sometimes don't get a response before the page is fully loaded, resulting in the page not having access to that configuration data. (no Thread.sleep() function for example) thanks thanks to @Steve-J's response, I found a solution... Basically the idea is the following: create a new StartupCompleted event start the initial RPC

Efficient Python IPC [closed]

半世苍凉 提交于 2019-12-03 20:09:00
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 4 months ago . I'm making an application in Python3, which will be divided in batch and gui parts. Batch is responsible for processing logic and gui is responsible for displaying it. Which inter-process communication (IPC) framework should I use with the following requirements: The GUI can be run on other device than batch