高性能服务器开发复习

0x01 缘由

     性能对于服务器来说至关重要。无论是游戏行业、直播行业等大量的并发用户场景,以及网络设备处理,都需要合理的软件架构来充分利用服务器的硬件资源(CPU\内存\磁盘等)。下面主要关注高性能服务器编程。

0x02 关键技术

     基本的网络原理:
          tcp/ip协议栈、网络分析工具、基本的SOCKET编程、IO服用技术。
     基本的服务器框架:
          
     基本池技术:
          以空间换时间的思路,线程池、内存池、数据库连接池、进程池等。
     数据复制:
          如何减少数据拷贝,提高性能。如“零拷贝”等。
     上下文切换和锁:
          并发程序要考虑上下文切换的问题,即进程切换或线程切换导致的系统开销。保证线程的数量不大于CPU数量,上下文切换就不是问题。
          尽量用无锁设计。无法避免用锁时,尽量减少锁的粒度。

0x03 实际企业需求

     假如你是一个面试者,企业招聘你的需求和要求假想情况如下:
     成熟企业:
     基本框架已成型,在无业务扩张和架构重构时,已形成核心的程序架构,基本只用实现业务和维护。此种需要的能力为基本c++编程和处理问题的能力;
     基本框架已成型,但无法满足目前业务。这时可能要从架构和业务上重新思考和设计。此种需要大量的服务端开发经验和架构设计能力。
     创业:
     从头开始,服务器框架模型、业务模型、硬件等多方面去考虑。
     然而,如果重构和初创企业可以考虑开源方案,但是不是每个开源方案都能满足实际需求,所以需要针对性做详细设计。

0x04 总结

     这次主要复习下高性能服务器开发的关键技术,以及思考下相关需求。