服务器开发的一点心得体会

这段时间在公司做一款游戏服务器开发,开发过程中的一点体会记录下来,日后也是一点经验

1.定时刷新机制,服务器中,要有不断定时刷新的措施,比如任务系统

2.线程的管理和调度,一般使用线程池方案

3.内存方面,为了提高性能,通常使用内存池,而不是频繁地动态分配内存

4.数据包的设计,通常为 头部+数据包体 的方式,接受数据包时,先接受包头,然后根据包头描述的大小接收剩下的数据;

   数据包的内存表现上,为了节省空间,通常将数据按二进制形式串行化(或者说序列化)到Buffer中再发送。

 Google的protobuf是个很好的工具,虽然在此次项目中没有用到,以后可能会考虑使用。

5.队列的运用,服务器中一般是多线程处理,队列的思想能够让逻辑变得清晰,服务器中经常用到,比如数据包队列。其实在Windows平台下,完成端口IOCP也是运用了队列 的思想

6.避免竞争,将一个Socket或者连接的处理都放在一个线程中,不要让多个线程同时处理同一个socket

7.日志系统,日志系统也可以运用线程和队列思想,可以考虑用跨平台的日志库,Log4cplus(Log4cxx),一款功能强大的开源C++日志库

8.异步回调思想的运用,服务器中有时要处理的结果并不是马上能够获取到,会发生阻塞,比如数据库的查询和更新(数据库的插入和更新都很耗时)等,此时可以运用异步回调的方式提高性能。

9.超时检测,有时候由于网络原因,客户端已经断线了,但服务器可能会很久都没收到信号,因此,定时的超时检测是很有必要的。

10.状态机的运用,比如用户状态机,状态机的运用能够使得逻辑更清晰

11.设计模式运用,用的比较多比如单例模式,观察者模式

 

转载于:https://www.cnblogs.com/knight-monkey/p/monkey_server_blog.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值