Erlang单服游戏开发记录3

前面分析的几种情况,归纳一下,其实就是一种,一个提供服务的gen_server,自身处理的时间本来在一个很低的范围内,但由于高并发带来的消息队列,造成处理的时间成几何级数增长,goolge了一下,没找到相关的内容,只能自己做一些细节上的努力。

1、gen_server中收到消息后,只进行必要的处理,将广播消息放入新进程中处理,虽然增加了整个游戏的进程数,但这也是erlang的推荐方式,但同时,只能用于一些不需要返回给调用者的处理。

2、同步改异步,既然同步调用会超时,那么改为异步请求,你处理好了再给我,这种方式缺点很明显,需要修改大量代码,也会把一些顺序逻辑变成触发式的逻辑,就算付出时间修改好了,也只是解决了调用者超时的问题,gen_server端的性能依旧。

3、动态扩展gen_server,通过判断gen_server的待处理消息长度,启动它的副本,将之后的消息转到新启动的gen_server进行处理。难点在于如何不修改原有代码的基础上,实现对一个gen_server的请求被转向到另一个,如果使用第三方gen_server来负责转发,如何避免它形成新的热点。 

转载于:https://www.cnblogs.com/ccj/archive/2012/10/25/2738227.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值