最近跟朋友又聊起我对iptables规则的重排优化,同时就想到了压缩。

重排和压缩

按照matches重排而不是按照rule排列规则,这便可以将一系列线性的规则组织成一棵查找树,差别是什么?差别就是定位规则的时间变短了,同时代价重排后的规则集占用的空间变大了,毕竟我们进行了小区间的细分。

  再来看另一种重排,Nginx对Apache的HTTP逻辑执行顺序进行了重排,按照流水线阶段分配CPU时间而不是按照连接分配CPU时间,差别是什么?差别就是省掉了巨量的任务调度开销。

  以上的总结来自于一种实践,即DxRPro++的实践,三年前我第一次对Linux内核承载50万条路由时的路由表进行了预处理,我当时想到的不是去发明一个新的查找算法,因为我觉得我没有这个能力,我想到的是对随机插入的路由项进行一次预处理,比如我并不是直接把路由项直接插入路由表,而是将其搜集到一个容器里,等到不再有新的路由项插入的时候,我全局地分析这个容器里的路由项,找出规律对其进行某种排序,最终成就了DxRPro++。整个过程其实是一个信息不断获取的过程,如果是逐个将路由项插入一个结构,比如Trie树,那么前后两个项是没有关联的,唯一能依赖的就是Trie树本身的精巧,然而当我拿到所有,至少是大多数待插入的路由项时,我便可以观察它们之间的关联,这便可以获取一个额外的信息,利用这个额外的信息,便可以对规则进行某种重排,从而达到意想不到的效果。

  要么空间换时间,要么时间换空间。我们来看看时间换空间的例子,压缩。其实很简单,如果你把时间和空间看作是对等的两面,那么和上面分析空间换时间的原理是一致的,也是通过全局意义上的空间分布规则这种额外的信息,对解析逻辑进行重排,最终也是形成了压缩后的数据+额外的信息这种复合结构。


分组交换网

来看看当年分组交换网对传统网络的冲击,这在分组交换网刚刚出来的时候算是天大的事了,在大家早已熟悉了用规规整整地时隙进行时分复用时,突然冒出个愣头青,竟然用泊松分布这种概率性的不确定的东西来约束网络行为,完全是不可思议的事。

  事实证明,正是分组交换网让基于TCP/IP的现代互联网成为了可能,其背后的功臣正是泊松分布和其理论指导下的排队论。如果按照时分复用的原理,完全无法应对现代互联网的流量突发,同时将会有大量的能量被空闲时隙浪费。可以说,传统的电信网络是不可扩展的,而分组交换网是可扩展的。Why?

  这也是一种重排!

  重排是时隙。传统电信网络的时隙是均匀分布的,这种网络中时隙是主体,而信息则是载荷,类似公交车,什么时候发车并不由坐车的人决定,如果坐车的人提前到了,那就要等,如果迟到了,只能坐后一班车。然而分组交换网将对时隙的控制交给了信息本身,此时信息是主体,时隙只是一个服务生,因此此时的时隙是可积累可突发的,因为信息作为人体大脑活动的延伸,本身就是突发性质的,熟悉令牌桶原理的应该明白,这里的原则是配额原则。分组交换网就好比是自己的私家车,什么时候想走就走。我们经常看到公交车空载或者满员上不去的情况,却几乎从来没有看到过谁开着私家车绕环城一圈再回来…

题外话

我是非常喜欢泊松分布和排队论,这些东西非常美妙地诠释了很多我们习以为常的问题。于是在能力范围内,我把几乎所有定义为常量 A A A的东西都改成以A" role="presentation">AAA为数学期望的泊松分布了,人脑本身对信息的期待就是个泊松分布起作用的地方,至少对我而言是这样…另外,关联因素还有幂律特征,然而相对还是复杂…

