Presentation is loading. Please wait.

Presentation is loading. Please wait.

余锋 (mryufeng@gmail.com) 2008-06-08 高级服务器设计和实现 ——技巧 余锋 (mryufeng@gmail.com) 2008-06-08.

Similar presentations


Presentation on theme: "余锋 (mryufeng@gmail.com) 2008-06-08 高级服务器设计和实现 ——技巧 余锋 (mryufeng@gmail.com) 2008-06-08."— 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
采用成熟的网络框架 ACE libevent boost:asio

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

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

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

10 例:HTTP

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

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

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

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

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

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

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

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

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

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

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

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

23 Q & A


Download ppt "余锋 (mryufeng@gmail.com) 2008-06-08 高级服务器设计和实现 ——技巧 余锋 (mryufeng@gmail.com) 2008-06-08."

Similar presentations


Ads by Google