一步一步做高性能服务器(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类的交互。

安逸也是一天,辛苦也是一天。 可是十年之后呢?

原文地址:https://www.cnblogs.com/coddingfun/p/3406346.html