github源码:https://github.com/skynetlua/design_cross_platform_server
忘记所有的一切,从零摸索一切,设计一款服务器框架。
先摸索可能的技术,在其中选择方案,靠个人的经验喜好等去设计一款服务器框架。
服务器框架要求如下:
- 尽可能简单易用,少编码;
- 尽可能高效率,核心模块使用C语言开发,使用C++开发;
- 尽可能兼容全部平台,可以支持全部平台运行,使用cmake构建工程;
- 尽可能模块化组件化,可以支持网上共享模块和组件;
- 低成本,少人力,低廉的服务器开销,尽可能共享,让更多人参与进来。
一开始不知道有什么技术可以使用,只好一个一个去尝试,最后用排除法,选择最佳的方式,作为技术解决方案。
人类不断通过创造新的工具,打破文明前进的枷锁:
- 人脑不擅长数学计算,但生活中需要大量计算,发明了机械计算机;
- 机械计算机计算太慢了,远远无法满足业务需求,发明了超级大规模集成电子晶体管计算机;
- 制作一块芯片价格昂贵,一有bug就报废,无法升级,功能单一,发明了CPU指令集实现软件编程;
- CPU指令集是二进制指令,阅读困难,使用更费劲,但是开发Unix系统需要海量代码,发明了gcc编译器,把人类容易接受的C语言翻译成二进制指令;
- C语言的诞生,让人类进入大规模软件编程时代,但是源文件太多,还有兼容各种操作系统,发明了CMake工具,自动管理源代码,自动生成各种操作系统的工程文件;
- C/C++语言开发技术,对人员要求太高,开发写代码效率很慢,发明了脚本语言,一行脚本实现几十行C/C++代码,容错性强,大幅降低编程难度。
- 对于大数据处理业务,非常消耗计算资源,需要更接近计算机硬件的计算能力,以便降低硬件成本,处于工具链中的C/C++便是最佳选择。
最后得出,C/C++开发特别适合少编码少迭代的项目,保证最佳的体验。脚本语言适合需要大量编码频繁迭代的项目。
本文设计的服务器框架,追求最少硬件成本,追求少编写代码,追求更多工具自动生成代码,追求模块通用化,追求最大计算处理业务。