240 likes | 448 Views
Erlang全接触. 褚霸 chuba@taobao.com 2010/07/20 . Erlang是什么?. 通用的语言和运行环境 内置并发,集群,容错机制 电信行业大规模部署应用 . Erlang的历史. 很老的语言,始于80年代末 爱立信投资10亿美金主导开发 EPL版权方式开源. Erlang适合做什么. 互联网应用服务器 消息系统 需要软实时的数据库应用 网关代理服务器 . 应用案例. Facebook 华为 腾讯 校内网 盛大网络 WEB2.0游戏公司. Erlang的亮点. 高性能 多核心SMP的支持 透明分布的支持
E N D
Erlang全接触 褚霸 chuba@taobao.com 2010/07/20
Erlang是什么? • 通用的语言和运行环境 • 内置并发,集群,容错机制 • 电信行业大规模部署应用
Erlang的历史 • 很老的语言,始于80年代末 • 爱立信投资10亿美金主导开发 • EPL版权方式开源
Erlang适合做什么 • 互联网应用服务器 • 消息系统 • 需要软实时的数据库应用 • 网关代理服务器
应用案例 • Facebook • 华为 • 腾讯 • 校内网 • 盛大网络 • WEB2.0游戏公司
Erlang的亮点 • 高性能 • 多核心SMP的支持 • 透明分布的支持 • 完善的监控信息 • 商业产品上经过时间的验证成熟 • 轻量进程的支持
Erlang系统实现 • 200K行C代码 • 几千行核心Erlang代码 • 代码成熟度高
Erlang语言特性 • 简单小巧 • 模式匹配 • 变量单次赋值 • 丰富的库 • 灵活多样的错误处理 • 代码热替换 • 天生的分布式 • 多核支持
Erlang运行期内部 • ERTS 网络服务器框架 • 纯消息驱动的系统 • 多处理器利用技术 • 强大的IO • 平台移植
ERTS <==> 网络服务器框架 • IO处理 • kernel poll, 如epoll kqueue • 定时器处理 • timewheel • 逻辑处理处理 • process • coroutine • fiber • smp
纯消息驱动的系统 • 多核心处理消息 • 调度器平衡迁移 • 同步和异步 • 无锁编程
多处理器利用技术 • 线程 • 调度器 • 异步线程 • driver发起的线程 • 精巧的锁 • process_lock • 快速的mutex • 进程 • PORT 管道通讯
强大的IO • 仿照Unix的哲学: 一切都是文件 • 管道通讯类似CGI • 对外世界的重要通道 • 整合其他语言写的模块
平台移植 • Windows(smp支持的不好) • *nix
与其他系统整合 • C节点(ei) • Java (jinterface) • Cobra • TCP/HTTP • 内置RPC
开发测试 • 开发工具 • 调优工具 • 排错工具 • 跟踪工具
部署 • Standalone • 不停机维护 • 在线升级 系统同时跑新旧代码 • 发现问题在线降级 • 工具化,一切自动化
代码安全 • 代码可远程从网络加载 Diskless • 代码可加密, 强加密防止反编译
远程维护 • 强大的内置shell • ssh sftp • 日志系统
监控功能 • OS mon • SNMP • HTTP
应用障碍 • FP语言 • 独特的哲学 • 社区小 • 库偏少
讨论Erlang在淘宝的应用? • 压力测试工具 • 消息中间件 • 服务调度 • 代理服务器 • 业务服务器 • Web应用 类似web旺旺?
谢谢大家? Any questions?