WhatsApp的Erlang世界】的更多相关文章

rick 的两个ppt整理 下载:2012 2013  ,使用半年erlang后,重新看这两个ppt才发现更多值的学习的地方,从ppt中整理如下: - Prefer os:timestamp to erlang:now 应该禁止使用erlang:now(),稍微用得多,整个node的%si 飙满,且整体性能数量级下降. - Implement cross-node gen_server calls without  using monitors (reduces dist traffic and…
Whatsapp已经使用Erlang在生产环境跑到96GB内存单机 3M长连接,参加:WhatsApp的Erlang世界.毕竟业务级别能达到Whatsapp那样极少,现在只有千万级,单机太多挂一台影响太大,再者就是没有多线接入,每个机房都得扔那么几台机器吧,所以1M就能满足要求. Erlang 作为长连接网关有着天生的优势: - 擅长与IO密集型业务,也要求将网关设计尽量简单,认证完后,简单解析报头,就直接将请求转发给后端服务处理 - 网络层有beam c 实现得非常高效 ,erlang 代码只…
这儿例举出若干个用于检视运行时系统的图形化工具,这些工具可以很好地帮助我们增进对系统的理解.借助这些工具,我们可以很好地以图形化方式观察进程.应用和监督层级. (1) Appmon.Appmon 是用来监视 OTP 应用的工具.它可以按照图形化方式展示系统中当前正在运行的应用及其监督结构:可以查看进程的当前状态:还可以针对这些进程执行一些基本的操作.启动 Appmon 的命令如下 1>appmon:start (2)WebTool 版 Appmon.多数情况下,我们的服务器都没有安装图像界面,这…
    Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间,又会有很多BUG.但是用Erlang就方便多了,底层的一切你都不需要考虑,你只需要考虑,服务器的架构以及业务逻辑.从此让你彻底从底层的泥潭中解脱.我从去年年底开始了解学习Erlang,到现在我已经彻底爱上了Erlang.好了,废话不多说,开始详细介绍下我设计的这个服务器架构吧.     首先看下整…
http://erlang.group.iteye.com/group/wiki/1407-to-enter-the-world-of-erlang 进入Erlang的世界 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”.这些正确与否,都已成过去! 现在,让我们迎接Erlang盛宴! 经历 2007年11月在koders.com搜索代码时,发现*.erl格式的源文件,感叹开发语言的花样百出,此时,我觉得erlang是一个丑陋的小家伙,看名字就没有对…
最近玩同一个世界,才几关就把3次提示用完了,十分气愤, 于是写了程序来解~~~ o(^▽^)o 以2-1为例子,题目如下 以0代表白色,1代表黑色,抽象的就是这样的 ----------------------| 0 | 1 | 0 | 1 | 0 | ----------------------| 0 | 1 | 0 | 1 | 0 | ----------------------| 1 | 0 | 1 | 0 | 1 | ----------------------| 0 | 1 | 0 |…
很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/     1 月   A few thoughts about Open Source Software Antirez http://dou.bz/1pyUXj Erlang's biggest missing feature: globals http://dou.bz/22GYw7 DTrace, F…
原文链接:http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html 原文写于2014年2月26日,以下是译文: 在雅虎曾经用C++写过高性能信息通道的Rick Reed并不是高扩展性架构世界中的新手.跟他一起的创业者们都是有丰富可扩展系统经验的前雅虎人.所以WhatsApp在可扩展性上的实力非常强.而且由于他们的目标就是让世界上每一台智能机( 几年…
前言 最近在总结一些Erlang编程语言的基础知识,拟系统的介绍Erlang编程语言,从基础到进阶,然后再做Erlang编程语言有意思的库的分析. 其实,还是希望越来越多的人关注Erlang,使用Erlang,壮大Erlang编程语言的社区. 说实话,我也没这么高尚,就是看到很多人对Erlang编程语言的误解,Erlang编程语言社区的凋零,招个Erlang开发难之又难,才萌生此念. 这次主要介绍Erlang编程语言.包括Erlang的简要历史以及应用场景,Erlang并发编程,Erlang编程…
Erlang(英语发音:/ˈɜrlæŋ/)是一种通用的并行程序设计语言,它由乔·阿姆斯特朗(Joe Armstrong)在瑞典电信设备制造商爱立信所辖的计算机科学研究室开发,目的是创造一种可以应付大规模开发活动的程序设计语言和运行环境.Erlang于1987年发布正式版本,最早是爱立信拥有的私有软件,经过十年的发展,于1998年发表开放源代码版本. Erlang是运作于虚拟机的解释型语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)[2]开发的原生代码编译器,自R11B-4版本…
Erlang源代码编译为beam文件,代码要经过一系列的过程(见下面的简图),Core Erlang之前已经简单介绍过了Core Erlang,代码转换为Core Erlang,就容易拨开一些语法糖的真面目了.下一阶段就是将Core Erlang转换为opcode,使用c(m,'S')生成的是.S文件可以看到反编译的代码.编译器最终输出的是Virtual Beam Code 但这还不是最终VM执行的代码,在erts\emulator\beam\beam_load.c执行的过程中会完成指令优化,优…
虽然忙,有些事还是要抽时间做; Erlang Resources 小站 2014年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/   1月   114 RR Elixir with José Valim by CHARLES MAX WOOD on JULY 17, 2013 http://rubyrogues.com/114-rr-elixir-with-jose-valim/   "The Erlang Runtime Sy…
现网服务,每次更新一个服务时,另外一个集群所有node 都跟着同时重启一遍,这么调皮,这是闹哪样啊.. 看系统日志:/var/log/messages Oct 30 15:19:41 localhost kernel: beam.smp[21880]: segfault at 7fa300006d4b ip 00007fa300006d4b sp 00007fa3d0d7c788 error 14 in locale-archive[7fa31616f000+5e91000 beam crash…
erlang 默认启动参数更多的是针对电信平台实时特性,简单调整参数能很大程度降低CPU消耗,提高处理能力. 1. 关闭spin_wait 设置参数:+sbwt none 我上一篇文章提到:erlang 调度器CPU利用率低排查,关闭spin_wait 可能增加了调度器需要唤醒延时. 关闭后CPU 基本能够简单30%以上,且几乎没有任何副作用,调度器唤醒微妙级,延时可忽略. 2. 调度器唤醒策略 默认设置:+swt medium 默认设置下,长时间运行后部分node运行进入一种非正常状态,如:不…
-问题起因 近期线上一组服务中,个别节点服务器CPU使用率很低,只有其他1/4.排除业务不均,曾怀疑是系统top统计错误,从Erlang调度器的利用率调查 找到通过erlang:statistics(scheduler_wall_time) 查看服务器CPU低的机器调度器实际的CPU利用率很高接近100%,而其他机器都不到30%. 分析不同业务服务,发现只有在node 中进程数采用调度器CPU利用低这个问题. - 高利用率 Cpu0 : 68.2%us, 11.4%sy, 0.0%ni, 3.7…
先推荐一篇:mnesia源码分析(yufeng)   - linear hash   ETS/DETS/mnesia 都使用了linear hash算法 http://en.wikipedia.org/wiki/Linear_hashing     redis dict 的实现类似于linear hash,渐进式rehash,保证操作是O(1).不过除了每次操作时执行一个bucket的rehash,而且每100ms内使用1ms 执行加快rehash进程. 虽然虽然rehash过程渐进式的,但在k…
Elixir官网:http://elixir-lang.org/ Elixir是一种函数式动态语言,用于构建可伸缩.易维护的应用程序. Elixir是基于Erlang VM的,其广为人知的特点是运行低延时.分布式.可容错的系统,并成功用于Web开发与嵌入式软件领域. 1. 平台特性 1.1 可伸缩 所有Elixir代码运行于相互隔离的轻量级线程中,相互间通过message通信: parent = self() # Spawns an Elixir process (not an operatin…
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-02 A outline 2014-11-03 A 1 2014-11-08 A 2 3 2014-11-17 A 4 Agenda 0 范围 Erlang的现实世界建模方式 Erlang进程创建 Erlang进程设计模式 Erlang进程错误处理 1 Erlang Concurrency Modeling Philosophy A…
Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-23 A Outline   A 1.1-1.22014-12-08 A 1.3 2014-12-13      A 2, 3 2014-12-14     A 4 Agenda 写在前面 Erlang研磨和技术细节,可以移步园中http://www.cnblogs.com/me-sa/.如果一开始我就可以看到他的笔…
当我开始学习编程的时候(1967年),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN. 在我最早学习编程的时候,我的编程周期基本上是这样的: 第一周 在纸上的表格里编写代码,然后送到计算机中心将其转换为打孔卡: 第二周 复查打孔卡,如果没问题就放到设备上执行: 第三周 得到结果 编程的一周,事实上是花费了我的三周时间:当编译器遇到第一个语法错误的时,它会终止运行——这会将你带回第一周.所以,如果在你的程序中有十个错误,它…
赵建文,很多人不知道他是谁:说到微信大家都耳熟能详吧?没错,他就是初始微信发明人,同时也是WeChat/Line/WhatsApp的发明者!正是他的专利<一种基于或囊括手机电话本的即时通讯方法和系统>(该专利申请时间是在2006年9月28日,编号为“CN 101155324 B”)才成就了微信的繁荣,但他也因此与成功.财富擦肩而过,甚是扼腕. 专利全文<一种基于或囊括手机电话本的即时通讯方法和系统>:“本发明公开了一种基于或囊括手机电话本的即时通讯方法和系统,享受即时通讯的诸多好处…
常用代码 date()返回P{年,月,日} erlang:now转本地时间 > calendar:now_to_local_time(erlang:now()). {{,,},{,,}} erlang:now转世界时间 > calendar:now_to_universal_time(erlang:now()). {{,,},{,,}} > 验证合法的日期 > calendar:valid_date({,,}). false > calendar:valid_date({,,…
12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority…
给自己一条退路,再次比较Erlang和Golang 2014-6-28 陈叶皓 chenyehao@gmail.com 雨天的周末,适合码字的时节... 一年前我开始学习go语言的时候,如获至宝,既有python的编码效率,又带来性能的15倍提升.尤其是在异步编程方面,可以使用channel同步线程,不必加锁可以充分利用cpu多核计算,真是没有弱点. 后来慢慢了解到,这种无锁异步编程的思想,源自一门叫做erlang的语言,Erlang更加了不起.除了异步编程之外,这门语言天生支持分布式,单机上开…
Erlang不能错过的盛宴 (快步进入Erlang的世界) 作者:成立涛 (litaocheng@gmail.com) 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”.这些正确与否,都已成过去! 现在,让我们迎接Erlang盛宴! 一.经历 2007年11月在koders.com搜索代码时,发现*.erl格式的源文件,感叹开发语言的花样百出,此时,我觉得erlang是一个丑陋的小家伙,看名字就没有对它提起多少兴趣. 2008年初的时候,公司的项目开…
<C++ 并发编程>- 第1章 你好,C++的并发世界 转载自并发编程网 – ifeve.com 本文是<C++ 并发编程>的第一章,感谢人民邮电出版社授权并发编程网发表此文,版权所有,请勿转载.该书将于近期上市. 本章主要内容 何谓并发和多线程 为什么要在应用程序中使用并发和多线程 C++并发支持的发展历程 一个简单的C++多线程程序是什么样的 这是C++用户的振奋时刻.距1998年初始的C++标准发布13年后,C++标准委员会给予程序语言和它的支持库一次重大的变革.新的C++标…
Erlang中的process——进程是轻量级的,并且进程间无共享.查了很多资料,似乎没人说清楚轻量级进程算是什么概念,继续查找中...闲话不提,进入并发编程的世界.本文算是学习笔记,也可以说是<Concurrent Programming in ERLANG>第五张的简略翻译. 1.进程的创建    进程是一种自包含的.分隔的计算单元,并与其他进程并发运行在系统中,在进程间并没有一个继承体系,当然,应用开发者可以设计这样一个继承体系.    进程的创建使用如下语法: Pid = spawn(…
Erlang不能错过的盛宴 (快步进入Erlang的世界) 作者:成立涛 (litaocheng@gmail.com) 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”.这些正确与否,都已成过去! 现在,让我们迎接Erlang盛宴! 一.经历 2007年11月在koders.com搜索代码时,发现*.erl格式的源文件,感叹开发语言的花样百出,此时,我觉得erlang是一个丑陋的小家伙,看名字就没有对它提起多少兴趣. 2008年初的时候,公司的项目开…
Erlang (/ˈɜrlæŋ/ er-lang) is a general-purpose concurrent, garbage-collected programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. It was desi…
Erlang虚拟机的启动 erl实际上是一个shell脚本,设置几个环境变量之后,调用执行erlexec.erlexec的入口点在 otp_src_R15B01/erts/etc/common/erlexec.c 文件.erlexec的main函数首先分析erl传入的参数和环境变量,选择正确版本的beam可执行文件,然后将传入的参数整理好,加入一些默认参数,最后通过系统调用execv运行beam虚拟机.例如在smp环境中,运行的就是 beam.smp 版本的虚拟机.因此,erl和erlexec都…