1 OTP的前世今生
Erlang出现在20世纪80年代中期,由爱立信(Ericsson)所管辖的实验室所开发。当时那些大神级人物为了寻找适合下一代电信产品的编程语言,花费了两年多的时间,使用原型法测试了所有可能的编程语言,最终发现,虽然当时现有的编程语言也有一些有趣和相关的特性,但是并没有一门独立的语言能包容电信行业所需要的所有特性,这一点让他们非常不爽,于是决定开发一种全新的编程语言,这就Erlang。
到了1996年,Erlang编程框架OTP诞生了,OTP给Erlang编程语言系统带来了结构化的框架,以及一套实现健壮性和容错性的工具和类库。时间到了1998年12月,爱立信决定将Erlang作为开源代码发布。OTP最初是开放电信平台(Open Telecom Platform)的缩写,是为了构建和运行电信系统而设计的一个开发系统。开源之后,已经没有人稀罕它在电信方面的品牌效应了,发展至今,无论是Erlang还是OTP,都早已不再局限于电信应用,OTP现在更为贴切的名字应该是"并发系统平台"。
Erlang从一个完整的,独一无二的世界观开始,提供了一个如操作系统级细密的 VM,随后又将业界的最佳实践抽象出一套框架——OTP,解决了很多分布式并发系统下复杂的基础问题。OTP接近于应用程序基础系统,包含了一组库和实现方式,可以用来构建大规模、容错和分布式的应用程序。标准的Erlang分发套装就包含OTP库,可以说OTP基本上是与生俱来的。OTP基本上涵盖了系统生产的方方面面,它不单单关心软件如何撰写,还关心软件如何运行;不仅仅关心软件今天如何运行,还关心软件明日如何升级。
2 OTP的可靠否
写了大半天的云笔记,不知什么原因,它竟然自动同步到几个小时以前的状态,在这里再次痛恨一切不可靠的东西!
当今的互联网世界,所有人都在追捧和创造新的技术、新的名词,但是回归到问题本身,新的技术一定好吗?选择合适和可靠的技术才是王道。而一个技术是不是可靠,往往需要多年的大规模生产验证。
虽然,很多人可能并没有听说过Erlang,可是Erlang系统就在我们身边:
- Cisco超过90%的交换机仍然在使用Erlang;
- 早在2012年,WhatsApp的生产系统就实现了在单个Beam虚拟机节点上同时处理超过2百万个TCP/IP连接;
- RabbitMQ 服务器端代码是Erlang实现的;
- 电信公司T-Mobile的短信业务也是Erlang实现的;
- Ericsson用Erlang生态构建新的5G基础设施软件;
- 等等。
可以说,在分布式、高并发、高容错诸多领域,Erlang早得到了广泛的应用; 而OTP作为Erlang的重要组成,多年的使用也证明了它的可靠性勿容置疑。
3 为什么要有OTP
先来看2段亲切而熟悉的代码:
#include<stdio.h>
int main(void){
printf("Hello!\n");
return 0;
}
package com;
import java.io.*;
import java.util.*;
在常见的语言中,所谓的库,往往是语言的一种扩展,编译过后,它可能会变成程序的一部分,或者是在运行时可公共调用的一部分。程序运行中的艰难险阻,需要我们自已去面对。
而Erlang处理这个问题的哲学思想不同,它是从宏观上把构建系统的公共特性进行提炼,形成一个公共的规范,当然也帮我们把容易出问题的基础部分全部实现完成,我们只是需要将个性化的部分实现即可。这么做的好处在于问题的非函数部分(比如如何进行实时代码升级)对所有应用程序都是一样的,而函数部分(由回调函数提供)在每个问题里都是不同的。
这正是编程中人们高度期望的一种境界——“困难”的程序被隔离成了系统中的一些定义良好的小的部分,系统中绝大部分代码能够用有着良好类型定义的顺序化程序来编写。

最低0.47元/天 解锁文章
302

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



