protocol buffers(pytorch的rpc原理)

精英怪
广告

protocol buffers,pytorch的rpc原理?

原理:客户端的应用想发起一个远程调用时,它实际是调用客户端的 Stub。它负责将调用的接口、方法和参数,通过约定的协议规范进行编码,并通过本地的 RPCRuntime 进行传输,将调用网络包发送到服务器。服务器端的 RPCRuntime 收到请求后,交给服务器端的 Stub 进行解码,然后调用服务端的方法,服务端执行方法,返回结果,服务器端的 Stub 将返回结果编码后,发送给客户端,客户端的 RPCRuntime 收到结果,发给客户端的 Stub 解码得到结果,返回给客户端。

protocol buffers(pytorch的rpc原理)

1、对于客户端而言,这些过程是透明的,就像本地调用一样;对于服务端而言,专注于业务逻辑的处理就可以了。

2、对于 Stub 层,处理双方约定好的语法、语义、封装、解封装。

3、对于 RPCRuntime,主要处理高性能的传输,以及网络的错误和异常。

来看一下RPC框架是如何解决上面5个问题的:1、2、3的问题可以由Stub层解决,4的问题可以由服务注册和发布解决,5的问题可以由RPCRuntime解决。

个人理解Stub层的语法、语义约定现在常用的都是协议文件方式,流行的有xml、json、protocol buffers等等,它们各自都带有自己特有的封装解封装方法,封装解封装主要解决两个问题:

1、压缩数据,减少传输数据量;

2、数据结构中字段的映射关系;

主流的RPC框架有哪些?

RPC(Remote Procedure Call)是一种通用远程访问技术,具有客户端/服务器模型,可以实现流行的分布式计算系统。主流RPC框架主要有:

- gRPC:它是一种基于Http / 2标准开发的开源RPC框架。它是Google公司开发的开源项目,以基于流的方式进行通信。

- Apache Thrift:它是一种跨语言的可扩展RPC框架,可以用于实现多种语言之间的通信。

- SOAP:它是一种基于XML的开放式通信协议,类似REST,用于创建分布式应用程序和网络服务。

- CORBA:CORBA是一种通用的,跨平台的,中立的中间件支持组件模型,能够支持众多计算机和网络设备之间的连接。

- RMI:RMI是Java的远程服务接口,用于在不同计算机之间实现对象之间的通信和网络操作。

以上框架是RPC技术的主要应用,此外,还有很多其他的RPC框架,比如:ASP.NET Web API、RESTful、Nano RPC、Xml RPC、ZeroRPC、NServiceBus等。

微服务架构实践中?

微服务之间的通信,一般都是借助于微服务框架完成,一般有REST风格的api通信,和微服务框架结合的RPC.

REST风格的api通信

所谓的REST风格的api通常来讲就是HTTP结合来使用,但是要遵循REST规范的HTTP有如下特征.

统一接口

无状态

缓存

客户端-服务器

分层系统

按需代码(可选)

RPC通信

RPC (Remote Procedure Call)远程过程调用是一个计算机通信协议。我们一般的程序调用是本地程序内部的调用,RPC允许你像调用本地函数一样去调用另一个程序的函数,这中间会涉及网络通信和进程间通信,但你无需知道实现细节,RPC框架为你屏蔽了底层实现。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过「发送请求-接受回应」进行信息交互的系统。

RPC通信通常和微服务框架结合,框架会定于消息的序列化格式,比如谷歌的gRPC框架就是利用protobuff序列化,来序列化消息之后通信。

常见的微服务框架有:

Dubbo

是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。 Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现 。2011 年末对外开源,仅支持 Java 语言。

官网:http://dubbo.apache.org/zh-cn/

Dubbo架构图|图片来源dubbo.apache.org

Tars

腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目。 仅支持 C++ 语言,目前在腾讯内部应用也非常广泛。2017 年对外开源,仅支持 C++ 语言。

源码: https://github.com/TarsCloud/Tars/

TARS架构图|来源github.com/TarsCloud

「本命鹅厂 TARS 框架介绍 PPT 已下载,不想自己麻烦去找的同学,在我公众号「后端技术学堂」回复「tars」获取。」

Motan

是新浪微博开源的一个Java 框架。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。于 2016 年对外开源,仅支持 Java 语言。

官方指南: https://github.com/weibocom/motan/wiki/zh_userguide

Motan框架|图片来源github.com/weibocom/motan

gRPC

是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。2015 年对外开源的跨语言 RPC 框架,支持多种语言。

中文教程:https://doc.oschina.net/grpc?t=58008

gRPC架构图|图片来源www.grpc.io

thrift

最初是由 Facebook 开发的内部系统跨语言的高性能 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一, 跟 gRPC 一样,Thrift 也有一套自己的接口定义语言 IDL,可以通过代码生成器,生成各种编程语言的 Client 端和 Server 端的 SDK 代码,支持多种语言。

