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


    作者引言

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

    调度管道 Dispatch pipeline

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

    定义

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

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

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

    调度抽象

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

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

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

    namespace IceRpc;
    
    public interface IDispatcher
    {
        ValueTask 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
  • 相关阅读:
    QT基础篇目录
    Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
    从零开始搭建仿抖音短视频APP-后端开发评论业务模块(2)
    面向面试的机器学习知识点(5)——无监督学习
    ELK安装、部署、调试 (二) ES的安装部署
    Linux性能工具(二)ftrace基础篇
    模拟量偏差报警功能块(SCL代码)
    AI与医疗保健:革命性技术如何拯救生命
    Java | 一分钟掌握定时任务 | 8 - XXL-Job分布式定时任务
    事件总线 EventBus
  • 原文地址:https://www.cnblogs.com/xlgwr/p/18212263