Transcript Erlang全接触
Erlang全接触 褚霸 [email protected] 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?