rust网络框架Pingora源码阅读2

💡 原文中文,约8700字,阅读约需21分钟。
📝

内容提要

本文介绍了Pingora服务中的监听部分代码。Pingora内置两种服务:后台服务和监听服务。代码分为两部分:服务的创建和初始化,以及将服务添加到服务器对象并启动服务器对象。监听服务支持HTTP、HTTPS和Unix Socket三种监听类型。监听服务根据添加的端点创建对应数量的协议栈对象,然后将连接传递给应用逻辑处理。处理过程中,根据协议类型调用不同的处理函数。

🎯

关键要点

  • 本文介绍了Pingora服务中的监听部分代码,重点在监听服务。
  • Pingora内置两种服务:后台服务和监听服务。
  • 代码分为服务的创建和初始化,以及将服务添加到服务器对象并启动服务器对象。
  • 监听服务支持HTTP、HTTPS和Unix Socket三种监听类型。
  • 监听服务根据添加的端点创建对应数量的协议栈对象,将连接传递给应用逻辑处理。
  • Service初始化是创建一个实现Service Trait的对象。
  • Service配置主要与服务类型有关,监听服务需要设置监听入口。
  • 监听服务支持三种监听类型,HTTP、HTTPS和UDS。
  • Service的调用链从Server启动开始,最终创建异步任务运行Service的start_service方法。
  • start_service负责Service的整个生命周期,具体的转发逻辑交给协议栈处理。
  • run_endpoint开始监听请求,处理新获取的连接并进行握手。
  • stack的作用是获取连接,处理完后将连接交给app_logic处理。
  • HttpProxy的实现链涉及ServerApp和HttpServerApp两个trait。
  • process_new根据协议处理不同的连接,HTTP2需要再次握手。
  • process_new_http处理请求的各个阶段,主要通过session对象处理协议细节。
🏷️

标签

➡️

继续阅读