- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Erlang高级原理和应用-yufeng.info
Erlang的高级特性和应用 mryufeng@ 2009/8/19 Topic(90分钟) Erlang在国内应用情况 Erlang是个操作系统 *nix Erlang分布和集群 (*) Erlang数据库 Mnesia (*) 1. Erlang在国内的应用案例 校内的广告平台 Sohu的白社会 阿里巴巴的云计算平台 Startup公司的webgame 一年一度的Erlang中国社区活动 Erlang在国外的成功项目 Ejabberd Rabbitmq Couchdb Mochiweb Disco … 2.Erlang和操作系统比较 Unix操作系统 用c++做例子 函数 (void f() {}) 类 (class xxx{};) 模块(xxx.cpp) 可执行文件(编译器,机器指令) 应用程序包括数据文件 OS启动,系统进程(抢占式调度 ) IPC通讯 监控工具(Top) Erlang呢? Erlang系统类比 函数 (fun () - ok end) 模块(module xxx. xxx.erl) Beam文件(编译器,opcode) Application (beam+数据文件) VM bootstrap, erlang进程 (抢占调度 ) 消息,Port, IPC通讯 etop Erlang的系统组成 编译器 erlang 库 erlang VM + 基本库 c 调试器 erlang Profile erlang 工具集 erlang 高性能高可靠(20年成就卓越) 用erlang可以很少的代码做出一个hello world web服务器 单个cpu达到16000个并发请求。 同样功能的nginx服务器(顶级高手写的, F5作者) 只能做到12000个并发请求。 Erlang的代码不存在c那样潜在的bug, cover工具能够100%覆盖过了,基本上0.9999%可靠 扩展容易 无需修改代码 多个cpu 效能就等于 N × 系数(0.8) Jit支持,更快更强 3. Erlang 分布和集群 C底层支持, 效率保证 分布的原语是内置的 支持cnode, jnode 进程的位置无关性 名称服务 节点间自动tick,维护节点的up, down Global模块提供全局空间的访问 Group leader提供全局的IO服务 分布之otp支持 gen_server 屏蔽位置相关 rpc distribute application Failover Takeover 进程的迁移 分布数据库mnesia trace seq_token 节点间通讯 紧凑的协议 可替换的通讯通道 节点名字 epmd 相当于DNS 消息透明 安全措施 cookie 节点交互和容错 支持节点间的link, monitor, exit 节点up down自动觉醒 节点加入自动化 同步信息 节点支持分区 避免flood 为集群内置了inet常用的模块 http/ftp/sftp ssh ssl tcp/udp/sctp asn.1 corba snmp 看图不说话 (消息的跟踪) 3. Mnesia分布数据库 传统数据库 不保证实时 IPC通讯 数据列集 Master/slave 模式 数据水平切割麻烦 Mnesia的特点 适合读多写少的情况 软实时 大部分都都在本地内存(本地进程的cpu时间) 同一进程 无需列集 无需IPC通讯 支持水平分割 支持数据冗余 节点间对等 查询和写入可以在任何节点发起 数据自动迁移 数据操作 数据备份/恢复 和传统数据库的互动(unixodbc) 节点加入退出 数据分片 无限量的加大数据量 程序员透明 在实际中的应用 Ejabberd和rabbitmq用作数据后端 Distributed application的状态保持 缺点:网络失败分区后可能数据不统一 这个问题很棘手 多谢大家 QA时间 * * * *
文档评论(0)