并行、并发编程是计算机里非常有趣的主题。而 Erlang 或者说 OTP 无疑是做的最好的。
但 OTP 相关的资料却非常少。
比如存储,关于 ETS 的实现几乎找不到,但同类型的 Redis,却有一大把。
而且 ETS 要比 Redis 有趣的多,ETS 可以充分利用多核资源,而 Redis 是单线程的。
这对想了解 OTP 的人,是一件很遗憾的事。
所以开了这个 awesome-otp-learning 这个 repo,用来收集 OTP 内部实现相关的资料。
希望可以抛砖引玉。
Redis 也有多线程版本 https://github.com/JohnSully/KeyDB,但不是官方的。
而且实现的似乎也比较粗糙:
KeyDB works by running the normal Redis event loop on multiple threads. Network IO, and query parsing are done concurrently. Each connection is assigned a thread on accept(). Access to the core hash table is guarded by spinlock.
感觉在 CPU 核数很多的时候,性能会不会随着核数的增多而线性增长。
Redis 可以做集群,来分表,一定程度上,也可以利用多核。
话说回来,现在一般服务器,8 core 也就到头了,能充分利用多核,也不见得是会带来多少实惠。但这件事本身很有趣。
awesome
这是 Beam 开发者独享的 moment
Cool