Server 框架设计思路分享


框架模型如下:





Server部分分为四部分:Access接入层Dispatcher事件分发层BusinessLogic业务处理层Data数据层


Access接入层

供客户端接入


Dispatcher事件分发层

从各类事件请求Server(Event.Request) ------>   转发------>相应的事件处理Server(Event.Response)


BusinessLogic业务处理层

处理相应的业务逻辑


Data数据层:

处理数据



问题一:怎么从一个Server转发到另外一个Server?

1.Access.BusinessLogic,Data三层对应Server向Dispatcher注册(让Dispatcher知道你是谁)

2.EventMsg传递的时候带上EventMsg.src_type 与Event.src_serverid , 带上EventMsg.dst_type 与 EventMsg.dst_serverid 以及其它信息,知道你从哪里来,要到哪里去


问题二:怎么平滑无缝更新一个Server?

1.对于交互极少的Server.杀进程重启进程即可。如一个配置服务

2.对于快速处理事件的Server ,新进程替换旧进程 , 新老进程同时存在若干秒 (此时新进程处理新事件;旧进程不可以处理新事件,处理完旧事件后退出)。如一个用户存储Server

3.对于还在交互,并且将持续交互较久的进程,1.强制不接收新指令,待里面用户所有行为完成后退出 2.给个定时器,如最长10分钟,之后强制退出。在满足1.2情况之一重启新进程即可。如一个棋牌类的玩牌Server


问题三:Server是否可以复用?

比如开发棋牌类游戏,做好了一个德州扑克,再来个斗牛,再来个扎金花。。。形成模板复用,开发起来很简单吧


问题四:Server如何实现负载均衡?

1.对于接入层,客户端随机接入即可;

2.对于业务逻辑或者数据层,则增加同类型server,分散处理.


问题五:如何处理时间复杂度高的业务?

交个子线程处理,处理完后返还给主线程。


......



优点:

1.将业务子系统,子模块化,各个模块之间耦合降到最小,相互之间影响降到最小。

2.平滑无缝升级,升级不影响其它模块功能

3.业务和存储分离

4.某些Server可以模板化,复用程度高。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值