网络服务器和
游戏服务器是如何联系在一起的
1中有很多比赛。游戏。让我们先看看游戏。
不管RPG服务器多么简单,不管有多少人相互交流,数百人都需要在同一场景中从其他人那里接收信息。
第二,
用户操作非常频繁,一般服务器往往保持较长的
连接,而且这些链接具有高度的交互性,并且没有明显的持久性分区
策略,限制了服务器的横向
扩展。同样的场景只能在物理机器上
运行。
再次,旅游结束通常是不敢把逻辑放在客户机上,用户分钟给你出,换刷金,两件设备太普通了。所以地图服务器必须验证所有玩家在地图上的操作,并计算出一系列的商业逻辑,如怪物AI、丢包率等等。
可以看出传统的游戏服务器与web服务器有明显的
区别。它具有独特的业务需求,如长连接、多播、复杂业务逻辑、有限分区策略等。
2。我们来看看
同步给游戏服务器带来的好处。
并发实际上是一个
程序逻辑过程,他不需要多核物理
支持,一般意义是使多个
独立的逻辑流看起来像是同时运行的,操作
系统级的并发是多
进程多
线程模型,让
操作系统处理时钟中断、阻塞等。
For servers, if the task is spent most of the time on io, there is a concurrent mechanism that prevents the entire map service from being blocked by io.When a task is blocked, the spare computing resources are allocated to other tasks.In this case, concurrency is beneficial to the efficiency of the server and the response time.
对于程序员来说,独立的逻辑流意味着它可以在可靠、简单、松散耦合的上下文中完成。
因为操作系统处理逻辑开关反复的
核心,有些觉得太慢,做一些用户
空间的线程,并
控制多个逻辑内的流动过程。由于
语言描述的局限性,它是写在C / C++太麻烦。所以在Erlang,协程的语法糖去,Lua的产生。
Node.js基本上控制多个逻辑流本身,但这种逻辑流分布按照我 O状态。在实际
执行中,它试图使用非阻塞异步我当一个
任务叫我啊,我停下来。当我完成
信号时,信号会再次出现,我会重新
启动它。
注意这一点,每次我运行一个任务,直到完成它,否则我的调用都不会主动切换到其他程序流。
因为Node.js是异步的,你需要写来监视我 O的信号持续回调,单个任务的逻辑流程中断了很多次。当任务变得相当复杂,即所谓的callbak地狱,将带来巨大的麻烦,调试开发。
三.由于上述
原因,我不建议在非使用Node.js开发原型MMORPG服务器。
4、最新手游服务器非常适合js,因为手游是有限的网络问题。服务器只能进行关键的数据验证,不能处理特殊多人交互的
情况,服务器端简化为与Web服务器无关,业务逻辑简单,处理数据,然后坚持。