作者引言

很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界。

icerpc 和多路复用传输

了解 icerpc 协议和多路复用传输

icerpc 协议

当创建到服务器地址 icerpc://hello.zeroc.com 的客户端连接时,指示 IceRPC 建立使用 icerpc 协议的连接。

icerpc 是一种应用层协议,通过多路复用连接传输 RPC(请求和响应)。

在讨论 icerpc 协议时,我们总是用小写拼写 icerpc。这避免了与 IceRPC 框架的混淆

多路复用传输

路复用传输页面,描述了在连接内提供独立流的现代传输的抽象。比如,典型的多路复用传输是QUIC

icerpc 连接在由多路复用传输,创建的多路复用连接,上运行。

---
title: icerpc over quic
---
classDiagram
class IceRpcConnection
class MultiplexedConnection {
<<abstraction>>
}
class QuicConnection
IceRpcConnection o-- MultiplexedConnection
MultiplexedConnection <|-- QuicConnection

icerpc 协议通过为每个请求 + 响应对创建专用双向流,通过多路复用连接发送请求和响应。它为每个单向请求创建单向流,因为单向请求没有响应。

---
title: RPCs mapped to streams by icerpc
---
flowchart LR
subgraph Client [icerpc client connection]
end
subgraph Server [icerpc server connection]
end
subgraph stream0 [stream]
s0["> request >\n < response <"]
end
subgraph stream1 [stream]
s1["< request <\n > response >"]
end
subgraph stream2 [stream]
s2["> one-way request >"]
end
subgraph stream3 [stream]
s3["> request >\n < response <"]
end
subgraph stream4 [stream]
s4["< one-way request <"]
end
Client --- s0
Client --- s1
Client --- s2
Client --- s3
Client --- s4
s0 --- Server
s1 --- Server
s2 --- Server
s3 --- Server
s4 --- Server

由于每个流都是独立的,因此不存在队头阻塞。 可以通过同一连接发送大小请求和响应的组合:大请求和响应不会阻止,或延迟小请求和响应。

IceRPC 的首选协议

icerpc 自然是 IceRPC 的首选协议。

icerpc 提供了 IceRPC API 和功能的最直接实现。 特别是,IceRPC 的请求字段、响应字段和状态码按原样由 icerpc 传输。它还支持有效负载连续性。

icerpc 通过双工连接

目前只有一种标准复用传输: QUIC。 由于 QUIC 是新的且不普遍可用,因此可能需要将 icerpc 与传统的双工传输(例如 TCP)一起使用。

解决方案是 IceRPC 的 Slic 传输层。Slic 在双工传输抽象上实现复用传输抽象。

---
title: icerpc over tcp
---
classDiagram
class IceRpcConnection
class MultiplexedConnection {
<<abstraction>>
}
class SlicConnection
class DuplexConnection {
<<abstraction>>
}
class TcpConnection
IceRpcConnection o-- MultiplexedConnection
MultiplexedConnection <|-- SlicConnection
SlicConnection o-- DuplexConnection
DuplexConnection <|-- TcpConnection

C# 中,默认的多路复用传输是 TCP 上的 Slic,称为 tcp。以下语句都创建等效的 icerpc 连接。

// Create a client connection with the default multiplexed client transport, Slic over TCP.
using await var clientConnection = new ClientConnection("icerpc://hello.zeroc.com"); // Make sure we use Slic over TCP (correct but redundant).
using await var clientConnection = new ClientConnection("icerpc://hello.zeroc.com?transport=tcp"); // Create a new multiplexed client transport with default options.
var clientTransport = new SlicClientTransport(new TcpClientTransport());
using await var clientConnection = new ClientConnection(
"icerpc://hello.zeroc.com",
multiplexedClientTransport: clientTransport);

收尾

最近写的都是基础相关的概念,大家看看就行,还以官方为主。

作者结语

  • 一直做,不停做,才能提升速度
  • 翻译的不好,请手下留情,谢谢
  • 如果对我有点小兴趣,如可加我哦,一起探讨人生,探讨道的世界
  • 觉得还不错的话,点个

