rpc协议

Linux-存储服务之NFS

夙愿已清 提交于 2019-11-27 02:33:41
NFS介绍 官方文档 NFS(Network File System) 即网络文件系统,它最大的功能就是通过 TCP/IP 网络共享资源。在 NFS 的应用中,本地 NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件一样。 NFS 客户端一般是应用服务器(比如 web ,负载均衡等),可以通过挂载的方式将 NFS 服务器端共享的目录挂载到 NFS 客户端本地的目录下。 因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住,而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成了客户端想要连上服务器时的困扰,因为客户端得要知道服务器端的相关端口才能够进行连接。 因此就需要远程过程调用 ( RPC ) 的服务, RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连接正确的端口上去。那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的想 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报给客户端正确的端口

rpc和webservice的关系简述

旧城冷巷雨未停 提交于 2019-11-26 19:37:46
RPC(Remote Procedure Call,远程过程调用)是一个很大的概念。它是一种通过网络从远程计算机程序上跨语言跨平台的请求服务。RPC能省略部分接口代码的开发,可以跨机器之间访问对象(Java RMI),可以有更方便的加密和更高效的数据传输性能,而不需要了解底层网络技术的协议。RPC不仅可以走HTTP/HTTPS,也可以自定义TCP协议,从而省略HTTP繁杂的规则和冗余信息。 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,实际上就是RPC调用的一种实现。 常用的RPC框架有Dubbo、RML、Grpc、Hessian等。 RPC的主要作用是解决分布式系统中服务之间的调用问题,能够在远程调用时,像调用本地方法一样方便,让调用者感知不到远程调用的逻辑。RPC主要是用在大型企业里面,因为大型企业里面系统繁多,业务线复杂,而且效率优势非常重要。而由于小型企业一般业务简单,不需要进行分布式架构,小型企业主要还是使用WebService中的RESTful WebService,部分特殊业务会使用Soap WebService。 "听到你要离开了,我的心突然有点疼。" 来源: https://www.cnblogs.com/yanggb/p/10872762.html

有趣的RPC理解

孤者浪人 提交于 2019-11-26 16:10:19
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 以上一段话,摘自百度词条,是不是觉得一大堆,很烦;下面给你举个列子,管保你清晰明了: “本地过程调用,就好比你现在在家里,你要想洗碗,那你直接把碗放进洗碗机,打开洗碗机开关就可以洗了。这就叫本地过程调用。” “远程嘛,那就是你老婆现在不在家,跟姐妹们浪去了,突然发现碗还没洗,打了个电话过来,叫你去洗碗,然后你就乖乖的去洗了,这就是远程过程调用啦”    来源: https://www.cnblogs.com/pretttyboy/p/11325806.html

NFS服务的介绍与具体配置

时光毁灭记忆、已成空白 提交于 2019-11-26 13:06:27
一、NFS的介绍 1.概念:它的主要功能是通过网络让不同的主机系统之间可以彼此共享文件或目录。NFS服务器 端共享的数据文件目录挂载到NFS客户端本地系统中(就是某个挂载点下)。从NFS客 户端自己的磁盘分区或者目录一样,而实际上是篡改段的服务器目录。 NFS网络文件系统的使用很像windows系统的网络共享,安全共呢个,网络驱动器映射, 这也和Linux里的samba服务类似。 2.NFS在企业中的应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用于存储共享视频、图片、 附件等静态资源文件 二、为什么需要有共享存储   1.共享存储解决了多台服务器需要数据同步的操作,也就是把文件存在后台的共享存储服务器上, 通过前端网页服务器访问。   提示:中小型互联网公司企业一般不会买硬件存储太贵了,大公司如果发展很快的话,可能会 临时买存储顶一下网站压力,当网站并发继续增大后,硬件存储扩展就相对费劲。 三、NFS挂载原理详细介绍    提示:mount 源 目标 mount 远端地址:/共享目录 /挂载目录    问题:nfs传输端口不固定,导致客户端不知道那个端口进行数据传输    解决方案:就是RPC(中文意识就是远程过程调用)协议/服务来实现的, 四、什么是RPC(中间人 )    因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能都会启用

面经问题整理

