首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在每次请求时打开和关闭gRPC客户端中的通道

是为了确保通信的高效性和资源的合理利用。下面是完善且全面的答案:

概念: gRPC是一种高性能、开源的远程过程调用(RPC)框架,它可以在客户端和服务器之间进行快速、高效的通信。gRPC使用Protocol Buffers作为接口定义语言(IDL),支持多种编程语言。

分类: gRPC通道可以分为持久通道和短暂通道两种类型。

持久通道(Persistent Channel):在客户端和服务器之间建立一次连接,并保持长时间的开放状态。这种通道适用于客户端和服务器之间需要频繁通信的场景,可以减少每次请求的开销。

短暂通道(Transient Channel):在每次请求时打开和关闭通道。这种通道适用于客户端和服务器之间通信不频繁的场景,可以节省资源并提高系统的可扩展性。

优势:

  1. 高效性:gRPC使用HTTP/2协议进行通信,支持多路复用和流控制,可以在单个连接上同时处理多个请求,提高通信效率。
  2. 跨平台:gRPC支持多种编程语言,包括C++, Java, Python, Go等,可以在不同平台上进行开发和部署。
  3. 强类型接口:gRPC使用Protocol Buffers定义接口,可以确保客户端和服务器之间的数据传输类型安全和一致性。
  4. 可扩展性:gRPC支持服务端流、客户端流和双向流等多种通信模式,可以满足不同场景下的需求。
  5. 生态系统丰富:gRPC有着活跃的社区和丰富的生态系统,提供了各种工具和库,方便开发人员进行开发和集成。

应用场景: gRPC通道的打开和关闭在以下场景中特别有用:

  1. 微服务架构:在微服务架构中,不同的服务之间需要频繁通信,使用持久通道可以减少通信的开销,提高系统的性能。
  2. 分布式系统:在分布式系统中,不同节点之间需要进行通信,使用短暂通道可以节省资源并提高系统的可扩展性。
  3. 实时数据传输:在需要实时传输数据的场景中,使用gRPC通道可以保持连接的开放状态,实现快速、高效的数据传输。

推荐的腾讯云相关产品: 腾讯云提供了一系列与gRPC相关的产品和服务,包括:

  1. 云服务器(CVM):提供可靠、安全的云服务器实例,用于部署和运行gRPC服务。
  2. 负载均衡(CLB):通过将流量分发到多个gRPC服务实例,提高系统的可用性和性能。
  3. 云原生容器服务(TKE):提供容器化部署和管理的解决方案,方便部署和扩展gRPC服务。
  4. 云数据库(CDB):提供高可用、可扩展的数据库服务,用于存储和管理gRPC服务的数据。
  5. 云监控(CM):提供实时监控和告警功能,帮助用户监控和管理gRPC服务的运行状态。

更多关于腾讯云相关产品的介绍和详细信息,请访问腾讯云官方网站:https://cloud.tencent.com/

相关搜索:Resteasy客户端:@CookieParam在每次请求时复制它的值如何使用netty中的SimpleChannelPool在连接出错时关闭通道?在xamarin.forms中打开和关闭gps的事件在Golang中,通道关闭时收到的布尔标志不符合预期当我在flutter中点击TextField时,我的键盘会打开和关闭在React的TypeScript中打开和关闭对话框的状态如果服务器和客户端托管在不同的计算机上,则gRPC“无法拾取子通道”在powershell中打开exe文件,然后在exe关闭时关闭powershell并运行命令的命令?在Angular中打开和关闭某个div的最好方法是什么?为什么在OPC UA中打开安全通道时,从客户端到服务器的问候消息超过1条?在真正的android设备中,当键盘在模式中打开时,模式关闭在执行允许人们打开和关闭黑名单的命令时遇到问题如果客户端的状态显示在html中,我如何使其处于打开或关闭状态?有没有办法在R中打开、保存和关闭目录中的excel文件?在web浏览器中打开图像查看工具(使用C#和.NET构建)的缩略图在每次击键时都会刷新在不破坏代码的情况下关闭和打开ng-template中的html div当gRPC服务器从流中读取数据时,它会等待并让服务器处理来自其他客户端的请求吗?关闭应用后在iOS上打开应用中的html文件时随机呈现的空白屏幕如何关闭在salesforce中单击自定义按钮时打开的模式弹出对话框Opentok在视频会议中静音/取消静音和打开/关闭订户视频的事件有哪些
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

gRPC的使用

与许多 RPC框架类似,gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。...,在链接密集型(特别是短连接)时,如果队列超过此值,新的创建链接请求将会被拒绝(有可能你在压力测试时,会遇到这样的问题),keepalive和BACKLOG特性目前无法直接修改。...,且winow已满,每次向Client发送消息时,如果客户端反馈ACK(携带此次ACK数据的大小),window将会减掉此大小;每次向window中添加亟待发送的数据时,window增加;如果window...当然,为了提高Client端application的整体并发能力,我们可以使用连接池模式,即创建多个ManagedChannel,然后使用轮训、随机等算法,在每次RPC请求时选择一个Channel即可。...(RuntimeException) t : new RuntimeException(t); } 创建一个Stub的成本是非常低的,我们可以在每次请求时都通过channel创建新的stub

