400 likes | 539 Views
Erlang零成本实现云计算. 余锋 (褚霸) 淘宝网技术专家 http://yufeng.info 中国软件技术大会 北京 2010. 议题. 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 讨论. Erlang是什么?. 通用的语言和运行环境 内置并发,集群,容错机制 电信和互联网行业大规模部署应用 经过时间验证的成熟商业系统. Erlang的历史. 很老的FP语言,始于80年代末 爱立信投资10亿美金主导开发 EPL版权方式开源 需要记住的几个年份
E N D
Erlang零成本实现云计算 余锋 (褚霸) 淘宝网技术专家 http://yufeng.info 中国软件技术大会 北京 2010
议题 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 讨论
Erlang是什么? • 通用的语言和运行环境 • 内置并发,集群,容错机制 • 电信和互联网行业大规模部署应用 • 经过时间验证的成熟商业系统
Erlang的历史 • 很老的FP语言,始于80年代末 • 爱立信投资10亿美金主导开发 • EPL版权方式开源 • 需要记住的几个年份 • 1987 The first experiments with Erlang. • 1993 Distribution is added to Erlang. • 2006 SMP support is added to Erlang.
云计算定义 云计算就是应用公共网络设施对逻辑的组建,像水和电一样融入大家的生活,为用户提供海量一站式的服务. -腾讯首席执行官马化腾 Cloud = "CPU + Storage + Queues + Management" -The Amazon Web Services says essentially
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
语言和虚拟机天生可伸缩 最COOL的语言特性: • 函数式语言,方便排错 • 轻量级进程 • 异步消息机制 • 软实时 • 代码热升级
内置集群和分布的基础设施和库 • 进程分布和名称同步管理 • 进程和节点容错管理 • rpc • gen_server • mnesia数据库
稳定性 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
Erlang零成本云计算适用的领域 • 互联网应用服务器 • 消息推送系统 • 网关代理服务器 • 软实时的服务 • 集群管理
小结 Erlang天生适合特定领域的云计算
议题 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 讨论
Erlang语言运行和开发效率 纯Erlang的运行效率大概是C的1/5, 编码效率是C的7倍,在脚本语言中属于中等水平.但是云计算不仅仅是纯计算,任务调度和集群管理是Erlang的强项,从而拉升系统的整体表现. 第三方独立评测网站 The Computer Language Benchmarks Game 摩托罗拉C/Erlang开发效率比较
Erlang对SMP的支持 从2006年发布的R11B开始. SMP开发人员的信条: "SMP should be transparent to programers in much the way as erlang distribution." -Ulf Wiger, Ericsson AB
Erlang进程调度及策略 Full load or not 多个运行队列,动态迁移进程 调度器看起来很像操作系统,实际上Erlang的第一个进程名字叫做otp_ring
Erlang调度器的伸缩性 小消息,大计算原则
架构设计方面的考虑 • 不共享 • 没有显式的同步 • 并发导向的编程 • 进程是低廉的,和现实世界对象1:1模型 • 所有无依赖的任务,都抽象为进程并发执行 • 终止的进程,一切都是垃圾,资源集中回收 • 简洁为王
Erlang技术发展路线图 虚拟机的运行期持续改进计划涵盖了对众核和NUMA体系结构的支持,保证了它在未来新的硬件体系结构下能持续获得更好的性能。
小结 Erlang并行计算效率高
议题 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 小结
从Vmware收购谈起... Vmware 计算虚拟化 Redis 存储 RabbitMQ 消息交换系统 我们可以清楚的看到云计算的三个基础设施!
存储系统(noSQL) CouchDB Riak Membase
消息交换系统 RabbitMQ Ejabberd
WEB服务器 Mochiweb Erlyweb
Map/Reduce系统 Disco
小结 Erlang基础设施齐全, 开发成本低
议题 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 讨论
集群特点及规模 • 集群全连通或者分区连通 • 访问授权: nothing or all策略 • 节点规模可强力伸缩 • 节点热插拔 • 规模可达上千台 典型系统的集群进程组织图
异构性 • 不同的平台 • Windows(smp支持的有待改进) • *nix • 不同的体系结构 • 无需关心endianess问题 • 工业级协议的支持(asn.1, snmp等)
强大的交互性, 与其他遗留系统整合 • NIF • C节点(ei) • Java (jinterface) • Cobra • TCP/HTTP • 内置RPC
部署 • Standalone发布,无需单独安装Erlang运行期 • 不停机维护 • 在线升级,系统同时运行新旧代码 • 发现问题在线降级 • 工具化, 一切自动化
代码安全 • 代码可远程从网络加载, Diskless减少维护的成本 • 代码可加密, 强加密防止反编译
远程维护 • 强大的内置shell • ssh/sftp • 可集中管理的日志系统
监控功能 • OS mon • SNMP • HTTP
小结 Erlang集群管理成本低
议题 1. Erlang天生适合云计算 2 .Erlang并行计算的效率 3. Erlang云计算基础构件 4. Erlang集群管理和维护 5. 讨论
典型成功案例 国内: • 校内网 • 腾讯 • 华为 • 游戏公司 (如4399) • ... 国外: • Facebook • Github • ...
应用障碍 • FP语言, 开发人员少, 招聘成本高 • 独特的并发和错误处理哲学 • 开发社区偏小,知识积累不够 • 应用库偏少
谢谢大家! Any questions?