【Rust 日报】2021-10-10 Databend: 弹性可靠高效的云仓库

2021-10-19 14:30:27 浏览数 (1)

Databend: 弹性可靠高效的云仓库

Databend 旨在成为一个开源的弹性可靠云仓库,它提供极快的查询,并结合了云的弹性、简单性、低成本,旨在使数据云变得容易。

Databend 受 ClickHouse 启发,计算模型基于 apache-arrow,主要包括三个组件:

  • meta service 层
  • 计算层
  • 存储层

结构如下图所示:

官网:

GitHub:datafuselabs/databend: An elastic and reliable Cloud Data Warehouse, offers Blazing Fast Query and combines Elasticity, Simplicity, Low cost of the Cloud, built to make the Data Cloud easy

Bronze: Rust 垃圾回收器

Rust 没有使用垃圾回收器,而是借助精密、复杂的类型系统,这样做使得 Rust 很高效,但相对难以学习和使用。本文作者们为 Rust 设计了一个可选的基于库的垃圾回收器。为了验证效果,文章对来自 633 人班级的志愿者进行了一项随机对照试验,总共收集了 428 名学生的数据。结果发现,对于需要管理复杂别名的任务,使用垃圾回收器的用户更有可能在可用时间内完成任务,而完成任务的用户只需要大约三分之一的时间(4 小时与 12 小时)。

将来希望扩展 Bronze 跟踪器以跟踪可能传递地包含对 GC 对象引用的任意对象。还希望调查使用 GC 的影响,不仅是针对复杂的别名场景,而且是为了减轻总体所有权的影响;也许这样做可以使学习曲线变平,并且帮助用户更积极地使用 Rust。

很有意思的想法,详细可阅读下方论文。

作者主页:Michael Coblenz

Paper:Does the Bronze Garbage Collector Make Rust Easier to Use? A Controlled Experiment

GitHub:mcoblenz/Bronze

abi_stable: 动态加载

Rust-to-Rust ffi,标准类型的 ffi-safe 等价物,并创建在启动时加载的库。对于 Rust-to-Rust ffi,重点是创建在程序启动时加载的库,以及加载时类型检查。这个库允许定义可以在运行时加载的 Rust 库,即使它们是使用与依赖它的 crate 不同的 Rust 版本构建的。

相关文章:Plugins in Rust: Diving into Dynamic Loading | NullDeref

GitHub:rodrimati1992/abi_stable_crates: Rust-to-Rust ffi,ffi-safe equivalents of std types,and creating libraries loaded at startup.

rust-ci-release-template: Rust 二进制 CI 发布模板

每次开发时自动执行:

  • 带缓存的 CI:检查、测试、代码风格

推送新标签时自动执行:

  • 构建多平台二进制文件
  • 创建 GitHub 版本
  • 更新 Homebrew

GitHub: SpectralOps/rust-ci-release-template: A Github Actions based CI release template for Rust binaries

bkt: 子进程缓存工具

bkt 是一个子进程缓存实用程序,可用作命令行二进制文件和 Rust 库。在 shell 提示、交互式应用程序(例如 fzf)和轮询其他进程的长时间运行的程序中非常有用。

GitHub:dimo414/bkt: bkt is a subprocess caching utility, available as a command line binary and a Rust library.

crabz: 跨平台、快速压缩和解压缩工具

支持以下格式:

  • Gzip
  • Zlib
  • Mgzip
  • BGZF
  • Raw Deflate
  • Snap

安装

代码语言:javascript复制
# Mac homebrew
$ brew tap sstadick/crabz
$ brew install crabz

# Debian(Ubuntu)
$ curl -LO https://github.com/sstadick/crabz/releases/download/<latest>/crabz-linux-amd64.deb
$ sudo dpkg -i crabz-linux-amd64.deb

# Cargo
$ cargo install crabz

使用

代码语言:javascript复制
# 压缩
$ crabz -o file.gz file
# 解压缩
$ crabz -d file.gz -o file

GitHub:sstadick/crabz: Like pigz, but rust

mc-proxy: Minecraft 多人代理和拦截器

这是一个用于 Minecraft 服务器的在线/离线全功能代理。基于为 Minecraft 1.8 优化的、定制的数据包解析器,通过以流方式解析数据包而不是一次性加载到内存来最大限度地减少内存使用。包含客户端和服务器。

GitHub: 101arrowz/mc-proxy: Minecraft proxy

Rust In Blockchain 28 期

已经有一段时间没有了解 Polkadot / Substrate,但他们创建互操作区块链(在 Polkadot 中称为 “平行链”)生态系统的雄心勃勃的计划每个月都在加快推进。最近一些有趣的 Substrate 项目:

  • Pontem - the Experimentation Platform for Diem:Pontem 不是 Diem,而是一个运行 Move VM 的网络,构建在 Substrate 上。
  • Subspace Network:白皮书声称解决了所谓的农民困境。
  • Crust - Chain to Decentralized Cloud:一种分布式加密 IPFS 固定服务,依赖于可信执行环境来验证用户空间是否在其 “有意义的工作证明” 共识算法下执行其计算和存储职责。

网址:RiB Newsletter #28 - Rust in Blockchain ❤ rib.rs

文章/书籍推荐

  • 关于架构:Alexis Lozano
  • Rust 和创业公司:Building a startup with Rust | Synth
  • Rust 与 Kotlin:What Rust could learn from Kotlin | by Cédric Beust | Oct, 2021 | Medium
  • 如何为 Rust 项目写 Dockerfile:Writing dockerfile in rust project | windsoilder.github.io
  • 形式程序验证与 SMT:Introduction - Verification For Dummies: SMT and Induction by OCamlPro
  • Rust Mock:faux - faux
  • 使用 Rust 进行 kernel 开发:Using Rust for kernel development [LWN.net]
  • Rust Linux Kernel 系列文章:So You Want to Rust the Linux Kernel? - Paul E. McKenney's Journal — LiveJournal
  • 如何构建具有副作用的快速、分布式和灵活的分析管道:Spark and Rust - How to Build Fast, Distributed and Flexible Analytics Pipelines with Side Effects

0 人点赞