`
bachmozart
  • 浏览: 111649 次
  • 性别: 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程序设计(第2版)1

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

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

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

    erlang程序设计与入门

    **Erlang程序设计与入门** Erlang是一种并发、函数式编程语言,主要用于构建分布式、高可用性、容错性强的系统。它的设计灵感来源于电信行业的需求,由瑞典爱立信公司于1986年开发。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库提供了大量...

    Erlang并发编程,Erlang程序设计,Erlang中文手册

    Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。  Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...

    Erlang程序设计及源码

    通过网络,Erlang节点可以相互通信,形成一个集群,共同处理任务,实现高可扩展性。 6. **BEAM虚拟机** Erlang运行在专为其设计的BEAM虚拟机上,BEAM负责执行Erlang字节码,并管理进程和内存。BEAM的内存管理策略...

    Erlang程序设计中文版

    通过阅读《Erlang程序设计中文版》并结合提供的完整书签,学习者可以逐步构建起对Erlang语言的全面理解,从而在实际工作中有效地运用Erlang解决复杂的问题。无论你是初学者还是有经验的开发者,这本书都能为你提供...

    openpoker源码 erlang写的网游服务器

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

    Erlang程序设计,包含完整目录和全套源码

    在Erlang中,创建和销毁进程非常快速,使得它成为处理大量并发连接的理想选择,常用于构建大规模的服务器应用。 Erlang的高性能主要体现在其内置的并发机制和错误恢复机制上。由于Erlang运行在BEAM虚拟机上,该...

    英雄远征erlang源码

    【标题】:“英雄远征erlang源码”指的是一个基于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程序设计中文版

    Erlang的设计为程序员提供了处理并发问题的强有力工具,使得程序能够以一种更接近真实世界交互的方式来模拟人类思考过程。 本书适合初学者入门和中级水平程序员进一步学习Erlang编程语言。它不仅包含顺序编程的基础...

    [Erlang程序设计]源代码

    **Erlang程序设计源代码详解** Erlang是一种面向并发、函数式编程语言,尤其在分布式系统和高可用性领域表现出色。本资源包含了《Erlang程序设计》一书的所有实例代码,旨在帮助读者深入理解Erlang语言的核心特性和...

Global site tag (gtag.js) - Google Analytics