想到什么写什么周报 第40期 - 2019-01-20
How Algolia Reduces Latency For 21B Searches Per Month
https://stackshare.io/algolia/how-algolia-reduces-latency-for-21b-searches-per-month
介绍了 Algolia 如何实现低延迟的搜索服务。提到了几个关键工具如下:
- https://www.wavefront.com/
- https://www.pagerduty.com/
- https://github.com/etsy/statsd/
- https://collectd.org/
- 获取当前进程及子进程的资源使用率 http://man7.org/linux/man-pages/man2/getrusage.2.html
- 内存带宽测试工具 https://github.com/raas/mbw
- https://github.com/gperftools/gperftools
他们家的服务状态页做得不错: https://status.algolia.com/
PostgreSQL Configuration Cheat Sheet
https://pgdash.io/blog/postgres-configuration-cheatsheet.html
Linux Technology for the New Year: eBPF
https://thenewstack.io/linux-technology-for-the-new-year-ebpf/
eBPF 越来越火了,虽然 RHEL 7 还不支持,但是 RHEL 8 已经使用了 4.18 版本的内核,是时候学起来了。
How We Solved a Storage Problem in PostgreSQL Without Adding a Single Byte of Storage
pg 的默认 work_mem 是 4MB,作者使用的 sql 查询需要处理一个二进制的列,这需要使用大约 300MB 的空间,超过了 work_mem 的大小,所以一运行查询就消耗很多的硬盘空间。
解决方案是不直接使用二进制列的内容,而是先做一个 md5 hash,并且使用 uuid 类型将要处理的数据减少到 16 字节,最终需要消耗的硬盘空间从 309MB 减少到了 7MB。因为计算 hash,查询的执行时间从 160ms 上升到 374ms,不过对于夜间跑的任务来说,这个不是问题。
Time-series data: Why (and how) to use a relational database instead of NoSQL
介绍了 TimescaleDB 如何利用 Postgres 来构建一个时序数据库。几个点:
- OLTP 的内存和硬盘数据交换成本很高。
- 时序数据的写是 append only 的。
- time/space chunking
Want a super-fast messaging system?
https://hackernoon.com/want-a-super-fast-messaging-system-c19c9f8cf560
NATS 的作者介绍他们团队在设计一个高性能的消息队列服务上的经验,主要关心四个方面:
- Message Per IO call
- Message Routing
- Protocol Parser
- Scalability