IceRPC之多路复用传输>快乐的RPC
作者引言
很高兴啊,我们来到了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的更多相关文章
- RPC 核心,万变不离其宗
微信搜 「yes的练级攻略」干货满满,不然来掐我,回复[123]一份20W字的算法刷题笔记等你来领. 个人文章汇总:https://github.com/yessimida/yes 欢迎 star ! ...
- 初识RPC协议
什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如 ...
- RPC是什么
RPC是什么? 通俗的讲就是,调用远程计算机上的服务,就像调用本地服务一样.通常包含传输协议和编码协议. RPC可以基于HTTP或TCP协议,但基于HTTP协议的RPC性能却不如基于TCP协议的RPC ...
- RPC远程过程调用
什么是RPC: 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作RPC: (Remote Procedure Call远程过程调用) RPC是一个计算机通信协议. rpc指的是在计算机A上 ...
- 040 Http与RPC
一直在说,但是没有系统的文档理解过. 1.本质 目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的. 他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HT ...
- 网络编程 -- RPC实现原理 -- 目录
-- 啦啦啦 -- 网络编程 -- RPC实现原理 -- NIO单线程 网络编程 -- RPC实现原理 -- NIO多线程 -- 迭代版本V1 网络编程 -- RPC实现原理 -- NIO多线程 -- ...
- RPC框架之RMI
一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务. 一次RPC调用的过程大概有10步: 1.执 ...
- 什么是XML RPC?
# -*- coding: cp936 -*- #python 27 #xiaodeng #什么是XML RPC? #中文叫:远程过程调用 #使用http协议做传输协议的rpc机制,使用xml文本的方 ...
- Python与RPC -- (转)
XML-RPC xmlrpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据. 一个rpc系统,必然包括2个部分: 1)rpc client,用来向rpc server调 ...
- RPC数据通信
RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”.目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用.远程调用的应用场 ...
随机推荐
- 直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解.一起来回顾 ...
- HMS Core助力同程旅行,打造更贴心的用户出行体验
作为中国在线旅行行业的创新者,同程旅行聚焦年轻.时尚.个性的消费群体,致力于为用户提供更便捷.聪明.安全的出行服务.近年来,同程旅行通过人工智能等创新科技的应用将平台原本的交易撮合角色转变为" ...
- ASP.NET 部署常见问题及解决方案
ASP.NET 部署部署过程中常见问题及解决方案 Could not load file or assembly 'XXXXX' or one of its dependencies. Access ...
- 最后一站qsnctfwp
题目附件 图片一: 图片二: 根据图片一判断出位置为南昌市,地铁线路为4号线 根据题目名判断出搜索范围为白马山站或鱼尾洲站 通过百度地图全景地图查看两站环境,发现白马山站以工业区为主,鱼尾洲站以住宅区 ...
- C#判断窗体是否被遮挡 - 开源研究系列文章
上次发布了托盘窗体的显示与隐藏的博文:,但是在测试窗体最大化的时候发现窗体没有隐藏,调试了下知道是窗体是否被遮挡这个函数的判断有问题.于是就研究了该代码,然后联系了该操作类的作者,也是博客园的园友,然 ...
- k8s集群部署1.28.2版本(无坑)
Kubernetes-1.28.2 集群介绍及搭建 一.Kubernetes 概述 1.什么是Kubernetes? K8S 的全称为 Kubernetes.用于自动部署.扩展和管理"容器化 ...
- Windows代理配合Burp抓取客户端+小程序数据包
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 在渗透测 ...
- 力扣645(java)-错误的集合(简单)
题目: 集合 s 包含从 1 到 n 的整数.不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 . 给定一个数组 nu ...
- ZooKeeper 在阿里巴巴的服务形态演进
简介: 本文将给大家介绍下 ZooKeeper 的最佳实践场景,归为了 3 类,分别是:微服务领域,代表的集成产品是 Dubbo/SpringCloud:大数据领域,代表的集成产品是 Flink/Hb ...
- 性能提升40%!阿里云神龙大数据加速引擎获TPCx-BB世界排名第一
简介:神龙大数据加速引擎,针对大数据常用组件,如Spark.Hadoop.Alluxio等,结合阿里云神龙架构的特性,进行软硬一体化优化,形成独一无二的性能优势,最终,使复杂SQL查询场景性能相比社 ...