「InfluxDB IOx」未来会用 Rust 和 Arrow 构建内核
Rust提供了对运行时行为和内存管理的更精细控制。另外,它使并发编程更容易,并且消除了数据争用。
Apache Arrow定义了用于列式数据的内存格式,以及Parquet(一种持久的持久性格式)以及Flight(一种用于“通过网络接口进行大型数据集的高性能传输”的客户端/服务器框架和协议)。另外,Rust的Apache Arrow工具集中还有DataFusion,它是用于Apache Arrow的Rust本机SQL查询引擎。假设我们以DataFusion为核心进行构建,这意味着InfluxDB IOx将支持现成的SQL子集随着DataFusion项目的成熟,通过InfluxData外部的协作者的开发工作,它既可以在InfluxDB IOx中使用,也可以在其他地方使用。
该项目仍处于初期阶段。我们目前尚未生成构建,并且除了InfluxDB IOx项目README之外,没有任何文档。该团队是一个由高级工程师组成的小型小组,我们的工作与平台上其余部分的大型工程组织的所有工作并行。我们的目标是在明年初生产开源构建,并在InfluxDB Cloud中以alpha形式提供。
详情:https://www.influxdata.com/blog/announcing-influxdb-iox/
[linux kernel] 在Rust中编写BPF代码
BPF是一种虚拟机,当Linux系统上发生某些事件时,它允许在内核中运行用户定义的程序。例如,您要监视可疑文件活动,记录网络响应延迟甚至跟踪用户空间应用程序–您可以编写小型BPF程序,请求将它们附加到内核中的正确位置,并实施必要的检测。
BPF VM使用其自己的指令集。您可以直接编写字节码,但是人们通常使用 bpftrace 或编写C代码并使用 BPF编译器集合(BCC)进行编译。
从原理上讲,开发BPF程序的过程可以归纳为以下步骤:
- 用C编写BPF代码
- 编译BPF VM的代码
- 编写一个将第2步的输出加载到BPF VM的用户空间组件
- 使用BPF API在用户空间组件和BPF代码之间交换数据
RedBPF包括用于实现上述所有步骤(步骤1)除外的API和工具。使用RedBPF,步骤1变为:
- 在Rust中编写BPF代码
文中实现了一个简单的http trace, 有兴趣的可以仔细阅读
详情:https://blog.redsift.com/labs/writing-bpf-code-in-rust/
关于 Rust 的数学运算
昨天有个同学说 rust 没有基础数学运算。emmmm
今天写小玩具的时候发现标准库都不支持基础数学运算,都要自己造轮子,
三方库里也只有unsafe的linux数学库,愿rust越来越强!
洛佳同学的回复:
数字运算在类型里面,标准库是有的,是支持的
Attila的灵魂一击:
说找不到库的试试这个的分类?
https://lib.rs/science/math
点击发现更多科学计算库:https://lib.rs/science/math
最后说一句:多 Google ,几个关键字一拼什么都有了
From 日报小组 冰山上的 mook
社区学习交流平台订阅:
评论区
写评论还没有评论