1 / 19

Erlang 的高 级特性和应用

Erlang 的高 级特性和应用. mryufeng@gmail.com http://blog.yufeng.info 2009/8/19. Topic(90 分 钟 ). Erlang 在国内 应用情况 Erlang 是个操作系 统 *nix Erlang 分布和集群 (*) Erlang 数据 库 Mnesia (*). 1. Erlang 在国内的 应用案例. 校内的广告平台 Sohu 的白社会 阿里巴巴的云 计算平台 Startup 公司的 webgame 一年一度的 Erlang 中国社区活 动. Erlang 在国外的成功 项目.

manning
Download Presentation

Erlang 的高 级特性和应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Erlang的高级特性和应用 mryufeng@gmail.com http://blog.yufeng.info 2009/8/19

  2. Topic(90分钟) Erlang在国内应用情况 Erlang是个操作系统 *nix Erlang分布和集群 (*) Erlang数据库 Mnesia (*)

  3. 1. Erlang在国内的应用案例 校内的广告平台 Sohu的白社会 阿里巴巴的云计算平台 Startup公司的webgame 一年一度的Erlang中国社区活动

  4. Erlang在国外的成功项目 Ejabberd Rabbitmq Couchdb Mochiweb Disco …

  5. 2.Erlang和操作系统比较 Unix操作系统用c++做例子 函数 (void f() {}) 类 (class xxx{};) 模块(xxx.cpp) 可执行文件(编译器,机器指令) 应用程序包括数据文件 OS启动,系统进程(抢占式调度) IPC通讯 监控工具(Top)

  6. Erlang呢? Erlang系统类比 函数 (fun () -> ok end) 模块(module xxx. xxx.erl) Beam文件(编译器,opcode) Application (beam+数据文件) VM bootstrap, erlang进程 (抢占调度 ) 消息,Port, IPC通讯 etop

  7. Erlang的系统组成 编译器 erlang 库 erlang VM + 基本库 c 调试器 erlang Profile erlang 工具集 erlang

  8. 高性能高可靠(20年成就卓越) 用erlang可以很少的代码做出一个hello world web服务器单个cpu达到16000个并发请求。 同样功能的nginx服务器(顶级高手写的, F5作者)只能做到12000个并发请求。 Erlang的代码不存在c那样潜在的bug, cover工具能够100%覆盖过了,基本上0.9999%可靠 扩展容易无需修改代码多个cpu 效能就等于 N × 系数(0.8) Jit支持,更快更强

  9. 3. Erlang 分布和集群 C底层支持, 效率保证 分布的原语是内置的支持cnode, jnode 进程的位置无关性 名称服务 节点间自动tick,维护节点的up, down Global模块提供全局空间的访问 Group leader提供全局的IO服务

  10. 分布之otp支持 gen_server 屏蔽位置相关 rpc distribute application Failover Takeover 进程的迁移 分布数据库mnesia trace seq_token

  11. 节点间通讯 紧凑的协议 可替换的通讯通道 节点名字 epmd 相当于DNS 消息透明 安全措施 cookie

  12. 节点交互和容错 支持节点间的link, monitor, exit 节点up down自动觉醒 节点加入自动化同步信息 节点支持分区避免flood

  13. 为集群内置了inet常用的模块 http/ftp/sftp ssh ssl tcp/udp/sctp asn.1 corba snmp

  14. 看图不说话 (消息的跟踪)

  15. 3. Mnesia分布数据库 传统数据库 不保证实时 IPC通讯 数据列集 Master/slave 模式 数据水平切割麻烦

  16. Mnesia的特点 适合读多写少的情况 软实时大部分都都在本地内存(本地进程的cpu时间) 同一进程无需列集无需IPC通讯 支持水平分割 支持数据冗余 节点间对等查询和写入可以在任何节点发起 数据自动迁移

  17. 数据操作 数据备份/恢复 和传统数据库的互动(unixodbc) 节点加入退出 数据分片无限量的加大数据量程序员透明

  18. 在实际中的应用 Ejabberd和rabbitmq用作数据后端 Distributed application的状态保持 缺点:网络失败分区后可能数据不统一 这个问题很棘手

  19. 多谢大家 Q&A时间

More Related