Weekly Reading List Issue #1
FoundationDB Record Layer: A Multi-Tenant Structured Datastore
FoundationDB 2015 年被 Apple 收购并于 2018 年开源,作为 Apple 为数不多的开源项目受到广泛关注。简单介绍 FoundationDB 是一个基于 Paxos 的分布式 KV 存储,底层存储结构是 B-tree(是的,并不是 LSM tree),定位上跟 Google 的 Spanner 非常相似。这篇论文发表在 SIGMOD 2019,介绍的是基于 FoundationDB 的 record-oriented 结构化存储框架(也已经开源)。Layer 是 FoundationDB 一个很有特色的概念,在最基本的 KV 上无限扩展更加复杂的数据模型。这个框架整体上有几个亮点:
- 基于 Protocol Buffers 的数据模型定义
- 丰富的索引类型支持(单字段索引、嵌套字段索引、列表字段索引、聚合索引、rank 索引、全文索引、多字段联合索引等),并且索引是可以跨表的(这里简单将 record type 理解为表)。
- 基于 Java 的查询 API(并不是 SQL)
目前已经被应用在 CloudKit,替代旧的 Cassandra + Solr 架构(旧架构也有一篇论文介绍)。CloudKit 作为一个庞大的存储服务供所有 Apple 生态的应用和用户使用,这也就是论文标题中 Multi-Tenant 的含义。
Introducing Dispatch
Incident 管理一直是 DevOps 领域比较热门的话题,Netflix 开源了他们自己的 incident 管理工具 Dispatch,更早之前 LinkedIn 也开源过类似的东西。
Agent57: Outperforming the human Atari benchmark
大众对于 DeepMind 的认知恐怕就是下下围棋、打打星际,最近又搞起了雅达利的游戏,可以说是把强化学习玩儿出花儿了。最新一代的 Agent57 已经可以在全部 57 个游戏里战胜人类玩家。
An Illustrated Guide to Graph Neural Networks
Graph Neural Networks (GNN)最近几年已经火得不行,Amazon 也开源了相关的框架 DGL。这篇文章以一种简单的示意图的形式介绍什么是 GNN,帮助不了解 GNN 的人建立一个简单的认知。
Debugging with Delve
Delve 是一个 Go 语言的 debugger,Go 官方也推荐优先考虑使用它而不是 GDB。这篇文章简单介绍了 Delve 的基本功能,其实跟 GDB 的使用方式很类似,但是 Delve 的亮点在于可以理解 Go 语言的语义以及调试 goroutine。
gofiber/fiber
Fiber 是(又)一个 Go 语言的 HTTP 框架,设计上很大程度受了 Node.js 中非常流行的 Express 启发(API 非常相似)。得益于底层使用的 fasthttp 库,在 Fiber 自己的评测中超越了很多市面上现有的框架。