Erlang low cost_clound_computing

40
Erlang 零零零零零零零零 零零 零零零 () 零零零零零零零 http://yufeng.info 零零零零零零零零 零零 2010

description

Erlang低成本云计算

Transcript of Erlang low cost_clound_computing

Page 1: Erlang low cost_clound_computing

Erlang 零成本实现云计算  

余锋 (褚霸) 淘宝网技术专家

http://yufeng.info  中国软件技术大会 北京 2010

  

Page 2: Erlang low cost_clound_computing

议题

1. Erlang 天生适合云计算 2 .Erlang 并行计算的效率 3. Erlang 云计算基础构件 4. Erlang 集群管理和维护 5. 讨论

Page 3: Erlang low cost_clound_computing

Erlang 是什么 ?

• 通用的语言和运行环境• 内置并发 , 集群 , 容错机制• 电信和互联网行业大规模部署应用 • 经过时间验证的成熟商业系统

Page 4: Erlang low cost_clound_computing

Erlang 的历史

• 很老的 FP 语言 , 始于 80 年代末• 爱立信投资 10 亿美金主导开发• EPL 版权方式开源• 需要记住的几个年份

o 1987  The first experiments with Erlang.  o 1993  Distribution is added to Erlang. o 2006  SMP support is added to Erlang.

Page 5: Erlang low cost_clound_computing

云计算定义

云计算就是应用公共网络设施对逻辑的组建,像水和电一样融入大家的生活,为用户提供海量一站式的服务 .

- 腾讯首席执行官马化腾   Cloud = "CPU + Storage + Queues + Management" 

        -The Amazon Web Services says essentially

Page 6: Erlang low cost_clound_computing

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

Page 7: Erlang low cost_clound_computing

语言和虚拟机天生可伸缩

 • 函数式语言,方便排错• 轻量级进程• 异步消息机制• 软实时• 代码热升级

最 COOL 的语言特性 :

Page 8: Erlang low cost_clound_computing

内置集群和分布的基础设施和库

• 进程分布和名称同步管理• 进程和节点容错管理 • rpc• gen_server• mnesia 数据库

  

Page 9: Erlang low cost_clound_computing

稳定性

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

Page 10: Erlang low cost_clound_computing

Erlang 零成本云计算适用的领域

 • 互联网应用服务器• 消息推送系统 • 网关代理服务器• 软实时的服务• 集群管理

 

Page 11: Erlang low cost_clound_computing

Erlang 社区快速壮大 , 见证云计算的增长

Page 12: Erlang low cost_clound_computing

小结

 Erlang 天生适合特定领域

的云计算

Page 13: Erlang low cost_clound_computing

议题

1. Erlang 天生适合云计算 2 .Erlang 并行计算的效率 3. Erlang 云计算基础构件 4. Erlang 集群管理和维护 5. 讨论

Page 14: Erlang low cost_clound_computing

Erlang 语言运行和开发效率

纯 Erlang 的运行效率大概是 C 的 1/5 , 编码效率是 C 的 7 倍,在脚本语言中属于中等水平 . 但是云计算不仅仅是纯计算 , 任务调度和集群管理是 Erlang 的强项 , 从而拉升系统的整体表现 . 第三方独立评测网站 The Computer Language Benchmarks Game   

摩托罗拉 C/Erlang 开发效率比较

Page 15: Erlang low cost_clound_computing

Erlang 对 SMP 的支持

从 2006 年发布的 R11B 开始 .SMP 开发人员的信条 :"SMP should be transparent to programers in much the way as erlang distribution." 

-Ulf Wiger, Ericsson AB 

Page 16: Erlang low cost_clound_computing

Erlang 进程调度及策略

调度器看起来很像操作系统,实际上 Erlang 的第一个进程名字叫做 otp_ring

Full load or not

多个运行队列,动态迁移进程

Page 17: Erlang low cost_clound_computing

Erlang 调度器的伸缩性

小消息,大计算原则

Page 18: Erlang low cost_clound_computing

架构设计方面的考虑

