发现一旦类多了 我就记不住了 所以画个简化图 以便理解
关键核心是算法模块 比较难理解 需要记录上一次状态 而且根据上一次发送状态来确定本次状态
个人理解:
分两个量:
1 确定量(原来量): 两次发送间隔时间内 标准的发送量 间隔时间越短确定量就越小
2 不定量(加强量): 主要因为缓冲区大小的限定 假设缓冲区比较小 而确定量的值很大 所以一次发不完 则会有一个余量
状态对象记录此余量 待下次计算实际发送量的时候把此余量加上
实际发送量 = 确定量(原来量) + 不定量(加强量)
注意实际发送量一定得小于配置文件中的max_rate 即
newallowance = newallowance > limiter_entry->max_rate() ? limiter_entry->max_rate() : newallowance;
否则就达不到限速的目的了
但是我有个疑问 就是 为什么第一次的不定量得是配置文件中的max_rate ?
可能我理解的不对? 还是第一次发送的时候得以最高速率发送?