rpc协议

RPC(remote procedure call)

旧街凉风 提交于 2019-12-04 12:30:14
分布式系统中, 服务之间的相互调用更加方便, 像调用本地服务一样.(无感远程调用) 实现RPC模型的函数和模块有很多, 只要通过该模型来实现远程调用, 都可称呼为RPC Python中的RPC模型包有gRPC,xmlrpc等 但是, 需要明确的一点, RPC只是实现远程调用的一种思维, 一种模型. 许许多多的模块都会使用RPC思想模型进行构建. RPC的调用步骤为: 发送 另端服务 user调用 ==>> client-stub打包参数 ==>> RPCRun发送... RPCRun接受 ==>> Server-stub 解包 ==>> Server进行调用,处理结果. 接受顺序相反: 客户端 Server得到结果,发送 ==>> ServerStub 打包返回值 ==>> RPCRun发送 ... RPCRun接受 ==>> ClientStub解包 ==>> 传递给User RCP模块的工作内容: 除了中间的RPC部分, 其他和本地调用基本一样: 调用, 然后返回结果. 封装在RPC的服务调用部分工作内容: 在调用别的服务器的时候需要. 打包相关参数, 然后通过RPC发送请求并等待返回. 其他服务的RPC接收到请求,解包运行 打包返回. 每个服务要做的就是, 接受RPC解包分析请求, 然后调用服务返回结果, 最后返回内容前依旧打包. 打包解包: 在流程中,

thinkphp rpc

眉间皱痕 提交于 2019-12-04 08:50:08
RPC (Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 ThinkPHP支持广泛的RPC协议,包括PHPRPC、HPRose、JsonRPC以及Yar。 PHPRPC支持 PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。目前该协议的最新版本为 3.0。详细的资料可以参考phprpc官网( http://www.phprpc.org/zh_CN/)

Zookeeper实现简单的分布式RPC框架

╄→гoц情女王★ 提交于 2019-12-04 08:32:32
在分布式系统中,为了提供系统的可用性和稳定性一般都会将服务部署在多台服务器上,为了实现自动注册自动发现远程服务,通过ZK,和ProtocolBuffe 以及Nettyr实现一个简单的分布式RPC框架。 首先简单介绍一下Zookeeper和ProtocalBuffer Zookeeper 是由Apache Handoop的子项目发展而来。是知名的互联网公司Yahoo创建的。Zookeeper为分布式应用提供了高效且可靠的分布式协调服务。 ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。 RPC 就是Remote Procedure Call Protocol 远程过程调用协议。 JAVA对象要能够在网络上传输都必须序列化,使用高效的序列化框架ProtocolBuffer实现序列化。 /** * 序列化工具 * @author zhangwei_david * @version $Id: SerializationUtil.java, v 0.1 2014年12月31日 下午5:41:35 zhangwei_david Exp $ */ public class SerializationUtil

网络服务—NFS

試著忘記壹切 提交于 2019-12-04 06:38:38
什么是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使用了哪些端口

Go微服务 grpc/protobuf

跟風遠走 提交于 2019-12-04 04:15:31
了解grpc/protobuf gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。 Protobuf(Protocol Buffers),是 Google 开发的一种跨语言、跨平台的可扩展机制,用于序列化结构化数据。 grpc与传统的 REST 架构相比,REST架构通过 http 传输 JSON 或者 XML ,会带来了一个问题:服务 A 把原始数据编码成 JSON/XML 格式,发送一长串字符给服务 B,B 通过解码还原成原始数据,通信的总体数据量很大。 但在两个微服务的通信间,我们不需要字符串中的所有数据,所以我们采用难理解但更加轻量的二进制数据进行交互。gRPC 采用的是支持二进制数据的 HTTP 2.0 规范,而protobuf负责处理二进制数据, 它更小、更快、更便捷。 protobuf 目前支持 C++、Java、Python、Objective-C,如果使用 proto3,还支持 C#、Ruby

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) 来管理

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会话建立成功。操作层

spring远程调用

允我心安 提交于 2019-12-03 19:34:02
Spring 远程调用 远程调用是客户端应用和服务端之间的会话。在客户端上所需要的一些功能并不包括在该应用的职能范围内。所以应用向能提供这些功能的其他系统寻求帮助。远程的应用通过远程服务把这些功能公开出来。 一、Spring远程调用概览 Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。 Spring远程调用支持6种不同的RPC模式:远程方法调用(RMI)、Caucho的Hessian和Burlap、Spring自己的HTTP invoker、EJB和使用JAX-RPC 的Web Services。 RPC模式 在何种情况下有用 远程方法调用(RMI) 不考虑网络限制(如防火墙)时,访问/公开基于Java的服务 Hessian或 Burlap 考虑网络限制时,通过HTTP访问/公开基于Java的服务 HTTP invoker 考虑网络限制时,访问/公开基于Spring的服务 EJB 访问用EJB实现的遗留的J2EE系统 JAX-RPC 访问Web Services 其中(来自Spring2.0参考手册): l 远程方法调用(RMI)。通过使用 RmiProxyFactoryBean和 RmiServiceExporter,Spring同时支持传统的RMI(使用java.rmi

打下rpc

一曲冷凌霜 提交于 2019-12-03 12:13:16
什么是RPC RPC(Remote Procedure Call)是远程过程调用,比如说现在有两台服务器A, B,一个在A服务器上的应用想要调用B服务器上的应用提供的某个,由于不在两个方法不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达调用的数据。常存在于分布式系统中。 RPC要解决的问题 建立通信:在客户端与服务端建立起数据传输通道。著名的 [gRPC]( grpc / grpc.io ) 使用的 http2 协议,也有如dubbo一类的自定义报文的tcp协议。 寻址:A服务器上的应用需要告诉RPC框架:B服务器地址、端口,调用函数名称。所以必须实现待调用方法到call ID的映射。 序列化与反序列化:由于网络协议都是二进制的,所以调用方法的参数在进行传递时首先要序列化成二进制,B服务器收到请求后要再对参数进行反序列化。恢复为内存中的表达方式,找到对应的方法进行本地调用,得到返回值。返回值从B到A的传输仍要经过序列化与反序列化的过程。序列化协议如基于文本编码的 xml json,也有二进制编码的 protobuf hessian等。 其实RPC需要了解的基本内容就是上面,我们最想知道这个名词与一般的HTTP相比有啥优势,解决了什么问题。 OSI模型 什么是Http 超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据

nfs存储服务实时同步

不想你离开。 提交于 2019-12-03 06:55:56
1.NFS简介 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源。将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样。 RPC,基于C/S模型。程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节,甚至可以请求对方的系统调用。 对于Linux而言,文件系统是在内核空间实现的,即文件系统比如ext3、ext4等是在Kernel启动时,以内核模块的身份加载运行的。 2.NFS原理 NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现。当NFS启动后,会随机的使用一些端口,NFS就会向RPC去注册这些端口。RPC就会记录下这些端口,RPC会开启111端口。通过client端和sever端端口的连接来进行数据的传输。在启动nfs之前,首先要确保rpc服务启动。 原理如下: 本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client rpc client向rpc server发起连接 在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd