zoukankan      html  css  js  c++  java
  • 服务器开发的一点心得体会

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    关于此主题 v1
    从博客园主题了解前端 CSS
    VS2019 许可证到期
    从博客园主题了解前端 HTML
    关于此主题
    从博客园主题了解前端 JS
    GCC 编译器
    Python的Set和List的性能比较 + 两者之间的转换
    wsgi初探(转)
    权限设计概要
  • 原文地址:https://www.cnblogs.com/knight-monkey/p/monkey_server_blog.html
Copyright © 2011-2022 走看看