thrift架构 | 图片来源wikimedia

创作不易,看到这里动动手指,点赞「三连」是对我持续创作的最大支持,我们下篇文章再见!

文章每周持续更新,可以微信搜索公众号「 后端技术学堂 」提前看,或在公众号回复「资料」有我给你准备的各种编程学习资料,我们下期见!

pbf格式文件什么意思?

PDF全称Portable Document Format,是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。PDF格式文件目前已成为数字化信息事实上的一个工业标准。

Adobe公司设计PDF文件格式的目的是为了支持跨平台上的,多媒体集成的信息出版和发布,尤其是提供对网络信息发布的支持。为了达到此目的, PDF具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。

PDF文件使用了工业标准的压缩算法,通常比PostScript文件小,易于传输与储存。它还是页独立的,一个PDF文件包含一个或多个“页”,可以单独处理各页,特别适合多处理器系统的工作。此外,一个PDF文件还包含文件中所使用的PDF格式版本,以及文件中一些重要结构的定位信息。正是由于 PDF文件的种种优点,它逐渐成为出版业中的新宠。

对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以“逼真地”展现原书的原貌,而显示大小可任意调节,给读者提供了个性化的阅读方式。由于PDF文件可以不依赖操作系统的语言和字体及显示设备,阅读起来很方便。这些优点使读者能很快适应电子阅读与网上阅读,无疑有利于计算机与网络在日常生活中的普及。Adobe公司以PDF文件技术为核心,提供了一整套电子和网络出版解决方案,其中包括用于生成和阅读PDF文件的商业软件Acrobat和用于编辑制作PDF文件的Illustrator等。 Adobe还提供了用于阅读和打印亚洲文字,即中日韩文字所需的字型包。

华为交换机怎样查看端口开销?

1>将交换机开机,电脑连接后,进入用户模式;

2>输入“enable"或”en“,进入特权模式;

3>在特权模式下,输入”showinterfacef0/1“或”showintf0/1“,可查看f0/1接口的信息;

4>在接口信息中相关信息较多,包括接口是否启用(upordown),该接口的MAC地址,该接口是全双工还是半双工(Full-duplexorHalf-duplex),这里的f0/1的接口是处于启用状态(up),并处于全双工(Full-duplex);

5>我们再查看f0/2的接口信息,输入”showintf0/2“,这里的f0/2的接口是处于关闭状态(down),并处于半双工(Half-duplex);

华为交换机查看端口状态的命令及说明

current state 端口当前状态:DOWN表示端口处于关闭状态,UP表示端口处于打开状态;

Last 300 seconds input rate:端口在前5分钟接收的字节速率和报文速率;

Port Mode端口的工作模式:COMMON COPPER是电口模式,COMMON FIBER是光口模式;

Last 300 seconds output rate:端口在前5分钟发送的字节速率和报文速率;

Switch Port:显示端口是二层端口,如果端口是三层端口,此处则显示为Route Port;

Input peak rate 0:入端口报文的最大速率和最大速率的发生时间;

Line protocol current state端口的链路协议状态:DOWN表示端口链路协议层有故障或者此端口没有配置IP地址,UP表示端口链路协议处于正常启动状态;

Output peak rate 0:出端口报文的最大速率和最大速率的发生时间;

Deion:端口的描述信息;

Input:接收报文总数量,Output是发送报文总数量;

Mdi:端口的网线类型;

Discard:端口在物理层检测时发现的丢弃报文数目;

Hardware address:设备的MAC地址;

Total Error:端口在物理层检测时发现的错误报文总数目;

PVID:端口的缺省VLAN的编号;

CRC :端口接收的CRC错误报文数目;

Speed;端口当前速度;

DropEvents:端口接收的报文因为内存池满(GBP full)或者反压(Back Pressure)导致的丢包数目率;

Duplex端口工作的双工模式:FULL是全双工模式,HALF是半双工模式;

Alignments:端口接收的帧对齐错误的报文数目;

TPID显示端口支持的帧类型:缺省情况下,TPID是0x8100,表示802.1Q帧(此字段只有在端口类型是二层端口情况下显示)

Symbols:端口接收的编码错误的报文数目;

The Maximum Frame Length:端口允许通过的最长帧;

Buffers Purged:端口发送报文时在队列缓冲区中存在时间太长,被老化掉的报文数目;

IP Sending Frames’ Format IP协议发送帧格式:包括PKTFMT_ETHNT_2、Ethernet_802.3和Ethernet_SNAP;

Input/Output bandwidth utilization threshold :输入/输出带宽占用率阈值;

Negotiation端口自协商状态:ENABLE是端口开启了自协商功能,DISABLE是端口关闭了自协商功能;

Loopback:端口环回配置;

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,128人围观)

还没有评论,来说两句吧...