相关疑难解决方法(0)

功能语言(特别是Erlang)如何/为何能够很好地扩展?

我一直在关注函数式编程语言和功能的日益增长的可见性.我调查了他们,没有看到上诉的原因.

然后,最近我参加了Kevin Smith在Codemash上的"Erlang基础知识"演讲.

我很喜欢这个演示文稿,并了解到函数式编程的许多属性使得更容易避免线程/并发问题.我理解缺少状态和可变性使得多个线程无法改变相同的数据,但Kevin说(如果我理解正确的话)所有通信都是通过消息进行的,并且同步处理消息(再次避免并发问题).

但我已经读到Erlang用于高度可扩展的应用程序(爱立信首先创建它的全部原因).如果所有内容都作为同步处理的消息处理,那么如何有效处理每秒数千个请求?这不是我们开始转向异步处理的原因 - 所以我们可以同时运行多个操作线程并实现可扩展性吗?看起来这种架构虽然更安全,但在可扩展性方面却倒退了一步.我错过了什么?

我理解Erlang的创建者故意避免支持线程以避免并发问题,但我认为多线程是实现可伸缩性所必需的.

函数式编程语言如何本质上是线程安全的,但仍然可以扩展?

concurrency erlang functional-programming scalability

88
推荐指数
5
解决办法
1万
查看次数