加密一条保序的数据流
数据流传输过程中,包括不限于DPI,加解密等操作会对吞吐和延时带来大损害,因此倾向于对此类操作投放大资源。
在流传输过程中串行加解密不可取,应采用线程池,倾全系统之力并行做最困难的事。这种思路不可避免地遭遇队列设计问题。
请求/服务模型,用单队列而不用多队列,理由如下:
加密一条流应该怎么做:
如果是两条流呢?下图展列出一个问题,如何回答:
To extend or not ? No!
加解密队列不能按流扩展成多个,数目应该固定,不然就会陷入多队列的深渊。正确的做法如下:
要点不在流队列有多少,流队列亦可按照五元组hash成固定数目,要点在于,加解密队列一定要固定,且加解密线程一定要轮询从这些队列中取包。
现在,总结一下本质。
不要拿资源和请求做固定映射。
整个系统中,所有资源就是线程池里的加解密线程,这些资源是固定的。最高效的方式就是让所有资源全动起来。参考前天的文章可以得到一个共性的方法:
https://zhuanlan.zhihu.com/p/492863461
要让固定的资源去调度请求,而不是反过来。如果为每个流分配一组加解密资源,无异于Apache之于Nginx,为每个请求分配一个线程。
从某个队列取出的某个请求若占用线程过久,多队列情形,该队列后续的请求均阻塞,即使其它队列对应的线程空闲,也无法前来处理,这些线程的空转便是资源浪费,落实下来就是对吞吐和延时的损害。
最后,指明一个明显的疑惑点。
单队列不会遇到锁问题吗?多个线程抢一个队列锁不是饱受诟病吗?使用多队列不正是解除这把锁从而释放性能的妙计吗?
No,No,No!很多人不但不理解场景的重要性,也不理解设计是一回事,实现是另一回事。
先说场景。在数据流通路场景下,单队列锁确实被诟病,此时应该用多队列拆锁。但加解密完全不是通路,而是一种服务,将数据包进行加解密是典型的请求/服务模型。
再看设计和实现。锁开销只是一个实现问题,不同的锁也有差异,本末考虑,锁开销在整体开销中可能微不足道。Intel最新一项技术也是本文所描述的思路,但它是硬件实现,另外,wireguard-go的加解密机制亦如是,单独的go channel完全不是瓶颈。
近日做了一些颠三倒四的优化,数据上看,单队列总吞吐性能秒杀多队列,使用多队列似乎有炫技之嫌疑。区分通路模型和请求/服务模型非常重要。分不清工作日和周末,随便写一篇。
浙江温州皮鞋湿,下雨进水不会胖。
加密一条保序的数据流相关推荐
- 保序加密OPE 算法 BCLO09及python仿真
文章目录 一.简介 二.算法描述 1. 随机保序函数和超几何分布的关系 2. 保序函数模型 3. 保序函数伪代码 4. 保序函数实例讲解 三.python仿真实验 四.参考文献 一.简介 数据库经过加 ...
- 密码学——保序加密算法(OPE算法-2009年提出)通俗易懂解析(小学生都能懂!)含python代码
一. 预备知识 保序加密算法:最初是由2009年,Boldyreva等四个人提出来的,可简称BCLO-09算法,论文题目为<Order-Preserving Symmetric Encrypti ...
- 基于Isotonic回归(保序回归算法)的鸢尾花数据集回归问题
基于Isotonic回归的鸢尾花数据集回归问题 1. 作者介绍 2.保序回归算法 2.1 算法原理 2.2 保序回归算法举例 3. 鸢尾花数据集介绍 3.1 数据集获取 4.代码实现 4.1 导入需要 ...
- 103 保序回归 isotonic regression
1.关于isotonic regression 首先sklearn粘上原贡献者的博客Isotonic Regression http://fa.bianp.net/blog/2013/isotoni ...
- DPDK 报文调度/保序 终极解决方案 Event Dev 简介(硬件加速也很可能是鸿蒙微内核IPC性能的钥匙)...
01 背景介绍 网络报文的分发以及保序一直以来是让人头痛的问题, 为了完整的解释Event Dev的背景,我们可以从两个基本概念的定义开始: 报文分发是指针对网络通信报文的某种特征(例如 5 tupl ...
- 多项式回归、分位数回归(Quantile Regression)、保序回归(Isotonic Regression)、RANSAC回归、核岭回归、基准回归模型(baseline)
多项式回归.分位数回归(Quantile Regression).保序回归(Isotonic Regression).RANSAC回归.核岭回归.基准回归模型(baseline) 目录
- sklearn自学指南(part32)--保序回归
学习笔记,仅供参考,有错必纠 文章目录 保序回归 保序回归 IsotonicRegression类对一维数据进行非递减实函数拟合.它解决了以下问题: $$ minimize ; \sum_i w_i ...
- Spark机器学习(3):保序回归算法
保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小.比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比 ...
- Python 第三方模块 机器学习 Scikit-Learn模块 有监督学习1 交叉分解,高斯过程,保序回归
一.cross_decomposition 1.简介: 该模块用于进行"交叉分解"(cross decomposition) 2.使用: "典型相关分析"(Ca ...
最新文章
- 1061 Dating
- 想学单片机怎么入手?学单片机前先学什么?
- 评审关上了你CVPR的门?这还有Rebuttal的窗,7个小技巧送上
- expect,spawn用法小结
- Android中的颜色
- MySQL 事务到底是隔离还是不隔离?
- AD,proteus操作
- 设置css3动画的顺序,CSS3 “瓷砖”顺序飘落的动画
- 「深度」千篇一律的智能音箱,为何它们就是对显示屏“不感冒”?
- 天津东软实训第八天------倒排索引
- 自适应各终端懒人网址导航源码v1.6
- tablepc是什么平板电脑_iPad不是平板!想买Tablet PC的看过来
- 21.pgsql中的执行计划explain
- html中尖括号怎么写,HTML中显示特殊字符,如尖括号 “”,
- python可以写什么视觉特效_Python实现视觉特效:一行命令给头像自动戴上口罩的案例...
- 大数据 | Hadoop性能测试
- 玩转华为数据中心交换机系列 | 配置基本QinQ示例
- java对接云点播上传视频,视频转码,播放视频,删除视频
- Flutter 网络请求 Dio 拦截器详解
- 达人评测 r7 7735h和r7 5800h选哪个 锐龙r77735h和5800h对比