Erlang与Elixir:构建高可用系统的技术探索
一、Erlang的性能与生态系统
- 性能特点
- Erlang并非速度最快的平台,在网络上的各种综合基准测试中,它通常不会名列前茅。因为Erlang程序在BEAM中运行,无法达到像C和C++这类机器编译语言的速度。
- 但这并非Erlang/OTP团队的失误或糟糕设计。该平台的目标不是追求每秒处理尽可能多的请求,而是让性能尽可能可预测并保持在一定范围内。例如,在给定机器上,Erlang系统的性能不会显著下降,不会因垃圾回收器启动等原因出现意外的系统故障。
- 长时间运行的BEAM进程不会阻塞或显著影响系统的其他部分。随着负载增加,BEAM可以利用尽可能多的可用硬件资源。如果硬件容量不足,系统会优雅降级,即请求处理时间会变长,但系统不会瘫痪。这得益于BEAM调度器的抢占式特性,它会频繁进行上下文切换,使系统保持运行,并优先处理短运行进程。当然,也可以通过添加更多硬件来满足更高的系统需求。
- 不过,对于密集的CPU计算,Erlang的性能不如C/C++。因此,如果系统的大部分逻辑是CPU密集型的,可能需要考虑使用其他技术。可以将这类任务用其他语言实现,然后将相应组件集成到Erlang系统中。
- 生态系统
- Erlang的生态系统不算小,但肯定不如其他一些语言庞大。在撰写本文时,在GitHub上快速搜索发现,基于Erlang的仓库约有20,000个,基于Elixir的仓库约有45,000个。相比之下,基于R
超级会员免费看
订阅专栏 解锁全文
100

被折叠的 条评论
为什么被折叠?