• 不共享• 没有显式的同步• 并发导向的编程• 进程是低廉的 , 和现实世界对象 1:1 模型• 所有无依赖的任务 ,都抽象为进程并发执行 • 终止的进程 , 一切都是垃圾 , 资源集中回收• 简洁为王

Page 19: Erlang low cost_clound_computing

Erlang 技术发展路线图

虚拟机的运行期持续改进计划涵盖了对众核和 NUMA 体系结构的支持,保证了它在未来新的硬件体系结构下能持续获得更好的性能。

Page 20: Erlang low cost_clound_computing

小结

 Erlang 并行计算效率高

Page 21: Erlang low cost_clound_computing

议题

1. Erlang 天生适合云计算 2 .Erlang 并行计算的效率 3. Erlang 云计算基础构件 4. Erlang 集群管理和维护 5. 小结

Page 22: Erlang low cost_clound_computing

从 Vmware收购谈起 ...

Vmware    计算虚拟化Redis        存储RabbitMQ 消息交换系统 我们可以清楚的看到云计算的三个基础设施 !

Page 23: Erlang low cost_clound_computing

存储系统 (noSQL)

CouchDB

Riak

Membase

Page 24: Erlang low cost_clound_computing

消息交换系统

RabbitMQ

Ejabberd

Page 25: Erlang low cost_clound_computing

WEB 服务器

Mochiweb

Erlyweb

Page 26: Erlang low cost_clound_computing

Map/Reduce 系统

Disco

Page 27: Erlang low cost_clound_computing

小结

 Erlang基础设施齐全 ,

开发成本低

Page 28: Erlang low cost_clound_computing

议题

1. Erlang 天生适合云计算 2 .Erlang 并行计算的效率 3. Erlang 云计算基础构件 4. Erlang 集群管理和维护 5. 讨论

Page 29: Erlang low cost_clound_computing

集群特点及规模

• 集群全连通或者分区连通• 访问授权 : nothing or all 策略• 节点规模可强力伸缩• 节点热插拔• 规模可达上千台

典型系统的集群进程组织图

Page 30: Erlang low cost_clound_computing

异构性

• 不同的平台o Windows ( smp 支持的有待改进)o *nix 

• 不同的体系结构o 无需关心 endianess问题 o 工业级协议的支持( asn.1, snmp 等)

Page 31: Erlang low cost_clound_computing

强大的交互性 , 与其他遗留系统整合

• NIF• C 节点( ei)• Java (jinterface)• Cobra• TCP/HTTP• 内置 RPC

Page 32: Erlang low cost_clound_computing

部署

• Standalone 发布,无需单独安装 Erlang 运行期• 不停机维护• 在线升级,系统同时运行新旧代码• 发现问题在线降级• 工具化 , 一切自动化

Page 33: Erlang low cost_clound_computing

代码安全

• 代码可远程从网络加载 , Diskless减少维护的成本• 代码可加密 , 强加密防止反编译

Page 34: Erlang low cost_clound_computing

远程维护

• 强大的内置 shell• ssh/sftp• 可集中管理的日志系统

Page 35: Erlang low cost_clound_computing

监控功能

• OS mon• SNMP• HTTP

Page 36: Erlang low cost_clound_computing

小结

 Erlang集群管理成本低

Page 37: Erlang low cost_clound_computing

议题

1. Erlang 天生适合云计算 2 .Erlang 并行计算的效率 3. Erlang 云计算基础构件 4. Erlang 集群管理和维护 5. 讨论

Page 38: Erlang low cost_clound_computing

典型成功案例

国内:• 校内网• 腾讯• 华为• 游戏公司 (如 4399)• ...

 国外:• Facebook• Github • ...

  

Page 39: Erlang low cost_clound_computing

应用障碍

• FP 语言 , 开发人员少 , 招聘成本高 • 独特的并发和错误处理哲学• 开发社区偏小,知识积累不够• 应用库偏少

Page 40: Erlang low cost_clound_computing

谢谢大家! 

Any questions?