Erlang到底好在哪里 -- 聊聊我使用Erlang的经历与感受

        08年开始接触Erlang,组里正好来了一位Erlang专家--余峰同学(现在淘宝担任核心系统资深技术专家,花名褚霸),在霸爷的大力传教下,我立即就被Erlang的强大与优美迷住了。当时我正在为实现一个分布式语音服务集群头痛,开发语言是C++,在需要跨界研究语音处理、语音传输的情况下,实在没有精力去搞高性能高可靠的分布式网络服务。
        在霸爷的推荐下,我花了2周业余时间熟悉Erlang语言,就开始尝试用她实现语音服务的通信层,三周时间,一个比原来花了2个月时间的C++版本性能更好、更可靠、真正分布式、可扩展,而且代码量只有一半的服务端就完成了,经过一个月测试,再一个月 完善 就上线提供服务了,而那个粗糙的C++版本服务要实现相同的功能,没个半年是不行的,而且还不一定稳定可靠。
        同样的场景,在为我厂开发分布式服务框架时(后面简称DSF),再次重现。DSF要为应用服务的高性能与高可靠提供可配置的路由策略与失败处理策略,客户端驱动的开发是重点中的重点,即使在我们将Thrift作为框架的RPC解决方案的前提下,仍然需要投入极大的精力与时间,更何况,还要求我们的驱动设计必须用Java和C#都能较容易的实现。
        这时候,作为分布式服务系统中必不可少的应用注册服务器,同时要进行开发,对于孤军奋战的我就显得力不从心了。在我们的设计中,应用注册服务器必须提供实时的服务状态通知与分发能力,尽量让不健康的服务的切除更加及时,而且,应用注册服务器作为所有应用服务的基础服务,其可靠性的重要也是毋庸置疑的。在这种情景下,Erlang再次成为我的救星与坚实的靠山,让我敢于同时在DSF框架与与应用注册服务的开发中双线开战。
        应该说在整个的开发过程中,应用注册服务器并没有花费我太多时间,三周,一个真正的分布式无中心节点的高可靠服务雏形就此成型,其后只是零星的bug修改与功能补充了,这种力量来自哪里?还是Erlang!
        经常有人问我,Erlang到底好在哪里?因为能力有限,对Erlang的了解仅限皮毛,专业的分析可以到霸爷的“ Erlang非业余研究”找相关普及贴看看,我这里仅根据这几年实践说说自己的感受。
        从技术上说,Erlang是一个平台,她提供了一套完整的高性能、高可靠网络服务开发所需要的基础设施,并提供了原语给开发人员使用,她降低了开发类似系统的难度与门槛。有一个说法,Erlang让一个中高级程序员,用一半的时间,一半的代码量,就能提供顶尖C程序员开发的网络服务80%性能的类似系统,并且可靠性不输于甚至超过前者。我的实践让我确信,这是真的。
        另一方面,Erlang也给了开发人员强大的自信,就如同前面开发DSF时的场景所述。有开发维护过线上系统的人应该可以深刻的感受到,开发一个高可靠的网络服务有多困难,维护一个线上系统有多劳心,当一个服务上线时,我们的运维与程序员即使睡觉都恨不得睁着一只眼睛。
        根据我的经验,采用Erlang开发的系统,其出现的bug量与用常规语言开发的绝对不是一个数量级;Erlang的监控树机制,更是让我们的服务,天生就具备了高可靠的基因,只要稍花精力,仔细规划我们的监控树与重启策略,就可以让本来就少了很多的bug及一些无法预料的外部故障,在即使出现时也有很大的几率迅速恢复,给你修复bug排除故障一个缓冲的时间,更何况,Erlang可是具备热更新能力的,那真的可以让你延寿啊!延寿!
        如果你的老板问你,为什么要用Erlang,Erlang好在哪里,你可以这样总结:省钱呐!你想想,一个资深的、顶尖的程序员与中高级普通程序员之间的成本差,普通的系统就只要普通的程序员就好啦,那不仅仅是省钱,是省很多很多的钱,这个回答,一定可以让你的老板眼睛像手电筒一样闪闪发光!
 

你可能感兴趣的:(erlang,随笔)