阅读更多
只凭32个技术人员,如何应付4.5亿的用户?对于刚刚被Facebook用190亿美元收购的WhatsApp来说,答案是Erlang——一种诞生于上世纪80年代的编程语言,终于在此时走到了聚光灯下。



但面对很多试图替代它的编程语言,Erlang有自己的将来吗?

Erlang是25年前由瑞典电信巨头爱立信开发,而现在它却在像WhatsApp和TigerText这样的即时消息应用里找到了自己的位置。即使Facebook也对这种语言大唱赞歌——它在2009年用Erlang开发了Facebook聊天应用。而在同年,它拒绝了WhatsApp创始人Brian Acton的求职申请。

并发成为新宠

“使用Erlang,你可以开发出同时允许大量用户连接的消息传输应用,而不用担心消息是如何传输的,”使用这种语言开发的匿名发帖系统Whisper的CTO Chad DePue说。“相反”,他说,“你担心的是如何设计一个好的应用。”

爱立信工程师Joe Armstrong设计Erlang语言时始终将电信通讯的工作原理铭记在心:同时有百万用户并行通讯,对故障事件几乎是零容忍。对于如此巨量的并行通讯,其它语言基本可望而不可及——有的表面上看起来擅长处理并发,但它们却不是原生的“多任务处理者”。而Erlang,跟它们形成鲜明对比,天生擅长多线程或玩这种“杂技”——再增加一个旋转的盘子?丢上来!

“这种语言非常富有表达性,”谷歌创新实验室的Igor Clark说。“你可以在一个很高的层面工作,用它的几个关键概念可以做很多事情。”

从实际使用的角度,Erlang最初非常适合在单个机器上跨多处理器处理高效的执行命令。而如今,它已经进化成擅长跨全球网络服务器——也就是我们所说的“云”——执行海量命令。游戏,金融等任何像实时拍卖系统那样对速度、稳定性、吞吐量高要求的场景,Erlang的这种云特征都是必不可少的。

同样,对于程序员来说,Erlang的吸引力也独树一帜的,它允许系统不停机的情况下进行更新和bug修复。实时上,你可以修改系统属性或更换文件而不引起系统的卡顿。Erlang语言的这种特性是电信业的强制要求的结果:正如DePue说的,“当有人在打电话时,你不可能因为要升级系统而挂断他们的电话。”

砸了电信的饭碗

Erlang语言在1998年就开源了,而如今的电信也却没有当初那么大方。像WhatsApp,微信,Line和其它应用如雨后春笋,电信业一度依赖的短信费用迅速被腐蚀。KPN,一家荷兰公司,在目睹短信收益大幅下滑后试图封杀这些应用,但最终在法庭上输了官司。

一些大型的运营商,例如Vodafone,试图建立自己的短信服务网络,但几乎没有成功的。它们现在的办法就是对用户的合同进行修改,添加并标明短信和数据各自的费用。

就在这些电信公司忙着调整他们的收费标准时,WhatsApp却在专注做产品。它们的技术团队让WhatsApp在规模和速度上的提升一次又一次的让Erlang语言社区轰动,在短短的几年里,每个服务器的连接数从1万跃升到2百万。

这些成绩的实现全都归功于Armstrong打下的基础,他为爱立信量身定制的项目AXD301,实现了“9个9”的可靠性 (99.9999999%)。而如今这些年轻的挑战者们,却将这些垂老的电信公司打的节节败退。

Erlang语言能实现超越吗?

有着这样骄人的成绩,你也许会认为Erlang会被人们广泛的使用。但现实情况要比你想象的复杂得多。

直到现在,Erlang编程语言的开发者社区规模依然很小,并且大部分聚集在欧洲。这种语言的语法是公认的“奇特”。如果你想分析复杂的数据或架设一个小网站,自然会选择其它更好的语言和工具。而且,很多新出现的编程语言和变种都借鉴了Erlang语言的基本理念,比如谷歌的Go语言,竞争越来越激烈。

Elixir给Erlang带来了希望——Armstrong最近的大力赞扬。Elixir将Erlang的语法普通化,这能帮助这种语言模仿Rails带红Ruby语言的模式找到自己的出路。像Chicago Boss这样的项目也在努力让这种语言更用户友好化。一旦有更多的社群在Erlang语言周围聚集,人们将会发现 OTP(开放电信平台)里更丰富的功能。

“他们从开发坚固无比的软件和程序库中总结出来很多模式,我们可以很好的借用。”Clark说。

Erlang语言能否流行起来的一个关键是便携设备市场,就是我们所说的网络设备。智能设备爱好者们已经在尝试在MQTT——一个轻量级的传感器间消息传输协议——上使用Erlang。如果能短信控制恒温器,那用WhatsApp也一定能行。
本文转载来自:外刊IT评论
英文原文:Inside Erlang, The Rare Programming Language Behind WhatsApp's Success
  • 大小: 12.6 KB
