🔗 延迟池
🔗 简介
DelayPool 是一个 Composite,用于管理分配给该池的任何请求的带宽。DelayId 用于管理给定请求的带宽,而 DelayPool 则管理带宽可用性和分配的 DelayId。
🔗 扩展延迟池
CompositePoolNode 是 DelayPool 中所有成员的基本类型。任何子类都必须实现 RefCounting 原语以及五个延迟池函数
- stats() - 提供自身的 cachemanager 统计信息。
- dump() - 为该项的当前配置生成 squid.conf 语法。
- update() - 为该项中的所有桶分配更多带宽。
- parse() - 接受该项的 squid.conf 语法,并进行适当的配置以供使用。
- id() - 返回当前项的 DelayId 条目。
DelayIdComposite 是所有 delay Id 的基本类型。具体的 Delay Id 必须实现 refcounting 原语以及两个 delay id 函数
- bytesWanted() - 返回此 delay id 根据策略允许的最大字节数。
- bytesIn() - 记录此 delayId 正在监视的请求所使用的带宽。Composite 的创建目前正在进行设计审查,因此请参阅
DelayPool 类并遵循 parse() 代码路径以获取详细信息。
🔗 可以做的一些很棒的事情。
有了 Composite 结构,一些很棒的事情成为可能。例如
- 动态定义的池安排 - 例如,一个聚合(class 1)结合 class 3 池的每 class C 网络跟踪,而无需单独的主机跟踪。这与 class 3 池在主机桶中具有 -1/-1 不同,因为主机上不会占用内存或 CPU,而在 class 3 池中,它们会被分配和使用。
- 每个请求的带宽限制 - 一个包含自己桶的 delayId 可以根据给定策略独立地限制每个请求,而没有聚合限制。