rust网络框架Pingora源码阅读2

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

内容提要

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

Q&A

Pingora的监听服务支持哪些协议类型?

Pingora的监听服务支持HTTP、HTTPS和Unix Socket三种协议类型。

如何初始化Pingora的服务?

初始化Pingora的服务需要创建一个实现Service Trait的对象,并配置服务类型和监听入口。

Pingora的服务调用链是怎样的?

Pingora的服务调用链从Server启动开始,最终创建异步任务运行Service的start_service方法。

Pingora的run_endpoint函数有什么作用?

run_endpoint函数负责开始监听请求,处理新获取的连接并进行握手。

Pingora的HttpProxy是如何处理HTTP请求的?

HttpProxy通过session对象处理请求的各个阶段,主要在process_new_http函数中进行。

Pingora的监听服务如何添加监听端口?

可以通过调用add_tcp方法将监听端口添加到服务中,例如lb.add_tcp("0.0.0.0:10080");

🏷️

标签

➡️

继续阅读