像 SpringBoot 和 Play 这样的 Java 框架能否通过利用机器上的所有内核同时处理多个请求?如果他们能做到这一点,那么 Elixir 解决了什么独特的并发问题?它只是一种不同的语言吗?或者计算范式本身有什么不同,让我们使用 Elixir 降低服务器成本?

这是报告:
https://www.techworld.com/apps-wearables/how-elixir-helped-bleacher-report-handle-8x-more-traffic-3653957/

最佳答案

我会尝试给出一个简短的答案:
Erlang/Elixir 强制 您使用 actor 编写异步、非阻塞的代码。

您可以将参与者视为“微”微服务。 Actors 有自己的状态,它们不共享数据(实际上所有变量都是不可变的),因此需要在彼此之间传递异步消息。

Erlang/Elixir 有自己的虚拟机,可以处理数十万个线程和其他优化(线程不是操作系统线程,而是虚拟/轻量级线程,虚拟机避免复制内存中的数据,即使所有变量都是不可变的,仅通过在真正需要时复制数据)

我不是最新的其他 Actor 系统,所以我无法判断例如JVM 上的 Akka 将获得类似的性能。 Virtual Actor Systems 或许也能够处理很多工作,Orleans 就是这样一个框架。 (虚拟 Actor 系统可以比作 Actor 的依赖注入(inject),当你需要他们时,他们被创建,当他们不使用时,他们从内存中删除) https://github.com/dotnet/orleans

关于spring-boot - 了解 Elixir ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53980286/

10-13 08:19