来自: 外刊IT评论
3
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 日600亿消息,月4.65亿用户——WhatsApp的Erlang世界

    两年,流量翻了10倍,月用户增至4.65亿,平均每日接收190亿消息,发送400亿消息,同时还有6亿张图片、2亿条语音、1亿条视频,然而他们依仗的只是1个10人工程团队。在之前我们有分享过HighScalability创始人TodHoff...

  • WhatsApp背后的小众编程语言:Erlang

    对于刚刚被Facebook用190亿美元收购的WhatsApp来说,答案是Erlang——一种诞生于上世纪80年代的编程语言,终于在此时走到了聚光灯下。 但面对很多试图替代它的编程语言,Erlang有自己的将来吗? Erlang是25年前由...

  • whatsapp-sticker-bot::robot:| Bot que cria figurinhas para WhatsApp自动机

    WhatsApp贴纸机器人 Criaçãode figurinhas即时聊天进行WhatsApp :star-struck: 下载daaplicação 简明扼要 :glowing_star: 功能科 Receber Imagem Retornar Figurinha Receber Video e retornar figurinha...

  • 桌面信使WhatsApp:trade_mark:「Desktop messenger for WhatsApp:trade_mark:」-crx插件

    提供一个简单的访问WhatsApp,并通知你所有的新职位。 用于WhatsApp:trade_mark:的Desktop Messenger是从台式机检查WhatsApp的最简单方法。 单击工具栏图标,将在附加到工具栏弹出窗口的小UI中呈现WhatsApp Web。 ...

  • send-whatsapp-with-node:使用Node发送WhatsApp消息

    发送带有节点的WhatsApp消息 该文件使用Node和Vonage Developer Messaging沙箱发送测试WhatsApp消息。 要使用它,请首先转到您的仪表板并配置。 将存储库克隆到计算机上的新目录,然后执行以下操作: 运行npm ...

  • flutter-whatsapp-ui-clone:使用Flutter构建WhatsApp UI

    使用Flutter构建WhatsApp UI 该存储库包含我的系列文章“使用Flutter构建Whatsapp UI”中的代码。 首先,请克隆存储库,然后运行flutter run $ git clone ...

  • Whatsapp_word_art:通过whatsapp聊天制作图片

    Whatsapp_word_art:通过whatsapp聊天制作图片

  • whatsapp-web.js:Nodes的WhatsApp客户端库,通过WhatsApp Web浏览器应用程序连接

    whatsapp-web.js 通过WhatsApp Web浏览器应用程序连接的WhatsApp API客户端 它使用Puppeteer运行Whatsapp Web的真实实例,以避免被阻止。 注意:尽管可以使用此方法,但我不能保证您不会被阻止。 WhatsApp不允许在...

  • whatsapp-node-api:WhatsApp的简单NodeJS API包装器

    whatsapp-node-api 一个简单包装器,用于 •使用的• •• :laptop_computer: 技术领域 为什么? 我决定构建此版本的主要原因是,有许多开发人员想要在从Whatsapp正式获取/购买Whatsapp商业帐户API之前使用...

  • Whatsapp-Botto-Re:Whatsapp Botto:Re是动漫主题的whatsapp机器人

    Whatsapp-Botto-Re 使用open-wa / wa-automate-nodejs库制作的whatsapp机器人 •安装•功能•许可证 :house: :memo: 先决条件 吉特 npm> = 2.0.32 节点> = 12.18.3 :writing_hand_selector: 编辑配置 编辑...

  • Paint for Whatsapp:trade_mark: Web-crx插件

    paints for whatsapp:trade_mark:web - 与whatsapp:trade_mark:web共享图像的最佳方式 whatsapp:trade_mark:web的油漆, Whatsapp:trade_mark:Web中非常缺少的真棒功能: 编辑图像,允许您在共享之前编辑图像。...

  • whatsapp_react_clone:使用React和Next.js克隆Whatsapp

    这是一个用引导的项目。入门首先,运行开发服务器: npm run dev# oryarn dev 用浏览器打开以查看结果。 您可以通过修改pages/index.js来开始编辑页面。 页面在您编辑文件时自动更新。...whatsapp_react_clone

  • whatsapp-bizapi-mock:Go语言编写的WhatsApp Business API的Mockserver

    WhatsApp商业API模拟服务器该存储库包含WhatsApp Business API(WABiz)的模拟服务器。 它用于执行集成,系统和负载测试。支持的端点终点用法支持的POST / v1 /生成生成webhook请求 :check_mark_button: 开机自检/ ...

  • Whatsapp-Botto-Xre:轻巧,高效且稳定的Whatsapp-Botto-Re后继产品,建立在Baileys的顶部

    WhatsApp-底部-xRe 轻巧高效的Whatsapp Bot,功能丰富 :sparkles: 强调 :sparkling_heart: 面向对象 :blue_heart: 用编写 :yellow_heart: 基于事件 :green_heart: 控制面板 :purple_heart: 自重验证 :heart_...

  • whatsapp-api-tutorial:whatsapp-web.js的实现

    Whatsapp API教程嗨,这是的实现示例观看教程:如何使用? 克隆或下载此仓库进入项目目录运行npm install 运行npm run start:dev 打开浏览器并转到地址http://localhost:8000 扫描二维码享受!传送讯息至群组您可以...

  • WhatsApp-Telegram-Bridge:将WhatsApp应用于电报桥即服务

    **法律免责声明:** WhatsApp最终可能会阻止通过yowsup-cli用于连接的电话号码**使用风险自负**执照该代码是根据MIT许可发布的(请参阅LICENSE)。 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ...

  • 精致的whatsapp:通过热键和自定义主题为Whatsapp Web增压! :rocket:

    精致的WhatsApp 使用热键和深色主题为Whatsapp:trade_mark:Web增压 :rocket: 键盘快捷键 行动 快捷键 开始新的聊天/快速搜索 ⌘ Command + K或Ctrl + K 显示/隐藏当前聊天 ⌘ Command + L或Ctrl + L 显示/隐藏...

  • WhatsApp_Status_Saver:WhatsApp状态下载器,预览和保存文件。 Android 11支持

    WhatsApp_Status_Saver WhatsApp Status Downloader,预览和保存文件

  • TCABEE 008-2020 轨道交通车站高效空调系统技术标准.docx

    TCABEE 008-2020 轨道交通车站高效空调系统技术标准.docx

  • node-v5.12.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics