gpt4 book ai didi

IceRPC之调度管道->快乐的RPC

转载 作者:撒哈拉 更新时间:2024-05-25 13:06:15 57 4
gpt4 key购买 nike

作者引言

很高兴啊,我们来到了IceRPC之调度管道->快乐的RPC, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界.

调度管道 Dispatch pipeline

了解如何接受请求并返回响应.

定义

接受/完成请求,并返回响应的过程称为调度.

调度通常由服务器连接创建: 服务器连接,接收请求并返回响应.

然而,由于客户端和服务器连接具有相同的功能,因此客户端连接,也可以调度请求.

调度抽象

当连接接收到请求时,它会使用其配置的调度程序,调度此请求。该调度程序是接受传入请求,并返回传出响应的抽象。它是调用者invoker抽象服务器端的对应部分.

Invoker 和 Dispatcher 之间的一个重要区别,是需要实现 Dispatcher 抽象来满足请求并生成响应。Invoker 抽象由 IceRPC 的连接实现.

C# 中, 这个调度器抽象是 IDispatcher 接口

namespace IceRpc;

public interface IDispatcher
{
    ValueTask<OutgoingResponse> DispatchAsync(
        IncomingRequest request,
        CancellationToken cancellationToken = default);
}

当构建接受此连接的服务器时,会配置服务器连接的调度程序。该调度程序不能为空。服务器与其接受的所有连接,共享其调度程序。例如

// configures server to use a new Chatbot instance as its dispatcher
await using var server = new Server(new Chatbot());

为客户端连接,配置调度程序是可选的,因为客户端连接,可以不接受请求.

C# 中,将客户端连接的调度程序配置为 ConnectionOptions 类。例如

using IceRpc;

// ClientConnectionOptions derives from ConnectionOptions
var clientConnectionOptions = new ClientConnectionOptions
{
    Dispatcher = new MyCallback(),
    ServerAddress = new Uri("icerpc://hello.zeroc.com")
};

await using var connection = new ClientConnection(clientConnectionOptions);

处理调度Dispatcher

调度抽象提供了很大的灵活性。一个 Slice 服务是调度程序,因此很容易配置服务器,将其收到的所有请求,调度到同一个 Slice 服务.

调度器,实现可以调度到,另一个调度器,该调度器本身,调度到另一个调度器,等等,

在服务器上配置的调度程序,可以是调度程序链或树的头部,称为"调度管道"dispatch pipeline. 。

3种常见的调度类型

  • Leaf dispatcher 这是调度管道中的子叶。例如,Slice 服务.

  • Middleware 中间件拦截调度,并将其转发到"下一个"next调度程序。IceRPC 提供了几个内置的中间件,用于日志记录,压缩等.

  • Router 路由器根据请求的路径,将请求路由到,在该路由器注册的调度程序。还可以托管多一个中间件.

--- title: 一个简单的调度管道 --- flowchart LR connection -- request --> middleware -- request --> service[Slice service] service -- response --> middleware -- response --> connection

作者结语

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

最后此篇关于IceRPC之调度管道->快乐的RPC的文章就讲到这里了,如果你想了解更多关于IceRPC之调度管道->快乐的RPC的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com