一步一步做高性能服务器(C++) -- Day 0
【废话】
最近生活迷茫,突然想起一直想做的C++ 的 ServerFrame 一直未动手。
正好有辞职的打算,既然如此。干脆把这个当成此之前的最后一个磨练吧。
先从socketHelper开始做起,一步步的进行分装。
并将代码push到gitHub上,供大家批判。
【初步设计目标】
1. 性能
现代的高性能服务器动辄就是每秒请求数处理高达10几万的,每个请求处理时间在0.9毫秒左右。
我想,我目前尚无需追求这么高的性能。 相同进程数,每秒处理6万进程,每个请求处理事件在10毫秒内完全可以满足。
2. 分布式
学习了erlang的分布式理念,觉得对于上层应用,无缝RPC才是最好的选择。
关于这块,目前没有什么好的思路。不过需要在后期实现。
3. 代码热部署
erlang的热部署很出色,因为它的机制是:一份code分为2个进程运行。A为runtime,B为backup。假如需要更新,无需关闭master进程。master会自动先将处理逻辑切换到B,然后杀掉A,等待code部署完毕之后,重启A,并将逻辑切换到A。然后在spawn一个B。此时的B逻辑也已更新为A。
如果使用C++来实现这些,并且高效的实现这个目标,尚没有很好的思路。
4. 易使用
这个frame的设计目标为Game Server Framework。因为需要考虑到各种游戏的适用性。比如棋牌和RPG的类型不同。
关于棋牌和RPG,初步设想如下:将棋牌当成RPG中的一个副本逻辑。
entry进入游戏之后,直接进入副本的进程进行处理,则为棋牌。如果需要由其他逻辑切换过去,则为RPG。
此举同时也可以无缝对副本逻辑进行更新、扩展。 这块也是这个Frame的特色所在。
【结语】
Day0只是将一些想法列举出来,尚未开始实现。
Day1将画出SocketHelper类的类图,描述与Server类的交互。
安逸也是一天,辛苦也是一天。 可是十年之后呢?