架构决定可扩展性--重排和压缩/分组交换网相关推荐

  1. 推荐算法架构4:重排

    系列文章,请多关注 推荐算法架构1:召回 推荐算法架构2:粗排 推荐算法架构3:精排 推荐算法架构4:重排 1 总体架构 精排打分完成后,就到了重排阶段,之后可能还会有混排.召回.精排.重排三个模块中 ...

  2. 架构决定可扩展性--聊聊用户态协议栈的意义

    在进入这个话题之前先说说通用和专业之间的区别.   举个很好的例子,好比我们个人,绝大部分的人都是"通用"的,而只有极少部分的人是"专业"的.通用的人主要目标是 ...

  3. [书摘]架构真经--可扩展性规则的利益与优先级排行榜

    非常高-1 规则19: 放宽时间约束 规则25: 利用对象缓存 规则29: 不能回滚注定失败 规则32: 正确使用数据库锁 规则35: 避免选择所有列 规则46: 警惕第三方方案 规则50: 保持竞争 ...

  4. RISC-V指令集架构------RV32C压缩指令集

    0 概述 RV32C是RISC-V架构中的一种指令集,其设计目标是提供高效的指令压缩技术,同时保持RISC-V架构的简洁和灵活性.它是RISC-V架构中的一个重要的扩展,为嵌入式系统和低功耗设备提供了 ...

  5. 性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化

    作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营(ID:rgznai100) 近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式 ...

  6. 研究项目: JBoss架构分析

    原文转自:http://www.huihoo.org/jboss/jboss.cn.html 研究项目: JBoss架构分析 Jenny Liu School of Information Techn ...

  7. 电商网站前端架构 学习笔记(全是干货)

    1:前端架构的基本知识 1: 前端工程师必须会的一些技能 前端工程师基本技能图.PNG 2: 前端架构基本知识 什么是前端架构? 每个人对每个架构有不同的认识和一些想法.没有一个架构是完美的,只有一个 ...

  8. 模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件

    作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营(ID:rgznai100) 近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式 ...

  9. 想染指系统架构?看这篇就够了

    https://juejin.im/post/58f45b058d6d8100648a69f0 原文地址:github.com/donnemartin/system-design-primer 译文出 ...

最新文章

  1. hadoop hbase维护问题总结
  2. HADOOP学习笔记(一):HDFS
  3. springboot+mybatis+thymeleaf项目搭建及前后端交互
  4. 从入门到精通:卷积神经网络初学者指南
  5. 我所理解的性能测试是什么?
  6. (转载)lib 和 dll 的区别、生成以及使用详解
  7. 最火的C语言编程软件,适合编写C语言代码的编程软件有哪些
  8. 超级记忆/图像数字记忆 110位数字图像转换表 61-70
  9. 关于U盘免疫的一些自我认识
  10. 2021-1-13 印象深刻的Bug记录
  11. 关于个人对培训的看法
  12. idea安装SVN插件并使用
  13. 【keras】keras教程(参考官方文档)
  14. JAVA图形界面设计
  15. JZOJ5498. 【清华集训2017模拟12.10】大佬的难题
  16. Unity3D 安装
  17. 几款mac小应用,让你的苹果设备真正实现无缝衔接
  18. 2022腾讯云年终双十一活动攻略汇总!
  19. 打造绿色数据中心,Colt DCS 是认真的!
  20. Python语言程序设计(北京理工大学MOOC)1-5周

热门文章

  1. SQL 基本查询语句
  2. 置顶准时[置顶] 程序员也有风骚的青春
  3. CF目标检测(YOLO格式)标注数据集1w张
  4. throw和throws的区别是什么简答_java总复习(题目和总结)
  5. 微言软件出品——微言火车票抢票大师
  6. 《魅魔succubus》 来自韩国3d建模师 yeonghee cho
  7. python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧
  8. 构建废旧手机回收权威报价体系迫在眉睫
  9. tomcat8 tomcat-users相关配置
  10. python官方论坛_python