`
bachmozart
  • 浏览: 112373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang 网游服务器端socket设计问题

阅读更多
准备用erlang做网游的服务器端,遇到一个通信层设计的问题

erlang socket大多都是使用的被动模式,防止message flood问题

系统中会存在两种消息,一种是客户端和服务器的交互信息,就是简单的request-response模式,另外一种是系统游戏过程中产生的广播消息

如果采用erlang被动socket模式, recv()方法本身是阻塞等待客户端请求的,同时系统广播消息可能会随时产生,那么阻塞的进程就无法及时取到当前mailbox里的消息,发给客户端了

目前打算采用客户端同时开2条TCP连接的方式解决。一条用于处理交互信息,另一条只处理当前系统的广播消息

代价就是单台服务器能撑的同时在线用户数变少了,大家有没有更合理的方案呢
分享到:
评论
4 楼 hittyo 2009-11-10  
我们做游戏request-response是用php来实现的

erlang只做广播
3 楼 mryufeng 2009-09-24  
无需都在一个进程里面接受广播动作 然后再调用gen_tcp:send的。  gen_tcp:acccept send  和 os 的对等api一样 都支持多进程调用。
2 楼 mryufeng 2009-09-24  
广播进程直接调用 gen_tcp:send(Tcp)就好了
1 楼 bachmozart 2009-09-24  
感谢avindev同学提出的宝贵建议

我几乎忘记了有{active,once}这种模式

考虑了一下,如果使用active,once方式可能会遇到 系统广播消息和客户端交互请求在mailbox里排队的情况,客户端交互请求是需要尽快返回response的,那就需要selective recieve处理,似乎大量广播消息会影响到客户端的交互请求

相关推荐

    erlang的小型游戏服务器

    总的来说,这个Erlang小型游戏服务器项目涵盖了游戏服务器开发的核心技术,包括Erlang的并发编程、Mnesia数据库的使用、协议设计以及版本控制和错误检测。对于想要学习Erlang游戏服务器开发的人来说,这是一个很好的...

    远古封神+英雄远征的ERLANG游戏服务器代码

    《远古封神》与《英雄远征》是两款受欢迎的网络游戏,它们的后端服务器采用了ERLANG这一编程语言来构建。ERLANG是一种为并发、分布式和容错系统设计的函数式编程语言,因其在实时系统和大规模并发处理中的优秀性能而...

    erlang游戏服务器网关源码.zip

    这四份源代码共同构成了一个基于Erlang的游戏服务器网关,通过Erlang的并发特性和OTP设计原则,实现了高效、稳定且可扩展的网络服务。开发者可以通过研究这些源码,学习如何在Erlang中构建复杂的游戏服务架构,理解...

    基于Erlang的Shell集成游戏服务器设计源码

    本项目采用的是一种创新性的方法,通过Erlang语言的并发优势和Shell集成的易用性,来设计和实现一个高效、可靠的游戏服务器。它不仅满足了现代游戏对服务器性能的需求,还降低了服务器的管理复杂度,使得游戏开发者...

    一个我自己学习Erlang的聊天室服务器及客户端代码

    本项目提供了一个使用Erlang编写的聊天室服务器端代码以及Java编写的客户端代码,这为我们深入理解Erlang的并发特性和Java与Erlang的交互提供了实践案例。 一、Erlang聊天室服务器端 1. 并发处理:Erlang的轻量级...

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    erlang 设计指南

    **Erlang设计指南** Erlang是一种面向并发的、函数式编程语言,它由瑞典电信设备制造商Ericsson开发,主要用于构建高度可扩展和容错性强的分布式系统。"Programming Erlang: Software for a Concurrent World"是Joe...

    搭建自己的erlang服务器(基于RabbitMQ改进)(一)

    Erlang采用模块化设计,每个`.erl`文件对应一个模块,包含了函数定义和行为。RabbitMQ的核心组件如`rabbit`, `mnesia`, `amqp_server`等都是Erlang模块。 要对RabbitMQ进行改进,你需要理解其内部工作原理,例如...

    erlang ranch实现的游戏tcp服务器

    Erlang Ranch是一个轻量级、高性能的网络协议栈,专为构建TCP服务器而设计。在游戏开发领域,由于其并发处理能力和强大的故障恢复机制,Erlang常被用来构建可扩展、高可用性的游戏服务器。Ranch库提供了一种简单的...

    erlang实现的网游服务器(OpenPoker系统)

    erlang实现的网游服务器(OpenPoker系统)erlang实现的网游服务器(OpenPoker系统)erlang实现的网游服务器(OpenPoker系统)

    Erlang游戏.zip

    6. **热代码升级**:Erlang支持在不中断服务的情况下进行代码升级,这对游戏开发者来说是个福音,可以在不停服的情况下修复问题或添加新功能。 7. **OTP(Open Telecom Platform)框架**:Erlang的OTP库提供了大量...

    openpoker源码 erlang写的网游服务器

    openpoker源码 erlang写的网游服务器源码 OpenPoker是一个大型多人扑克网游,内建支持了容错能力,负载平衡和无限制的规模大小。

    英雄远征erlang服务器源码含数据库

    这种架构可以很好地处理游戏服务器中的玩家交互、状态管理、网络通信等复杂问题。 5. **数据库集成**:既然源码包含了数据库部分,我们可以推断该服务器可能使用Erlang的数据库接口与后端数据库进行交互。Erlang...

    EMQTT(Erlang MQTT消息服务器) v2.3.11 for windows7 x64

    Erlang MQTT消息服务器简称EMQTT。EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,...

    Erlang中的socket编程简单例子

    在Erlang中,使用socket进行网络编程是非常重要的基础技能,它可以让我们创建能够处理网络通信的服务器和客户端应用。本文将深入探讨Erlang中的TCP和UDP socket编程,以及如何实现简单的echo服务器和客户端。 首先...

    erlang 程序设计 源码

    9. **网络编程**:Erlang天生适合网络编程,因为其内置了对TCP、UDP等协议的支持,可以轻松创建分布式系统。 10. **并行性与分布式**:Erlang节点可以相互通信,形成分布式集群,这使得构建大规模分布式系统变得...

    Erlang游戏程序学习完整PDF手册

    1. **并行计算**:Erlang的进程模型使得它能轻松处理大量并发操作,这对于网络游戏中的多玩家同步和实时交互至关重要。每个进程独立运行,通过消息传递进行通信,避免了共享内存带来的复杂性和潜在错误。 2. **热...

    英雄远征erlang源码

    【标题】:“英雄远征erlang源码”指的是一个基于Erlang编程语言开发的服务器端源代码,用于支持网络游戏“英雄远征”的运行。Erlang是一种并发性极强、容错性好的函数式编程语言,常用于构建高可用性的分布式系统,...

    erlang服务器集合

    这个“erlang服务器集合”包含了多个项目,主要围绕`openpoker`和`英雄远征`游戏服务器的源代码,为深入理解Erlang在大规模并发环境下的应用提供了丰富的实例。 1. **OpenPoker**: OpenPoker是一个用Erlang编写的...

    erlang中文基础教程

    2. **分布式系统**:Erlang的天然分布式支持使得它成为构建大规模分布式服务的理想选择,如 ejabberd 即是基于Erlang的XMPP服务器。 3. **Web开发**:Erlang框架如YAWS和Chicago Boss为构建高性能Web应用提供了可能...

Global site tag (gtag.js) - Google Analytics