rpc

NFS原理

為{幸葍}努か 提交于 2019-11-30 19:14:53
1、什么是NFS? 全称 network file system 网络文件系统 通过网络存储和组织文件的一种方法或机制。 什么是文件系统? 2、为什么要用共享存储? 前端所有的应用服务器接收到用户上传的图片、文件、视频,都会统一 的放到后端的存储上。 为什么要共享?所有节点服务器都需要将内容存到存储上,取的统一来取。 3、RPC与NFS如何通讯    因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定 ,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。   那么RPC又是如何知道每个NFS功能的端口呢?   首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息

【Java】分布式RPC通信框架Apache Thrift 使用总结

↘锁芯ラ 提交于 2019-11-30 18:50:34
简介   Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。   RPC即Remote Procedure Call,翻译为远程过程调用。任何RPC协议的实现终极目标都是让使用者在调用远程方法的时候就像是调用本地方法一样简单,从而提高使用远程服务的效率。   现代互联网架构多数基于SOA思想而搭建,即面向服务化的架构。服务提供方称为Provider,服务的使用方称为Consumer,有时也把服务提供方称为Server端,使用方称为Client端,即典型的CS模型。这里的远程调用,主要指跨进程的调用,Provider和Consumer可能是同一机器的不同进程,也可能在不同的机器,通过网络相互通信,大部分情况下两者会部署在不同的物理机器上,这种情况下由于网络通信的开销就会对RPC框架的性能要求极高。 下面分别从服务端和客户端的视角来介绍Thrift在RPC中的应用。 服务端(Server) 服务端需要发布一个服务给别人使用,首先要约定好服务的接口,包括以下几个部分: 服务的名称 服务使用时的参数 返回结果 Thrift自己规定了一套接口定义语言(IDL)来描述服务,用后缀为

Hadoop 中 IPC 的源码分析

独自空忆成欢 提交于 2019-11-30 18:09:23
最近开始看 Hadoop 的一些源码,展开 hadoop 的源码包,各个组件分得比较清楚,于是开始看一下 IPC 的一些源码。(版本是 1.0.4 中的 ipc 包,多谢 @上古进程 提醒) IPC模块,也就是 进程间通信模块,如果是在不同的机器上,那就可以理解为 RPC 了,也就是远程调用。事实上, hadoop 中的 IPC 也就是基于 RPC 实现的。 使用 sloccount 统计一下 ipc 包中代码的行数,一共是 2884 行。也就是说,IPC 作为hadoop的基础组件,仅仅用了不到3000行的代码,就完成得稳定且富有效率。 IPC 中的关键类关系: 对用户而言,可以直接使用的就是绿色的类。 通过 RPC 这个门面: 客户端可以创建相应的 proxy,接着就可以进行远程调用。 而服务提供者则可以创建相应的 server,并进行相应的生命周期管理(start、stop),从而提供服务。 序列化 从上图也可以看出,client 和 server 的交互,是通过网络 connection, 而走网络的调用,是需要走序列化/反序列话的过程的。 这个过程, IPC 使用了 Hadoop 的自己的序列化机制,一切都在 Writable 接口中,只要给定 writable 的 DataOutput 和 DataInput,就可以让 Writable 自己实现序列化。 一些问题和思考

第09章文件系统选型-NFS网络文件及排错

孤街醉人 提交于 2019-11-30 18:00:28
第09章文件系统选型及NFS网络文件 9.1文件系统知识详解 9.1.1什么是文件系统 文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘或分区上的组织文件方式的方法,是组织储存文件或者数据的方式,目的是易于查询和存储数据,因此,如果磁盘上没有文件系统也就无法储存数据,再磁盘分区后能够使用之前必须建立对应的文件系统才行。 文件系统是基于存储设备的,比如硬盘或者光盘,并且包含文件物理位置的维护,文件系统也可以说是虚拟数据或者网络数据的存储方法。 文件系统的分区格式创建文件系统才能存放数据,不同的分区。 Linux下常见的文件系统ext2,ext3,ext4,zfs,xfs和Reiserfs. Windows下常见的NTFS,FAT32 9.1.2文件系统选型简单介绍 1)SAS/SATA硬件文件系统选择: Reiserfs 大量小文件业务首选reiserfs Xfs 数据库业务。 xt4 视频下载,流媒体,数据库,小文件业务选择。 Ext2 蓝汛的cache业务,cdn网站加速业务,有缓存,没有日志,所以可以用。 9.2NFS的介绍 什么是NFS?NFS是Network File System的缩写,他的主要功能是通过网络让不同的主机系统之间乐意彼此共享文件或者目录,NFS客户端(一般为应用服务器,如web

理解rpc协议,为什么使用rpc

◇◆丶佛笑我妖孽 提交于 2019-11-30 15:53:11
RPC 全称 Remote Procedure Call——远程过程调用。在学校学编程,我们写一个函数都是在本地调用就行了。但是在互联网公司,服务都是部署在不同服务器上的分布式系统,如何调用呢? RPC技术简单说就是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明。 下图是客户端调用远端服务的过程: 1)客户端client发起服务调用请求。 2)client stub 可以理解成一个代理,会将调用方法、参数按照一定格式进行封装,通过服务提供的地址,发起网络请求。 3)消息通过网络传输到服务端。 4)server stub接受来自socket的消息 5)server stub将消息进行解包、告诉服务端调用的哪个服务,参数是什么 6)结果返回给server stub 7)sever stub把结果进行打包交给socket 8)socket通过网络传输消息 9)client slub 从socket拿到消息 10)client stub解包消息将结果返回给client。 一个RPC框架就是把步骤2到9都封装起来。 为什么需要RPC 1、首先要明确一点:RPC可以用HTTP协议实现,并且用HTTP是建立在 TCP 之上最广泛使用的 RPC,但是互联网公司往往用自己的私有协议,比如鹅厂的JCE协议,私有协议不具备通用性为什么还要用呢?因为相比于HTTP协议

