0x01 缘由
性能对于服务器来说至关重要。无论是游戏行业、直播行业等大量的并发用户场景,以及网络设备处理,都需要合理的软件架构来充分利用服务器的硬件资源(CPU\内存\磁盘等)。下面主要关注高性能服务器编程。
0x02 关键技术
基本的网络原理:
tcp/ip协议栈、网络分析工具、基本的SOCKET编程、IO服用技术。
基本的服务器框架:
基本池技术:
以空间换时间的思路,线程池、内存池、数据库连接池、进程池等。
数据复制:
如何减少数据拷贝,提高性能。如“零拷贝”等。
上下文切换和锁:
并发程序要考虑上下文切换的问题,即进程切换或线程切换导致的系统开销。保证线程的数量不大于CPU数量,上下文切换就不是问题。
尽量用无锁设计。无法避免用锁时,尽量减少锁的粒度。
0x03 实际企业需求
假如你是一个面试者,企业招聘你的需求和要求假想情况如下:
成熟企业:
基本框架已成型,在无业务扩张和架构重构时,已形成核心的程序架构,基本只用实现业务和维护。此种需要的能力为基本c++编程和处理问题的能力;
基本框架已成型,但无法满足目前业务。这时可能要从架构和业务上重新思考和设计。此种需要大量的服务端开发经验和架构设计能力。
创业:
从头开始,服务器框架模型、业务模型、硬件等多方面去考虑。
然而,如果重构和初创企业可以考虑开源方案,但是不是每个开源方案都能满足实际需求,所以需要针对性做详细设计。
0x04 总结
这次主要复习下高性能服务器开发的关键技术,以及思考下相关需求。