数据流传输过程中,包括不限于DPI,加解密等操作会对吞吐和延时带来大损害,因此倾向于对此类操作投放大资源。

在流传输过程中串行加解密不可取,应采用线程池,倾全系统之力并行做最困难的事。这种思路不可避免地遭遇队列设计问题。

请求/服务模型,用单队列而不用多队列,理由如下:

加密一条流应该怎么做:

如果是两条流呢?下图展列出一个问题,如何回答:

To extend or not ? No!
加解密队列不能按流扩展成多个,数目应该固定,不然就会陷入多队列的深渊。正确的做法如下:

要点不在流队列有多少,流队列亦可按照五元组hash成固定数目,要点在于,加解密队列一定要固定,且加解密线程一定要轮询从这些队列中取包。

现在,总结一下本质。

不要拿资源和请求做固定映射。

整个系统中,所有资源就是线程池里的加解密线程,这些资源是固定的。最高效的方式就是让所有资源全动起来。参考前天的文章可以得到一个共性的方法:
https://zhuanlan.zhihu.com/p/492863461​
要让固定的资源去调度请求,而不是反过来。如果为每个流分配一组加解密资源,无异于Apache之于Nginx,为每个请求分配一个线程。

从某个队列取出的某个请求若占用线程过久,多队列情形,该队列后续的请求均阻塞,即使其它队列对应的线程空闲,也无法前来处理,这些线程的空转便是资源浪费,落实下来就是对吞吐和延时的损害。

最后,指明一个明显的疑惑点。

单队列不会遇到锁问题吗?多个线程抢一个队列锁不是饱受诟病吗?使用多队列不正是解除这把锁从而释放性能的妙计吗?

No,No,No!很多人不但不理解场景的重要性,也不理解设计是一回事,实现是另一回事。

先说场景。在数据流通路场景下,单队列锁确实被诟病,此时应该用多队列拆锁。但加解密完全不是通路,而是一种服务,将数据包进行加解密是典型的请求/服务模型。

再看设计和实现。锁开销只是一个实现问题,不同的锁也有差异,本末考虑,锁开销在整体开销中可能微不足道。Intel最新一项技术也是本文所描述的思路,但它是硬件实现,另外,wireguard-go的加解密机制亦如是,单独的go channel完全不是瓶颈。

近日做了一些颠三倒四的优化,数据上看,单队列总吞吐性能秒杀多队列,使用多队列似乎有炫技之嫌疑。区分通路模型和请求/服务模型非常重要。分不清工作日和周末,随便写一篇。

浙江温州皮鞋湿,下雨进水不会胖。

加密一条保序的数据流相关推荐

  1. 保序加密OPE 算法 BCLO09及python仿真

    文章目录 一.简介 二.算法描述 1. 随机保序函数和超几何分布的关系 2. 保序函数模型 3. 保序函数伪代码 4. 保序函数实例讲解 三.python仿真实验 四.参考文献 一.简介 数据库经过加 ...

  2. 密码学——保序加密算法(OPE算法-2009年提出)通俗易懂解析(小学生都能懂!)含python代码

    一. 预备知识 保序加密算法:最初是由2009年,Boldyreva等四个人提出来的,可简称BCLO-09算法,论文题目为<Order-Preserving Symmetric Encrypti ...

  3. 基于Isotonic回归(保序回归算法)的鸢尾花数据集回归问题

    基于Isotonic回归的鸢尾花数据集回归问题 1. 作者介绍 2.保序回归算法 2.1 算法原理 2.2 保序回归算法举例 3. 鸢尾花数据集介绍 3.1 数据集获取 4.代码实现 4.1 导入需要 ...

  4. 103 保序回归 isotonic regression

    1.关于isotonic regression 首先sklearn粘上原贡献者的博客Isotonic Regression  http://fa.bianp.net/blog/2013/isotoni ...

  5. DPDK 报文调度/保序 终极解决方案 Event Dev 简介(硬件加速也很可能是鸿蒙微内核IPC性能的钥匙)...

    01 背景介绍 网络报文的分发以及保序一直以来是让人头痛的问题, 为了完整的解释Event Dev的背景,我们可以从两个基本概念的定义开始: 报文分发是指针对网络通信报文的某种特征(例如 5 tupl ...

  6. 多项式回归、分位数回归(Quantile Regression)、保序回归(Isotonic Regression)、RANSAC回归、核岭回归、基准回归模型(baseline)

    多项式回归.分位数回归(Quantile Regression).保序回归(Isotonic Regression).RANSAC回归.核岭回归.基准回归模型(baseline) 目录

  7. sklearn自学指南(part32)--保序回归

    学习笔记,仅供参考,有错必纠 文章目录 保序回归 保序回归 IsotonicRegression类对一维数据进行非递减实函数拟合.它解决了以下问题: $$ minimize ; \sum_i w_i ...

  8. Spark机器学习(3):保序回归算法

    保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小.比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比 ...

  9. Python 第三方模块 机器学习 Scikit-Learn模块 有监督学习1 交叉分解,高斯过程,保序回归

    一.cross_decomposition 1.简介: 该模块用于进行"交叉分解"(cross decomposition) 2.使用: "典型相关分析"(Ca ...

最新文章

  1. 1061 Dating
  2. 想学单片机怎么入手?学单片机前先学什么?
  3. 评审关上了你CVPR的门?这还有Rebuttal的窗,7个小技巧送上
  4. expect,spawn用法小结
  5. Android中的颜色
  6. MySQL 事务到底是隔离还是不隔离?
  7. AD,proteus操作
  8. 设置css3动画的顺序,CSS3 “瓷砖”顺序飘落的动画
  9. 「深度」千篇一律的智能音箱,为何它们就是对显示屏“不感冒”?
  10. 天津东软实训第八天------倒排索引
  11. 自适应各终端懒人网址导航源码v1.6
  12. tablepc是什么平板电脑_iPad不是平板!想买Tablet PC的看过来
  13. 21.pgsql中的执行计划explain
  14. html中尖括号怎么写,HTML中显示特殊字符,如尖括号 “”,
  15. python可以写什么视觉特效_Python实现视觉特效:一行命令给头像自动戴上口罩的案例...
  16. 大数据 | Hadoop性能测试
  17. 玩转华为数据中心交换机系列 | 配置基本QinQ示例
  18. java对接云点播上传视频,视频转码,播放视频,删除视频
  19. Flutter 网络请求 Dio 拦截器详解
  20. 达人评测 r7 7735h和r7 5800h选哪个 锐龙r77735h和5800h对比

热门文章

  1. 为什么编程是独一无二的职业
  2. 机械祭天法力无边:练习3.6:编写一段程序,使用范围for语句将字符串内的所有字符用X代替。
  3. 用python创建微信机器人_手把手教你用Python创建微信机器人
  4. iMX6UL开发板移植libcurl库
  5. SQL Server的时态和历史表
  6. mysql 历史数据迁移,MySQL 历史数据表迁移方法
  7. 【web前端初级课程】第二章 CSS层叠样式表
  8. 计算机维修行业中年,35岁改行的5个职业 中年转行也很轻松,你选对了吗
  9. 思科路由器连接电脑配置
  10. 蚂蚁区块链第2课 如何申请获得100万创新大赛参赛资格?