IceRPC之多路复用传输>快乐的RPC的更多相关文章

  1. RPC 核心,万变不离其宗

    微信搜 「yes的练级攻略」干货满满,不然来掐我,回复[123]一份20W字的算法刷题笔记等你来领. 个人文章汇总:https://github.com/yessimida/yes 欢迎 star ! ...

  2. 初识RPC协议

    什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如 ...

  3. RPC是什么

    RPC是什么? 通俗的讲就是,调用远程计算机上的服务,就像调用本地服务一样.通常包含传输协议和编码协议. RPC可以基于HTTP或TCP协议,但基于HTTP协议的RPC性能却不如基于TCP协议的RPC ...

  4. RPC远程过程调用

    什么是RPC: 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作RPC: (Remote Procedure Call远程过程调用) RPC是一个计算机通信协议. rpc指的是在计算机A上 ...

  5. 040 Http与RPC

    一直在说,但是没有系统的文档理解过. 1.本质 目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的. 他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HT ...

  6. 网络编程 -- RPC实现原理 -- 目录

    -- 啦啦啦 -- 网络编程 -- RPC实现原理 -- NIO单线程 网络编程 -- RPC实现原理 -- NIO多线程 -- 迭代版本V1 网络编程 -- RPC实现原理 -- NIO多线程 -- ...

  7. RPC框架之RMI

     一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务. 一次RPC调用的过程大概有10步: 1.执 ...

  8. 什么是XML RPC?

    # -*- coding: cp936 -*- #python 27 #xiaodeng #什么是XML RPC? #中文叫:远程过程调用 #使用http协议做传输协议的rpc机制,使用xml文本的方 ...

  9. Python与RPC -- (转)

    XML-RPC xmlrpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据. 一个rpc系统,必然包括2个部分: 1)rpc client,用来向rpc server调 ...

  10. RPC数据通信

    RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”.目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用.远程调用的应用场 ...

随机推荐

  1. HMS Core Insights第九期直播预告——手语服务,助力沟通无障碍

    [导读] 你知道吗?全球有超5%的人群正在遭受听力损失的折磨.这些听障群体由于沟通不便,在日常生活中面对着很多的困难与挑战,建立沟通无障碍环境的需求十分迫切.随着科技的发展,越来越多的人们享受到技术进 ...

  2. 记录一个小问题,django+Apache+win7,启动Apache后,打开网页,一直转圈圈,停不下来

    做了一个小网站,主要是为了简单工作,只需要公司局域网访问,所以部署在自己的台式机上. 网站是用django 3.x版本开发的,电脑是win7系统,所以是用的Apache部署的 部署的啥问题都没有,检查 ...

  3. HarmonyOS Codelab样例—弹窗基本使用

    一.介绍 本篇 Codelab 主要基于 dialog 和 button 组件,实现弹窗的几种自定义效果,具体效果有: 1.  警告弹窗,点击确认按钮弹窗关闭. 2.  确认弹窗,点击取消按钮或确认按 ...

  4. Jedis连接踩坑日记

    Jedis连接踩坑日记 背景: 线上某块业务的增删改功能全部都不可用.页面发送了xhr请求之后 状态一直处于pending状态,后端没有日志产生 排查路线与解决办法 第一:由于服务在内网里面,无法进行 ...

  5. 使用 Docker Compose 安装 APISIX

    1.基本概念 APISIX 是 Apache 下的一款云原生的 API 网关,支持全生命周期的 API 管理,在应用中可以作为所有 API 调用的统一入口. APISIX 有一些基础概念如下: Ups ...

  6. 第十課-Change Mirth Connect To Mariadb

    随着接口部署数量和交互数据越来越多,原来基于Mirth Connect默认derby嵌入式数据库下运行越来越不能满足高性能.高可靠等线上刚性需求:故需要切换Mirth Connect的运行后台数据库. ...

  7. 5年磨一剑|优酷Android包瘦身治理思路全解

    简介: 稳定性.性能.包大小,在移动端基础用户体验领域"三分天下",是app承载业务获得稳定.高效.低成本.快速增长的重要基石.其中,包大小对下载转化率.拉新拉活成本等方面的影响至 ...

  8. [DOT] Polkadot-js 的官方资源

    官网:https://polkadot.js.org/ 浏览器扩展(即钱包, 等同以太坊的MetaMask):https://polkadot.js.org/extension/ 钱包的作用方便你管理 ...

  9. [Cryptocurrency] (XMR) Monero GUI 连接远程节点 操作方式

    Monero 官网下载的钱包,在 高级设置 的节点里支持 "本地节点" 和 "远程节点". 本地节点就是同步区块链数据到本地电脑,安全性高,占用空间大. 远程节 ...

  10. WPF 全屏窗口将让 Chrome 97 视频停止播放

    无论是使用 WPF 全屏窗口,还是高性能全屏透明窗口,都会在 Chrome 97 以及使用 chromium 对应版本内核的应用的视频停止播放.这是 chromium 的一个优化,因为 chromiu ...