Download presentation
Presentation is loading. Please wait.
Published by翼舜 朱 Modified 7年之前
1
核心系统数据库组 褚霸 http://yufeng.info 2011-07-29
高性能集群服务器 Erlang解决方案 核心系统数据库组 褚霸
2
十万英尺高度看Erlang
3
我是谁?
4
Erlang是什么? 江湖传说 官方定义 支持高并发 伤眼睛 怪异难学 通用的语言和运行环境 内置并发,集群,容错机制
电信行业大规模部署应用 经过时间验证的成熟商业系统
5
Erlang的历史 很老的FP语言,始于80年代末 爱立信投资10亿美金主导开发 EPL版权方式开源 需要记住的几个年份
1987 The first experiments with Erlang. 1993 Distribution is added to Erlang. 2006 SMP support is added to Erlang.
6
Erlang社区
7
印象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
8
Erlang适合做什么 互联网应用服务器 消息系统 海量存储 需要软实时的数据库应用 网关代理服务器 异构系统粘合 …
9
Erlang成熟项目
10
显微镜看Erlang
11
语言和虚拟机天生可伸缩 最酷的语言特性: 函数式语言,方便排错 轻量级进程 异步消息机制 软实时 代码热升级
12
集群特点及规模 集群全连通或者分区连通 访问授权: nothing or all策略 节点规模可强力伸缩 节点热插拔 规模可达上千台
典型系统的集群进程组织图
13
Erlang语言运行和开发效率
14
Erlang对SMP的支持 从2006年发布的R11B开始. SMP开发人员的信条:
"SMP should be transparent to programers in much the way as erlang distribution." -Ulf Wiger, Ericsson AB
15
Erlang进程调度及策略
16
Erlang调度器的伸缩性
17
稳定性 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
18
异构性 不同的平台 不同的体系结构 Windows(smp支持的有待改进) Linux(*NIX) 无需关心endianess问题
工业级协议的支持(asn.1, snmp等)
19
历史遗留系统粘合 API: nif C系统: ei Java: jinterface Cobra: cos* TCP/HTTP
20
Erlang技术发展路线图 虚拟机的运行期持续改进计划涵盖了对众核NUMA体系结构的支持,保证了它在未来新的硬件体系结构下能持续获得更好的性能。
21
软件生命周期看Erlang
22
设计 基于Actor模型 异步消息传递 无类型系统, 模块化,内置大部分应用模块
行为提炼: gen_server, gen_fsm,gen_event 90%的模块都是gen_server
23
开发 工具 效率 编辑器 Emacs或者其他文本编辑器 编译器:内置 Make工具: rebar 开发人员素质要求中等
开发效率是C/C++的7倍(摩托罗拉,4399游戏)
24
排错 静态分析器:dialyzer 动态分析器: debugger 完善的日志系统和出错原因 完善的coredump分析
25
测试 单元测试 eunit 系统测试 common_test test_server
26
部署 独立的安装包自带运行环境 无需停机维护 在线升级,系统同时跑新旧代码 发现问题在线降级 工具化,一切自动化
27
远程维护 强大的内置shell 内置SSH和SFTP服务器, 分布式日志系统
28
监控功能 操作系统,CPU,内存,磁盘监控 无比详细的运行期状态 支持工业标准SNMP/HTTP
29
从淘宝看Erlang
30
淘宝的业务特点 用户数目庞大 海量数据 应用繁多 …
31
淘宝现存软件的特点 开源基础改进 自家酿造,门派繁多 开发周期长,软件生命周期长 稳定性要求高 …
32
Erlang来救助 IO密集型:小菜一碟 计算密集型: 无助 网络密集型:拿手好戏 集群密集型:拿手好戏 稳定密集型:拿手好戏
粘合型:小菜一碟 数据库:小菜一碟 …
33
推广障碍 函数式语言, 开发人员少, 招聘成本高 独特的并发和错误处理哲学 开发社区偏小,知识积累不够 应用库偏少 软件经理不了解 …
34
提问时间 谢谢大家!
Similar presentations