rpc

[6][lab] lab1: map reduce

我怕爱的太早我们不能终老 提交于 2020-01-30 01:44:08
lab1 map reduce 对比了一下2020和之前的lab1,代码结构有一些变化,2018作业代码侧重于实现map reduce以及schedule部分,其他部分由框架给出,2020则是给出了map reduce部分,并将mr和app利用plugin分开表达,同时需要lab开发整个mr框架部分,借鉴已完成的2018可以顺利完成该部分实验。 master,由启动+wait,变更为启动+轮询,worker无变化 整体框架,master维护了作业信息,输入的文件总数,整体作业进度信息,完成后完成清理和返回 work通过rpc注册自己的存在,然后按照master发布的task执行任务,交互通过共享文件系统实现 net/rpc 提供rpc功能,可以通过本地unix socket或者tcp socket,TODO 思考如何基于net基本功能实现一个rpc库 server指定类型,以及方法,都是可导出的 server注册服务,handle,listen,server来开启server rpc服务 client可以选择同步call或者异步Go方法来执行rpc package server import "errors" type Args struct { A, B int } type Quotient struct { Quo, Rem int } type Arith int func

NFS服务

倖福魔咒の 提交于 2020-01-28 16:04:51
介绍 NFS(NetworkFileSystem),网络文件系统,基于RPC实现在远程主机上完成读写功能,NFS服务端功能由Kernel中提供,所以只能在Linux、UNIX中使用,另外只能根据IP地址限制用户访问。 RPC (Remote Procedure Call),实现两个远程主机之间功能函数的调用、参数传递功能。在Linux中一些通用功能都被做成库,本地的应用程序需要使用这些功能时,直接调用即可,这就叫本地调用;本地所需要的库(功能函数)在远程主机上,这时候就可以使用RPC协议将调用请求、参数封装成报文在网络上传输,并且服务端能理解之后将调用请求在本地执行返回结果,这称为远程过程调用。很多服务都会基于RPC完成某些功能, 例如NFS服务就基于RPC调用远程 主机上的open() ,read(),write(),close()…等函数将执行结果返回本地,完成文件共享功能。 工作原理 1. 服务端启动时将NFS功能(NFS daemons)像RPC进行注册端口。 2. 客户端通过RPC连接服务器获取NFS Daemon注册的端口。 3. 客户端连与NFS daemon进行联机,mountd对用户进行认证,nfs提供文件共享服务功能。 NFS daemon rpc.nfsd 提供NFS服务 rpc.mountd 用于验证用户是否有权限使用NFS rpc.lockd与rpc

Hadoop RPC源码分析

大城市里の小女人 提交于 2020-01-27 11:25:43
Hadoop RPC源码分析 上一篇文章 http://www.cnblogs.com/dycg/p/rpc.html 讲了Hadoop RPC的使用方法,这一次我们从demo中一层层进行分析。 RPC说白了,就3个核心,交互协议、服务端、客户端。 在Hadoop RPC(hadoop-common-2.4.jar)中也是这样 交互协议 org.apache.hadoop.ipc.VersionedProtocol ,所有协议的父类 其实就2个方法,版本与签名。不同版本与签名的协议,就算同一个类名也无法通信。 服务端: RPC.Server 处理客户端的连接请求,并处理相关业务,最后返回结果 客户端: Client,封装请求数据,并接收Response 好,正式开始分析源码吧。 协议部分,我就不说了,就是实现VersionedProtocol接口并添加一些业务方法即可。 我们从客户端程序入口点开始分析,先看看客户端是如何取得协议对象的。 想要与服务端通信就先要得到协议对象,RPC.getProxy就是得到协议对象的方法,沿着代码进入最底层,你会发现,它默认先得到一个RpcEngine(默认实现是WritableRpcEngine),它是什么呢?简单点说就是,它相当于我们启动服务器,获取协议的类。有了WritableRpcEngine后,调用它的getProxy方法

Rpc和Rest 笔记

别说谁变了你拦得住时间么 提交于 2020-01-27 02:55:22
1.20 笔记 REST设计风格遵循的要点 1.利用http方法让接口统一化,rest充分利用http自身的GET,POSST,PUT,DELETE的方法实现接口的统一化,比如对统一资源进行crud操作 2.利用http状态码返回状态信息 200 ok 400 bedRequest 404 资源路径未找到 500 网络服务端错误 3.利用Http报头告知对方如何处理本次请求,http报头是描述客户端与服务器之间的请求或者响应应该如何处理本次请求的 4.无状态,rest设计风格要求Server无状态,服务器不保存请求信息,客户端每次都必须带上自己的状态去请求服务器,然后返回sessionID,保存chookies。 通过session保存状态不是rest的设计风格,因为session将状态信息保存到服务器上,是靠服务器维持的,不是rest的设计风格 通过Token保存状态时rest的设计风格,因为token是保存在客户端中的,当用户登录成功后,服务器会返回一个token给客户端,客户端将Token保存到Chookies中,每次客户端发起请求都是从客户端的Chookies中,再通过服务器验证Token的有效性即可 有状态:信息保存在服务器上 无状态:信息保存在客户端的Chookies 通过无状态实现负载均:通过rest的无状态的原则,在分布式的web系统上,有多个可用服务器

