Erlang全接触

2,309 views
2,150 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,309
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
93
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Erlang全接触

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

×