为什么在Erlang中要使用OTP?

9
作为这个问题的回答:使用OTP设计原则在Erlang开发中带来了哪些好处?
我正在开发一个仅接收命令并发送响应的服务器。
注:OTP是Erlang/OTP(Open Telecom Platform)的缩写,是一种通用的、可扩展的并发编程框架,它提供了一组库和标准化的设计模式,可以帮助开发人员构建高可靠性、高可伸缩性和高并发性的分布式应用程序。
2个回答

14

OTP是一组经过历练的设计元素和惯用语,用于创建容错系统以及其他一些方面(如灵活性、实时更新等)。简而言之,您希望在这些环境中使用它,或者可能会成长为这些环境,因为在Erlang中创建可靠、稳定系统的许多艰辛都融入了OTP行为和架构中。如果不使用它们,则要么没有容错、灵活的系统,要么将一次次重新制定所有决策和错误来创建最终相当于OTP的克隆。

那么问题真正是,在什么情况下不需要使用OTP? 如果您不打算编写旨在长时间运行并最小化中断的软件,那么您不需要OTP。 如果您已经有一个完成其工作且更熟悉的框架,那么您不需要OTP。 如果您想要学习(也许是通过艰难的方式)OTP背后的决策,则不需要OTP。 如果学习它的成本(确实存在成本!)超过了您的软件的系统停机成本,则不需要OTP。

了解OTP的原因和原理的最佳方法是OTP Design Principles User's Guide。 在直接陈述推理的地方,您经常可以在行之间读出每个组件的基本原理。


1
只是为了完整性:“OTP提供实现最常见并发设计模式的库模块。在幕后,库模块确保以一致的方式处理错误和特殊情况,程序员无需意识到这一点。因此,OTP行为提供了一组标准化的构建块,用于设计和构建工业级系统。” - Daniel
3
不确定在Stack Overflow上是否允许推销一本书,但是http://www.manning.com/logan/的免费样章1和3应该能让你了解OTP的用途。 - RichardC
我在SO和PSE上看到了很多书籍链接。别担心,RichardC。最糟糕的情况就是你被禁言并像一只狗一样被追捕!:D - JUST MY correct OPINION

3
OTP包含一些适用于容错系统的良好设计模式,例如gen_server和监督模式可能会引起兴趣。这取决于您想要使用Erlang做什么。
例如,如果您想运行一个网站,您可能会有兴趣使用Yaws,如果您想要一个容错的网站,您可以使用带有Yaws监督的OTP。
OTP还包含可用的行为模式。

@dkk:你可能会对监控你的服务器感兴趣,并在它崩溃时自动重启它。也许可以通过热代码交换在运行时升级它。 - Jonas
所有这些都可以在没有OTP的情况下完成。OTP只是一个为您执行此操作的库,并且经过了广泛测试(因此它将更少容易出现错误)。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接