别等时光非礼了梦想. 提交于 2019-11-26 12:56:33
面经问题整理 一、HashMap如何实现的? jdk1.7以前,hashMap的数据结构是数组+链表的形式,hashMap中维护着一个Entry[]数组变量,Entry中维护着key,value,hash,next(下一个Entry)。 当向hashMap对象put一个键值对时,首先会先根据key的hashCode值计算出一个值(hashCode值与数组的长度取模),即数组的索引。如果该位置没有对象,则直接将此对象放进数组当中;如果该位置已经存在对象,则顺着该数组的链表一个一个遍历下去,如果根据key的equal方法没有匹配到,则放进链表的第一位,以前的对象链接到此对象之后;如果key的equal方法匹配了,那么将覆盖原有的value值。 hashMap的get方法也类似,也是根据hashCode去找到数组的位置,然后根据equal方法去匹配key值。 如果hash碰撞严重(即链表的长度很长),那么jdk1.7的性能会很差,因为每次put和get都要遍历整个链表去判断key值是否存在,最差的情况时间复杂度为O(n),所以在jdk1.8提出了红黑树的方式实现hashMap,当链表的长度超过阀值(8)时,链表转成了红黑树。 二、RPC的实现原理 RPC:远程过程调用,允许一台计算机调用例外一台计算机的程序得到结果,就像调用本地方法一样。比如两台服务器A,B

Dubble 入门

别等时光非礼了梦想. 提交于 2019-11-26 12:44:44
Dubbo 01 架构模型 传统架构 All in One 测试麻烦,微小修改 全都得重新测 单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难 聚合项目划分 单项目容易 因为某个功能导致整体oom 拆分完 咋实现 SOA 架构: Service-Oriented Architecture 面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。 在没有实施SOA的年代,从我们研发的角度来看,只能在代码级别复用,即Ctrl +V。SOA出现,我们开始走向了模块、业务线的复用。 SOA年代的典型实现: SOAP协议,CXF框架,XML传输 xsd,数据校验 SOA架构伴随着软件研发行业20年的发展,在最初的时候,大型it公司内部系统规模越来越大,IT系统越来越复杂,All in One单体架构的思想导致公司内项目业务和数据相互隔离,形成了孤岛。 最初,我们使用数据库作为项目之间数据交互和中转的平台

RPC(远程过程调用协议)介绍

坚强是说给别人听的谎言 提交于 2019-11-26 05:34:50
RPC框架解释 谁能用通俗的语言解释一下什么是RPC框架? -远程过程调用协议RPC(Remote Procedure Call Protocol) 首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。比如说,一个方法可能是这样定义的:Employee getEmployeeByName(String fullName)那么: 1.首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程所调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。 2.第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或者IP地址)以及特定的端口,方法的名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的haul,还需要一个RMI Registry来注册服务的地址。 3.第三,当A服务器上的应用发起远程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器

Linux NFS服务器的安装与配置

萝らか妹 提交于 2019-11-26 03:52:49
注意:centos6.x以后portmap已经被rpcbind取代,并且随nfs-utils安装一并安装了,下文提到所有portmap都以 rpcbind代替. 一、NFS服务简介 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。 NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。 NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT

linux集群搭建之nfs服务的搭建

北城以北 提交于 2019-11-26 03:37:21
第1章 NFS简介 1.1 什么是NFS NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器共享的数据目录挂载到NFS客户端本地系统中(就是某一个关在点下),从客户端本地看,NFS服务器端共享目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。 NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和linux的samba服务类似,只不过一般情况下,Windows网络共享服务或samba服务用户办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,若是大型网站,那么有可能还会用到更复杂的分布式文件系统Moosefs(mfs)、GlusterFS。 1.2 NFS历史介绍 第一个网络文件系统被称为File Access Listener,由DEC在1976年开发。 NFS是第一个构建在IP协议之上的现代网络文件系统,在20世纪80年代,首先作为实验文件系统,由Sun Microsystems在内部开发完成,NFS协议归属与RFC标准,在随后演化为NFSv2,作为一个标准

微服务架构攀登之路(二)之RPC

℡╲_俬逩灬. 提交于 2019-11-25 21:58:26
1. RPC 简介 ⚫ 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 ⚫ 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 ⚫ 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用 2. 流行 RPC 框架的对比 3. golang 中如何实现 RPC ⚫ golang 中实现 RPC 非常简单,官方提供了封装好的库,还有一些第三方的库 ⚫ golang 官方的 net/rpc 库使用 encoding/gob 进行编解码,支持 tcp 和 http 数据传输方式,由于其他语言不支持 gob 编解码方式,所以 golang 的 RPC 只支持 golang 开发的服务器与客户端之间的交互 ⚫ 官方还提供了net/rpc/jsonrpc 库实现RPC 方法,jsonrpc 采用JSON 进行数据编解码,因而支持跨语言调用,目前 jsonrpc 库是基于 tcp 协议实现的,暂不支持 http 传输方式 ⚫ golang 的 RPC 必须符合 4 个条件才可以 ◼ 结构体字段首字母要大写,要跨域访问,所以大写 ◼ 函数名必须首字母大写(可以序列号导出的) ◼ 函数第一个参数是接收参数,第二个参数是返回给客户端参数,必须是指针类型 ◼ 函数必须有一个返回值 error ⚫