WMI The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

社会主义新天地 提交于 2019-11-30 15:17:50
My application requirement is like below. Application will run on domain admin system which will ping all machine under that domain, it will take disk drive, CPU and RAM details from all domain systems. Whenever I'm trying to ping machine I'm getting error that "The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)" Code I'm using to connect remote machine is ConnectionOptions options = new ConnectionOptions(); options.EnablePrivileges = true; options.Impersonation = ImpersonationLevel.Impersonate; options.Username = System.Configuration.ConfigurationSettings.AppSettings[

Efficient Python IPC [closed]

久未见 提交于 2019-11-30 14:18:10
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 (GUI can be run on the same device, on smartphone, tablet etc, locally or over network). The batch (Python3 IPc library) should work with no problem on Linux, Mac, Windows, ... The IPC should support GUI written in different languages (Python, Javascript, ...) The performance of IPC is

Spring Cloud 与 Dubbo 区别

给你一囗甜甜゛ 提交于 2019-11-30 13:22:43
Dubbo Spring Cloud 服务注册中心       Zookeeper Spring Cloud Netflix Eureka 服务调用方式 RPC           REST API 服务监控 Dubbo-monitor Spring Boot Admin 断路器 不完善 Spring Cloud Netflix Hystrix 服务网关 无 Spring Cloud Netflix Zuul 分布式配置 无 Spring Cloud Config 服务跟踪 无 Spring Cloud Sleuth 消息总线 无 Spring Cloud Bus 数据流 无 Spring Cloud Stream 批量任务 无 Spring Cloud Task ...... ...... ...... 最大的区别:Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。 严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。 总结: Dubbo和Spring Cloud并不是完全的竞争关系,两者所解决的问题域不一样

How to implement a login page in a GWT app?

雨燕双飞 提交于 2019-11-30 13:14:23
问题 My WebApp needs to authenticate user before allowing any sort of access. The scenario I'm trying to implement is a login page with username and password fields. Once user hits "send" button, a sign like "Verifing..." should be shown up while an RPC call verifies credentials. In case of success, load the main app screen. What is the best way to implement that? 回答1: Have you looked at this page ? It describes how to do the following: Create a 'login' page that is based on user/password

Java性能之优化RPC网络通信

痴心易碎 提交于 2019-11-30 10:57:10
服务框架的核心 大型服务框架的核心:RPC通信 微服务的核心是远程通信和服务治理 远程通信提供了服务之间通信的桥梁,服务治理提供了服务的后勤保障 服务的拆分增加了通信的成本,因此远程通信很容易成为系统瓶颈 在满足一定的服务治理需求的前提下,对远程通信的性能需求是技术选型的主要影响因素 很多微服务框架中的服务通信是基于RPC通信实现的 在没有进行组件扩展的前提下,Spring Cloud是基于Feign组件实现RPC通信(基于HTTP+JSON序列化) Dubbo是基于SPI扩展了很多RPC通信框架,包括RMI、Dubbo、Hessian等(默认为Dubbo+Hessian序列化) 性能测试 基于Dubbo:2.6.4,单一TCP长连接+Protobuf(响应时间和吞吐量更优),短连接的HTTP+JSON序列化 RPC通信 架构演化 无论是微服务、SOA、还是RPC架构,都是分布式服务架构,都需要实现服务之间的互相通信,通常把这种通信统称为RPC通信 概念 RPC:Remote Process Call,远程服务调用,通过网络请求远程计算机程序服务的通信技术 RPC框架封装了底层网络通信和序列化等技术 只需要在项目中引入各个服务的接口包,就可以在代码中调用RPC服务(如同调用本地方法一样) RMI RMI:Remote Method Invocation