2.2K20

gRPC 初探与简单使用

服务器流式 RPC,客户端在其中向服务器发送请求,并获取流以读取回一系列消息。客户端从返回的流中读取,直到没有更多消息为止。gRPC 保证单个 RPC 调用中的消息顺序。...然后,客户端可以只在本地对象上调用这些方法,将调用的参数包装在适当的 protocol buffers消息类型中- gRPC 再将请求发送到服务器并返回服务器的 protocol buffers 响应之后进行查找...RPC 终止 在 gRPC 中,客户端和服务器均对呼叫成功进行独立和本地确定,其结论可能不匹配。这意味着,例如,您可能拥有一个在服务器端成功完成 RPC 的RPC(“我已经发送了所有响应!”)...元数据对于 gRPC 本身是不透明的-它允许客户端向服务器提供与调用相关的信息,反之亦然。 对元数据的访问取决于语言。 通道 gRPC 通道提供到指定主机和端口上的 gRPC 服务器的连接。...创建客户端存根时使用。客户可以指定通道参数来修改 gRPC 的默认行为,例如打开或关闭消息压缩。通道具有状态,包括已连接和空闲。 gRPC 如何处理关闭通道取决于语言。某些语言还允许查询通道状态。

2.2K20
  • gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架

    因此,例如,您可以轻松地 在 Java 中创建 gRPC 服务器,并使用 Go、Python 或 Ruby 中的客户端。...然后,客户端可以在本地对象上调用这些方法, 并且这些方法将调用的参数包装在适当的协议缓冲区中 消息类型,将请求发送到服务器,并返回服务器的 协议缓冲区响应。...例如,服务器可以等到它收到所有 客户端的消息在写入其消息之前,或者服务器和客户端可以播放 “乒乓球” – 服务器收到请求,然后发回响应,然后 客户端根据响应发送另一个请求,依此类推。...渠道 gRPC 通道提供与指定主机上的 gRPC 服务器的连接,并且 港口。它在创建客户端存根时使用。客户端可以指定通道 用于修改 gRPC 默认行为(如切换消息)的参数 打开或关闭压缩。...通道具有状态,包括和 。connectedidle gRPC 如何处理关闭通道取决于语言。有些语言也 允许查询通道状态。 谁在使用 gRPC,为什么?

    48440

    分布式服务框架gRPC

    和其他 RPC系统类似, gRPC也是基于定义一个服务,指定服务可以被远程调用的方法以及他们的参数和返回类型。在服务端,实现服务的接口然后运行一个 gRPC服务来处理可出端的请求。...gRPC的基础设施解码传入的请求,执行服务的方法,编码服务的响应。 在客户端,客户端拥有一个名为stub(存根)的本地对象(在有些语言中更倾向于把stub叫做客户端)该对象同样实现了服务中的方法。...通道 一个gRPC通道提供了一个到指定主机和端口号的gRPC服务器的连接,它在创建客户端存根(或者对某些语言来说就是“客户端”)时被使用。...客户端可以指定通道参数来更改gRPC的默认行为,比如说打开/关闭消息压缩。...每个通道都有状态,状态包括 connected和 idle(闲置) gRPC怎么处理关掉的通道是语言相关的,有些语言还允许查询通道的状态。

    1.9K30

    gRPC 之负载均衡

    gRPC 是 Google 开源的非常优秀的 RPC 框架,在今天的文章中,来自FinClip的工程师和我们来聊聊如何降低后端重复请求的问题。...gRPC 获取了 Service 的多个地址后会与这些地址建立子通道。 默认情况下,之后的请求将发送给其中一个子通道。...image.png 4当接收请求的子通道发生断开时,gRPC 会重新建立链接,然后又从新链接中选择一个子通道进行通信。...以下是在 Kubernetes 中测试的过程: image.png 二、客户端负载均衡 另外一种方法是在调用端自己实现调用逻辑,例如定时关闭链接以触发gRPC重连、自动刷新、心跳检测、负载均衡等等。...不过,目前 xDS 在 gRPC 中的实现和应用都还不是非常成熟,我们将在后续持续跟进,在未来,服务网格与 gRPC 结合将是更加完美的模式。总之,优化不停,架构不止。

    2.7K10

    .NET领域最硬核的gRPC 核心能力一把梭

    在大规模微服务中,C++grpc服务也可能作为调用的客户端, 于是这个服务上可能也存在其他服务提供方的服务代理stub, 上图没有体现。 三....① 使用protocol buffers在.proto文件中定义服务接口。在其中,定义可远程调用的方法的入参和返回值类型。服务器实现此接口并运行gRPC服务器以处理客户端调用。...,客户端以流形式(一系列消息)向服务器发起请求,客户端将等待服务器读取消息并返回响应,gRPC服务端能保证了收到的单个RPC调用中的消息顺序。...根据http2 上默认并发流的限制(100), .NET支持在单tcp连接并发流到达上限的时候,产生新的tcp连接, 故通道是一个池化的tcp并发流的概念, grpc通道具有状态,包括已连接和空闲....可以指定通道参数来修改gRPC的默认行为,例如打开或关闭消息压缩, 添加连接凭据。

    39110

    .NET gRPC核心功能初体验

    在gRPC中,客户端应用程序可以直接在A服务器上调用B服务器的方法,就好像它是本地对象一样,从而使您更轻松地创建分布式应用程序和微服务。...① 使用protocol buffers在.proto文件中定义服务接口。在其中,定义可远程调用的方法的入参和返回值类型,服务端实现此接口并运行gRPC服务器以处理客户端调用。...你在消息字段中定义的数字是不可重复的,当消息被序列化为Protobuf时,该数字用于标识字段,这是因为序列化一个数字比序列化整个字段名称要快。...元数据对于gRPC本身是不透明的:它允许客户端向服务器提供与调用相关的信息,反之亦然。 3.3 Channels gRPC通道提供到指定主机和端口上的gRPC服务器的连接。...创建客户端存根时用到它,可以指定通道参数来修改gRPC的默认行为,例如打开或关闭消息压缩。 通道具有状态,包括已连接和空闲。

    1.8K30

    谷歌开源、高性能RPC框架:gRPC 使用体验

    在 gRPC 中,开发者可以像调用本地方法一样,通过 gRPC 的客户端调用远程机器上 gRPC 服务的方法,gRPC 客户端封装了 HTTP/2 协议数据帧的打包、以及网络层的通信细节,把复杂留给框架自己...,对于相同的键值对数据,不用每次请求和响应都发送; 头部表在 HTTP/2 的连接有效期内一直存在,由客户端和服务器共同维护更新; 每个新的 HTTP 头键值对要么追加,要么替换头部表原来的值。...举个例子,有两个请求,在 HTTP/1.x 中,请求 1 和请求 2 都要发送全部的头数据;在 HTTP/2 中,请求 1 发送全部的头数据,请求 2 仅仅发送变更的头数据,这样就可以减少冗余的数据,降低网络开销...如下图所示: 这里再举个例子说明 HTTP/1.x 和 HTTP/2 处理请求的差异,浏览器打开网络要请求/index.html、styles.css 和/scripts.js 三个文件,基于 HTTP...; 客户端或者服务器都可以关闭 stream 流; 发送方在 stream 流按顺序发送数据帧,接收到按照顺序接收数据帧。

    1.5K20

    Nacos2# 服务注册与发现客户端示例与源码解析(二)

    引言 引言 上一篇客户端初始化没有撸完,这篇继续。Nacos从2.0以后增加了对grpc的支持,代码中HTTP的代理初始化还有保留,我们注册发现通常为临时节点,这部分已由gRPC接管。...时,初始化了一个HTTP心跳器用于向Nacos Server发起心跳 在注册节点时通过向心跳执行器添加心跳任务addBeatInfo触发 心跳执行器通过每隔五秒中向Nacos Server发起HTTP请求...Client启动逻辑主要在于建立与nacos server的grpc连接,其中两个守护线程一直在运行 守护线程1用于处理grpc连接的建立和关闭事件 守护线程2用于与nacos server的心跳保鲜...@2 获取重连的server地址和端口,并建立grpc连接,关闭当前缓存的旧连接并重定向到新连接,同时添加连接成功时间到阻塞队列。...一个用于处理grpc连接的建立和关闭事件;一个用于与nacos server的心跳保鲜,并负责异步建立grpc连接,当nacos server的地址信息发生变更时负责重新与新server建立连接;grpc

    3.3K30

    gRPC之流式调用原理http2协议分析

    (第二个) HTTP2中的一些概念 帧:数据通信的最小信息单位 流:存在与TCP连接中的一个虚拟通道(双向的,能往过流,也能往回流) HTTP2的特性 HTTP / 2支持HTTP / 1.1的所有核心功能...在HTTP/1中,如果想并发发送多个请求,必须创建多个TCP连接,而且浏览器为了减少负载,会对同一域名下的TCP连接做限制,这样当请求量比较大时,会引起阻塞,如下图,Stalled 阻塞已经达到159ms...服务器推送 HTTP /1中客户端往服务端发送请求严格遵守一个请求,一个响应,比如客户端请求展示网页时,服务端发挥HTML内容,浏览器解析时发送css,js请求,服务端又返回css,js文件,那么服务端为什么不能在返回网页时就推送...,消息头在传输时可以采用索引,而HTTP/1.x每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。...+ 31 = 72位 gRPC和HTTP2的关系 gRPC设计时的初衷:gRPC的设计目标是在任何环境下运行,支持可插拔的负载均衡,跟踪,运行状况检查和身份验证。

    4.5K20

    读猿码系列——1. gRPC+Etcd3的服务发现&负载均衡

    : 我们先去掉其他组件,单来看下gRPC的调用流程,下图是官方文档中的调用流程图: 首先客户端(gRPC stub)调用A方法,发起RPC调用; 对请求信息使用Protobuf进行对象序列化压缩;...然后在服务端(gRPC Sever)接收到请求后,解码请求体,进行业务处理逻辑并返回; 对响应结果使用Protobuf进行对象序列化压缩; 客户端接收到服务端响应,解码请求体。...在gRPC的设计文档中提供了服务注册及服务发现的思路,也为不同语言提供了命名解析和负载均衡接口供扩展。...当有rpc请求时,负载均衡策略决定哪个子通道即grpc服务器将接收请求,当可用服务器为空时客户端的请求将被阻塞。...经测试我们发现: 各服务端接收的请求数相等; 关闭一个服务端S1,请求会转到另外两个服务端; 重启S1,请求会重新平均分到S1; 关闭etcd3服务器,客户端与服务端仍正常通信,但新服务端不会注册进来,

    73120

    我做了一个 Go 语言的微服务工具包

    它提供了客户端、服务端和双向流。 在底层,gRPC 使用 HTTP/2(用于传输)和 Protocol Buffers(用于高效的序列化)来实现比 REST+JSON 更高的性能。...REST 和 gRPC 服务的 start/serve 方法也会返回错误,我们需要优雅地处理这些错误。(关于此技巧的快速提示:将每个服务包装在一个暴露错误通道的结构体中。...对传入和传出的服务请求使用 上下文(Context)。上下文允许跨客户端和服务端传播请求范围内的值、截止日期和取消信号。...在两个子任务中调用的函数都接受Context参数,并且在上下文取消(或请求超时)时能够提前返回。...) var wg sync.WaitGroup // 连续地处理从订单通道接收到的订单 // 当通道关闭时,此循环将终止 for order := range d.ordersCh

    81810

    .NetCore3.1 gRPC 实战

    服务器发送回一个响应,通常但不一定是在收到所有客户端请求后,连同其状态详细信息和可选的尾随metadata。...双向流式RPC 在双向流式RPC中,调用再次由调用方法的客户端发起,服务器接收客户端metadata,、方法名称和截止日期。...但是在客户端失败了(“回复在我的截止日期之后到达!”)中。服务器也可以在客户端发送所有请求之前决定完成。...信道 gRPC信道提供到指定主机和端口上的gRPC服务器的连接,并在创建客户端存根(或某些语言中的“客户端”)时使用。客户端可以指定信道参数来修改gRPC的默认行为,例如打开和关闭消息压缩。...信道有状态,包括连接和空闲。 gRPC如何处理关闭频道取决于语言。一些语言也允许查询通道状态。

    1.3K10

    为什么我们更喜欢 gRPC 进行微服务开发?

    在这篇博客中,我将深入探讨如何使用 Golang 在六边形架构的范围内实现 gRPC 服务器。了解 gRPC 的优点、忽略关闭挂钩的陷阱,以及服务中干净、优雅的关闭艺术。...那么,如何以正确的方式关闭gRPC服务呢?在本博客的下一部分中,我们将介绍一些简单的策略和代码示例,以展示如何在不引起任何问题的情况下正常关闭实现 gRPC 服务。...在六边形体系结构中实现 gRPC 服务器在下面的文件中,我添加了文件夹以明确 http 和 gRPC 协议的结构。...,我们只需要编写一个额外的 gRPC 控制器(主适配器)和 gRPC 服务器(核心)来处理来自客户端的请求。...我们探讨了利用 gRPC 服务器的优势以及实现优雅关闭机制的重要性。此外,我提供了 gRPC 服务和关闭钩子机制的代码示例,可以在我的 github 中完整代码源。

    2.5K21

    golang源码分析:grpc 链接池(1)

    = nil { log.Fatalf("failed to serve: %v", err) } } 为了验证我们的疑问,我们分别启动三个客户端,第一个客户端每次发完一个请求,断开连接重连...;第二个客户端在一个连接上发多个请求;第三个客户端发完一个请求后sleep 20s再发下一个请求,看看连接是否会断开。...tcp连接发包记录: 对于每次发完请求都断开连接的情形,我们可以看到两次三次握手和四次挥手的记录。...对于发请求过程中不主动close ClientConn的场景,对应的只有一次三次握手和四次挥手的记录,说明grpc在发多个请求的时候并不是发完一个请求就断开连接了,而是保持了底层的http2长链接,因此我们在使用...B,打开的连接记得要关闭,不要不断建立新连接不断开,否则有泄漏风险。 如果链接不释放会怎么样呢?

    1K10

    从gRPC安全设计理解双向证书方案

    ,打印接口日志时需要做数据模糊化处理等,不能明文打印; 对调用方的身份认证:调用来源是否合法,是否有访问某个资源的权限,防止越权访问; 数据防篡改和完整性:通过对请求参数、消息头和消息体做签名,防止请求消息在传输过程中被非法篡改...SSL/TLS的通道加密 当存在跨网络边界的 RPC 调用时,往往需要通过 TLS/SSL 对传输通道进行加密,以防止请求和响应消息中的敏感数据泄漏。...由于 MD5 已被发现有许多漏洞,在实际应用中更多使用 SHA 和 hmac,而且往往会把数字签名和消息摘要混合起来使用。...gRPC安全机制 谷歌提供了可扩展的安全认证机制,以满足不同业务场景需求,它提供的授权机制主要有四类: 通道凭证:默认提供了基于 HTTP/2 的 TLS,对客户端和服务端交换的所有数据进行加密传输;...调用凭证:被附加在每次 RPC 调用上,通过 Credentials 将认证信息附加到消息头中,由服务端做授权认证; 组合凭证:将一个频道凭证和一个调用凭证关联起来创建一个新的频道凭证,在这个频道上的每次调用会发送组合的调用凭证来作为授权数据

    2.6K30

    gRPC 简介并实战——文末附源码

    介绍 gRPC 是一个高性能的开源 RPC 框架,最初由 Google 开发。 RPC 是什么?在客户端应用里可以像调用本地方法对象一样直接调用另一台不同机器上的服务端应用的方法。...概述 本文将使用以下步骤使用 gRPC 创建典型的C/S服务: 首先在 .proto 文件中定义服务: gRPC 使用 protobuf 作为 IDL,明确定义了参数及类型。...: gRPC 提供了 protobuf-maven-plugin, 在Maven 中添加如下配置: 在我们的示例中,我们将调用 awaittermination() 以保持服务器在后台保持运行。 创建客户端程序 gRPC 提供了一个通道构造,用于抽象基础详细信息,如连接、连接池、负载平衡等。...Stub(存根)是客户端与服务器交互的主要方式。使用自动生成Stub时,Stub 类包含了用于包装通道(channel)的构造函数。

    1.6K20

    gRPC服务发现&负载均衡

    该方案主要问题: 开发成本,该方案将服务调用方集成到客户端的进程里头,如果有多种不同的语言栈,就要配合开发多种不同的客户端,有一定的研发和维护成本; 另外生产环境中,后续如果要对客户库进行升级,势必要求服务调用方修改代码并重新发布...不同之处是将LB和服务发现功能从进程内移出来,变成主机上的一个独立进程。主机上的一个或者多个服务要访问目标服务时,他们都通过同一主机上的独立LB进程做服务发现和负载均衡。...gRPC服务发现及负载均衡实现 gRPC开源组件官方并未直接提供服务注册与发现的功能实现,但其设计文档已提供实现的思路,并在不同语言的gRPC代码API中已提供了命名解析和负载均衡接口供扩展。...客户端实例化负载均衡策略,如果解析返回的地址是负载均衡器地址,则客户端将使用grpclb策略,否则客户端使用服务配置请求的负载均衡策略。...负载均衡策略为每个服务器地址创建一个子通道(channel)。 当有rpc请求时,负载均衡策略决定那个子通道即grpc服务器将接收请求,当可用服务器为空时客户端的请求将被阻塞。

    2.9K20

    Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析

    基本的 for 循环由三个部分组成,用分号分隔: 初始化语句:在第一次迭代之前执行 条件表达式:在每次迭代之前评估 后置语句:在每次迭代结束时执行 文章链接:Go 语言中 For 循环:语法、使用方法和实例教程...Arrays 在 Go 中,数组是在创建数组时定义的具有相同类型的元素集合。 文章链接:Go 语言数组基础教程 - 数组的声明、初始化和使用方法 Slices 切片类似于数组,但更强大和灵活。...文章链接:Go 语言中切片的使用和理解 Maps 映射是 Go 中的数据结构,我们在想要在键值对之间进行映射时使用它。它们在删除或添加元素方面具有灵活性。映射不允许重复条目,同时数据是无序的。...Centrifugo 有通道的概念,因此它是一个面向用户的发布/订阅服务器。 API Clients API客户端是一组从计算机上的应用程序操作的工)用于处理网站时传递用户功能。...Grpc gateway gRPC-Gateway 在gRPC服务之上创建了一层,它将充当客户端的RESTful服务。它是protoc的插件。

    26310

    微服务治理框架(C++版)详细设计

    (1)服务端:服务端需要实现.proto中定义的方法,并启动一个gRPC服务器用于处理客户端请求。gRPC反序列化到达的请求,执行服务方法,序列化服务端响应并发送给客户端。...3 服务关闭时,自动注销zk中的Provider信息 4 服务流量控制 5....客户端启动时,注册客户端信息 3. 客户端关闭时,注销客户端信息 4. 基于zookeeper的NameResolver 5. 监听服务端信息 6....13.2 实现思路 客户端每次调用服务端时,grpc-c中都会调用 start_pick_locked 方法选择subchannel,及选择服务端发送数据,首先判断当前客户端的负载均衡模式,原生的流程是根据...HTTP/2 1.1 概念 • 消息(Message):由一个或多个帧组合而成,例如请求和响应; • 流(Stream):存在于连接中的一个虚拟通道,流可以承载双向消息,每个流都有一个唯一的整数ID

    2.7K20
    领券