zoukankan      html  css  js  c++  java
  • 一步一步做高性能服务器(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类的交互。

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

  • 相关阅读:
    数值的格式化
    最近开发的一个多功能选择器
    OCI22053: 溢出错误的原因和解决方法
    js的四舍五入问题
    Vista 下先安装 VS 再装 IIS 7 运行出现 500.19 Error 的解决方法
    最近开发的一个多功能选择器2
    Oracle REF Cursor 用法(转帖)
    Oracle 查询历史数据(转帖)
    HDU 1203 I NEED A OFFER! 动态规划(01背包)
    HDU 1160 FatMouse's Speed 动态规划
  • 原文地址:https://www.cnblogs.com/coddingfun/p/3406346.html
Copyright © 2011-2022 走看看