实践分布式系统下的自动故障处理

分布式系统的一个优点就是具备优秀的可用性,但是现在的 tikv-server 遇到文件损坏或者 IO 错误时会直接 panic,导致整个系统的延迟短暂上涨,而如果像去年某客户遇到的整批采购的多个硬盘都出现了坏道的问题,那就更惨了,丢部分数据已经算小事,如何快速恢复启动这样的多节点损坏的集群,想想都头大 😭

Read More

WireGuard:随时随地一键回家

双十一薅了腾讯云三年vps的羊毛,准备拿来部署一个局域网方便在外用家里的开发机。wireguard ubuntu 原生的 VPN 工具,不过因为协议没有混淆,部署在海外 VPS 很容易被封,建议只用于正常 VPN 需求。部署很简单只需要: 1.公钥/私钥 2.wg配置文件 即可。

Read More

让 TiKV 愉快地使用 async/await 异步编程模型

几个月前,接了一个大坑,因为 std::future 趋于稳定,官方的 async/await 也进入了 stable 版本,作为坚决拥护 rust 社区的项目,为 TiKV 升级 future 并引入 async/await 也被提上了日程。这里主要总结下作为 Rust 菜🐔在异步编程范式下的一些东西。

Read More

存储引擎故事笔记

学习 RocksDB 知道源码那么写的,但是也要从顶端看到为什么要有这些东西,组里的一位很牛的上古程序员在很久以前给我们科普过 Bedtime Stories for children (Storage Engines),这里主要对大佬的科普内容整理主要便于自己温习。

Read More

聊一聊 Memory Order

在学习 C++ 的时候接触了 Memory Order 的概念,今天刷知乎时看到有人讨论,写了几个 example 做了验证,发现之前对这个东西的理解有偏差。这次重新学习后做一个整理。

Read More

实践 Rust FFI,基于 grpc-rs 的经验

来 P 社的接触的第一个 repo 就是 grpc-rs,这是一个 rust 封装的 grpc lib,在 tonic 成熟之前应该是 rust 社区唯一可放心使用的 grpc 库了。这里记录一下实践 FFI 的经验,包括如何构建编译一个 rust 包装的 c/cpp 的心得。

Read More

为 TLS 实现零拷贝 sendfile

零拷贝主要指减少内核用户态的拷贝次数,一般来说没有特别的优化将一个文件从网卡发送出去,需要先读取文件内容到内核缓冲区,再从内核拷贝到用户态,用户态程序又系统调用 write 写入网络文件缓冲区,最后才会走 IO 流程发送出去。

Read More