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

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:端口环回配置;


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