热更新
Elixir 还有别的一种安排方法,BEAM 虚拟机。稍微有点复杂,但有一些特定类型的应用合适这种筹划。它叫做热加载或热更新。
Distillery 应用--upgrade参数来简化你构建的敕令,但这并不料味着你要一向用它。
在谈论何时用它之前,我们须要先懂得它是什么。 Erlang是为德律风体系而开辟的,今朝驱动了这个星球上一半的德律风体系。它被设计成永远不会宕机, 但当体系中正在有人打德律风时,安排就变成了一个复杂的问题。
除了这个功能之外,工作还会扩大。
如安在赓续开体系中所有人的情况下进行安排?是否要禁止新来的流量并礼貌的等待每小我到通话停止?
谜底是否定的,那正式须要热加载的处所。
因为过程间客栈的隔离,版本的进级是不会打断运行中的过程。没有激活的过程直接被调换,新安排的过程与运行中的过程同时存在并接收新的流量,运行中的过程可以一向工作直到义务完成。
这可以使你安排具稀有百万通话体系进级, 并且是不打断现有通话的前提下。想象一下,用一堆新的汽包调换天空中另一堆起泡,这根本上就是热加载的工作方法。老的起泡四处飘散,直到它们决裂。
懂得了这一点,就可以看到一些可能排的上用处的场景:
- 一个用户连接到指定机械的 websocket 聊天体系
- 一个功课服务器, 进级体系的时刻不中断正在运行的功课
- 一个大年夜流量的 CDN,正在连接一个很慢的WEB 请求
尤其是 websocket, 在一个稀有百万晃荡连接的机械上安排,不消因中断而遭受刹时的爆发式重连测验测验,甚至损掉正在传输中的信息。趁便说一句,这就是为什么 Whatsapp 应用 Erlang。热加载被用来给正在飞翔的飞机电脑进行更新。
热更新的缺点是,如不雅须要回滚将会更复杂。你可能不须要用它,除非你有一个真正须要它的场景。有个选择老是好的。
集群化也是如斯,并不是一向须要它,但当你那么做的时刻它是必弗成少的。集群化、热更新与分布式体系齐头并进。
8.结论
这篇文┞仿很长,但欲望它把Elixir 和 Go 之间的差别做一个详实的描述。思虑这两门说话最有效的方法是吧Elixir 看做一个体系,而 Go 是一个专门的法度榜样。
Go 更专注且简单易用。一旦懂得 了Elixir思惟,它也很简单。如不雅你的目标是在应用它之前控制它,那么 OTP 的世界和 Erlang 的广阔会让人认为恐怖。
两者都是异常出色的说话,做任何编程的工作时,它们都是我的首选。
对于异常集中的代码,可移植的体系级对象,机能密集型义务和API,Go很难被击败。对于全客栈的Web应用法度榜样,分布式体系,及时体系或嵌入式应用法度榜样,我会选择Elixir。
【编辑推荐】
- Google宣布加强实际开辟包ARCore 1.0:小米/华为首发
- Google 宣布重启 Dart 编程说话,应对法度榜样开辟挑衅
- 查询拜访显示:越来越多的开辟者开端应用 Go 说话
- GO说话系列(一):初识GO说话
- 若何应用MongoDB实现高机能,高可用的双活应用架构?
推荐阅读
沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 细心的市平易近不难发明,地铁部分进出站闸机已经新增了二维码辨认区域。日前,记者探访发明,除了此前已经试水扫>>>详细阅读
本文标题:Elixir与Go多角度对比:背景+编程风格+并发处理
地址:http://www.17bianji.com/lsqh/40936.html
1/2 1