Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956649
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2010-05-22 21:48:56

高级服务器设计和实现 ——技巧
语言的选择
C/C++
Erlang
Lua
C/C++的特点
优势
最大程度的挖掘硬件与系统的潜力
劣势
编码、维护困难
容易出问题

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

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


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


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

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



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

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


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


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

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


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

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

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

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


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

服务器性能可微调
提供简单的接口动态改变服务器关键数据    (要是监控服务器的脚本能够做到此功能将是不错的)
自动根据系统的资源情况来决定默认值
有统计模块做微调依据






阅读(515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~