高级服务器设计和实现2

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    高级服务器设计和实现2 - 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

    + mryufengmryufeng, 2 years ago

    custom

    387 views, 1 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 387
      • 387 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 9
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags