1 / 23

高 级服务器设计和实现 —— 技巧

高 级服务器设计和实现 —— 技巧. 余 锋 (mryufeng@gmail.com) 2008-06-08. 实现语言的选择. C/C++ Erlang Lua. C/C++ 的特点. 优势 最大程度的挖掘硬件与系 统的潜力 劣 势 编码、维护困难 容易出 问题. Erlang 的特点. 并 发性 分布式 健壮性 软实时性 热代码升级 递增式代码装载 外部接口. Lua 的特点. 胶水 语言 高性能 FP 特性 体 积小 非常灵活. 采用成熟的网 络框架. ACE libevent boost:asio.

laszlo
Download Presentation

高 级服务器设计和实现 —— 技巧

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. 高级服务器设计和实现——技巧 余锋 (mryufeng@gmail.com) 2008-06-08

  2. 实现语言的选择 C/C++ Erlang Lua

  3. C/C++的特点 优势 最大程度的挖掘硬件与系统的潜力 劣势 编码、维护困难 容易出问题

  4. Erlang的特点 并发性 分布式 健壮性 软实时性 热代码升级 递增式代码装载 外部接口

  5. Lua的特点 胶水语言 高性能 FP特性 体积小 非常灵活

  6. 采用成熟的网络框架 ACE libevent boost:asio

  7. 原则——简单就是美 除非必要不要用非常复杂的数据结构 数组链表解决大部分事情 数组方便利用硬件cache 不需要为未来的东西付出代价

  8. 错误处理 严谨的错误处理 处理信号 IO出错 异常 可恢复

  9. 明确的状态机和消息驱动 整个业务就是一个大的状态变迁图 一个物理链接对于一组状态机 状态的变化是消息引起的 消息是可以跟踪的

  10. 例:HTTP

  11. 插件设计 方便扩展业务 方便团队参与 接口要简单 可以考虑用脚本

  12. 定时器 大部分网络程序时间驱动的 高效的定时器管理 Wheel heap

  13. 协议设计 文本协议 二进制协议 xml RFC标准协议

  14. 协议解析 flex bison (lex & yacc) ragel lemon 合适的库 手动解析

  15. 协议加密与压缩 lzo zlib xxtea rc4 aes des 考虑到cpu 和内存的使用

  16. 配置文件 可以用Lua这样的脚本来描述 适应经常性的变化 Unix .conf文件 ini格式

  17. 稳定性 资源预分配 不可以发生泄漏,堆积 不可使用过多资源 避免频繁的分配/释放内存(内存碎片)

  18. 进程间通信(IPC) Socket 共享内存 Pipe

  19. Cache 尽可能地Cache 从硬件->操作系统->库->应用

  20. 提高服务质量 heartbeat watchdog 类似monit监控程序

  21. 服务器性能可微调 提供简单的接口动态改变服务器关键数据 自动根据系统的资源情况来决定默认值 有统计模块做微调依据

  22. 移植性 平台移植 硬件移植 ANSI C代码最大可移植性 网络字节序(big endian/little endian)

  23. Q & A

More Related