Spark的Rpct模块的学习

混江龙づ霸主 提交于 2020-01-26 22:00:02
Spark的Rpc模块是1.x重构出来可,以前的代码中大量使用了akka的类,为了把akka从项目的依赖中移除,所有添加了该模块。先看下该模块的几个主要的类 使用EA把该模块所有的类都添加进来了 要看懂该模块还是要先了解akka, akka有Actor和ActorRef两个类,一个用于接收消息,一个用于发送消息。正好对应该模块的RpcEndpoint和RpcEndpointRef两个类。 下面大致介绍下这几个类,附带一些scala的特性 1:RpcAddress 该类是一个case class, 用来表示主机名和端口号 , case class也可以添加方法,以前还以为不可以呢 它的伴生对象用于从URI,String等构造一个RpcAddress对象 2:RpcTimeout 表示一个超时时间,话说该类的职责有点乱,竟然还有下面的一个方法 def awaitResult[T](awaitable:Awaitable[T]): T ={ try{ Await.result(awaitable, duration) }catch addMessageIfTimeout } 在规定时间内返回对象, Await是scala并发库中的一个对象,result在duration时间片内返回Awaitable的执行结果,ready表示

NFS介绍及简单实施

孤人 提交于 2020-01-26 10:22:56
什么是NFS ? NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。 NFS一般用来存储共享视频,图片等静态数据。 NFS挂载原理 NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器时通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口

微服务简介

匆匆过客 提交于 2020-01-26 07:21:13
常见的远程调用方式有以下几种: - RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型 - Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。 现在热门的Rest风格,就可以通过http协议来实现。 RPC,即 Remote Procedure Call(远程过程调用),是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。 通过上面的概念,我们可以知道,实现RPC主要是做到两点: - 实现远程调用其他计算机的服务 - 要实现远程调用,肯定是通过网络传输数据。A程序提供服务,B程序通过网络将请求参数传递给A,A本地执行后得到结果,再将结果返回给B程序。这里需要关注的有两点: - 1)采用何种网络通讯协议? - 现在比较流行的RPC框架,都会采用TCP作为底层传输协议 - 2)数据传输的格式怎样? - 两个程序进行通讯,必须约定好数据传输格式。就好比两个人聊天

Drupal RPC Fault

◇◆丶佛笑我妖孽 提交于 2020-01-25 21:22:25
问题 Hopefully someone can help me with this problem. I'm starting to work with Drupal Services & Adobe Flex. I created a simple service and installed the AMFPHP module. In Adobe Flex when running the application, I don't seem to have a problem...and everything runs fine showing the data However, after uploading the .html and .swf files to my webserver and going to the site [http://www.bkardi.com/top25/Top25UI.html] I get the following error Authentication Error [RPC Fault faultString="Send failed

linux nfs文件共享

天大地大妈咪最大 提交于 2020-01-25 17:51:20
这节我们介绍NFS的相关概念,以及怎样配置NFS和在client中查看NFS。 NFS的配置过程非常easy。 在server端中编辑 /etc/exports 文件,加入例如以下内容: /home/nfs-share 192.168.1.122 *(rw,sync) 第一项是要共享的文件夹。后者为共享的配置參数一般为:*(rw,sync,no_root_squash,no_all_squash,no_subtree_check) 然后开启NFS和portmap服务: /etc/init.d/nfs start //用service nfs start也能够 /etc/init.d/portmap start //用service portmap stasrt也能够 在centos6.5中portmap已经改为rpcbind 在client。用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file挂载server端的共享文件夹到本地的/home/remote-file挂载点,然后我们就能够在client上应用到远程主机上的/home/nfs-share文件夹了。 想要系统在开机时自己主动挂载,改动/etc/fstab文件,把NFSserver的共享文件夹加入进去就能够了,这个不用多说。

Serializable Hibernate data object for GWT RPC

你离开我真会死。 提交于 2020-01-25 04:51:10
问题 I have a simple POJO mapped to a table using Hibernate. Which works just fine. public class Patient implements Serializable { private int patientId; private String firstName; private String lastName; private Set<Prescription> patientPrescriptions; public Patient() {} ... } My problem is I want to be able to serialize the object so I can get it trough the wire for my GWT-RPC calls. If my async service return this object I get an error: com.google.gwt.user.client.rpc.SerializationException: