文档介绍:高性能集群服务器Erlang解决方案
核心系统数据库组 褚霸
2011-07-29
1
整理课件
十万英尺高度看Erlang
2
整理课件
我是谁?
3
整理课件
高性能集群服务器Erlang解决方案
核心系统数据库组 褚霸
2011-07-29
1
整理课件
十万英尺高度看Erlang
2
整理课件
我是谁?
3
整理课件
Erlang是什么?
江湖传说
支持高并发
伤眼睛
怪异难学
官方定义
通用的语言和运行环境
内置并发,集群,容错机制
电信行业大规模部署应用
经过时间验证的成熟商业系统
4
整理课件
Erlang的历史
很老的FP语言,始于80年代末
爱立信投资10亿美金主导开发
EPL版权方式开源
需要记住的几个年份
1987  The first experiments with Erlang. 
1993  Distribution is added to Erlang.
2006  SMP support is added to Erlang.
5
整理课件
Erlang社区
6
整理课件
印象Erlang
“Erlang was built from the ground up for concurrency.  Not just in a single machine, but in clusters of machines.  Lots of machines.  Lost of machines running many processes.  Sounds like a cloud, right?”
-Colin Clark
7
整理课件
Erlang适合做什么
互联网应用服务器
消息系统
海量存储
需要软实时的数据库应用 
网关代理服务器
异构系统粘合
…
8
整理课件
Erlang成熟项目
9
整理课件
显微镜看Erlang
10
整理课件
语言和虚拟机天生可伸缩
函数式语言,方便排错
轻量级进程
异步消息机制
软实时
代码热升级
最酷的语言特性:
整理课件
集群特点及规模
集群全连通或者分区连通
访问授权: nothing or all策略
节点规模可强力伸缩
节点热插拔
规模可达上千台
典型系统的集群进程组织图
12
整理课件
Erlang语言运行和开发效率
13
整理课件
Erlang对SMP的支持
从2006年发布的R11B开始.
SMP开发人员的信条:
"SMP should be transparent to programers in much the way as erlang distribution."
 
-Ulf Wiger, Ericsson AB
14
整理课件
Erlang进程调度及策略
15
整理课件
Erlang调度器的伸缩性
16
整理课件
稳定性
In 1998, the Ericsson AXD301 switch was announced, containing over a million lines of Erlang, and reported to achieve a reliability of nine "9"s.
 
-Joe Armstrong
17
整理课件
异构性
不同的平台
Windows(smp支持的有待改进)
Linux(*NIX)
不同的体系结构
无需关心endianess问题
工业级协议的支持(, snmp等)
18
整理课件
历史遗留系统粘合
API: nif
C系统: ei
Java: jinterface
Cobra: cos*
TCP/HTTP
19
整理课件
Erlang技术发展路线图
虚拟机的运行期持续改进计划涵盖了对众核NUMA体系结构的支持,保证了它在未来新的硬件体系结构下能持续获得更好的性能。
20
整理课件
软件生命周期看Erlang
21
整理课件
设计
基于Actor模型
异步消息传递
无类型系统,
模块化,内置大部分应用模块
行为提炼: gen_server, gen_fsm,gen_event
90%的模块都是gen_server
22
整理课件
开发
工具
编辑器 Emacs或者其他文本编辑器
编译器:内置
Make工具: rebar
效率
开发人员素质要求中等
开发效率是C/C++的7倍(摩托罗拉,4399游戏)
23
整理课件
排错
静态分析器: