狠狠撸
Search
Submit Search
高级服务器设计和实现2
?
Download as PPT, PDF
?
7 likes
?
1,080 views
Feng Yu
1 of 23
Download now
Downloaded 129 times
More Related Content
高级服务器设计和实现2
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
Download