文档章节

Web服务器和游戏服务器的那些事儿

yaoqiangshmily
 yaoqiangshmily
发布于 2015/08/16 21:23
字数 1179
阅读 84
收藏 1

   随便聊聊

我接触过的软件,最早定义为C/S(Client/Server)和B/S(Brower/Server),如今传统意义上的C/S程序已经很少了,其实App和网络游戏还归位这一类。但更多的是B/S程序,基于各种浏览器的各种……有些朋友一直在做客户端的种种,比如说APP、手游客户端或是Web前端,对服务器端的知识很茫然,其实不然,从基础代码结构来讲,现在的客户端也很丰富了,什么MVC、MVVM架构应用都已经很成熟了,本地存储也OK,如sqlite、file什么的,也写过很多与服务器端交互的代码。这篇简单聊聊Web服务器和游戏服务器。

    网络&系统

服务器端,最重要的就是网络,网络这块知识,看完《Unix网络编程》就无敌了。从现实工作应用中来看,HTTP、TCP、UDP是应用最广泛的,还有一些特殊的协议。

操作系统层面,需要了解进程、线程,尤其线程方面,再具体到框架实现即可。当然想深深的学习下操作系统也是可以的。。

   Web服务器

几乎绝大多数的Web应用都是基于Http的,有空可以看下RFC-2616。Java里有Servlet,Node.js和Scala和Clojure和Golang、Python什么的都有自己的Http封装,PHP里有apache和nginx的CGI,有了这些,就可以解决客户端和服务器端通讯的问题了,服务器端要做的事情很多时候和客户端要做的类似,做一些逻辑处理,做一些持久化操作(数据库),也可能会与外部接口打打交道,然后将结果扔给客户端,基本就大功告成。只是在大架构方面的确需要比客户端健壮些(也可能是我没见过大型游戏)。如果想入门Web服务器端开发,第一步就是学习Http,然后找一门你喜欢的语言,进行语法学习,HTTP库的学习,持久层的学习,基本就可上手了。简单聊一下语言,Java做Web其实很蛋疼,各种框架。。Node其实相对轻一些,不过也不太轻。。PHP呢,世界上最好的语言没有之一,其实我接触PHP是在5.4+的版本,语言&框架层面使用起来很方便,性能方面也还凑合,5.4-我就不想吐槽了。。Scala这种强类型&函数式很不错,预计再过2-3年国内会火。。

多聊一点的话,现在的WEB也有很多应用使用长连接的,基于Web Socket的居多吧,。还有就是现在大家都追求NIO、异步、queue等来处理并发,在很多架构上都游刃有余,有大名鼎鼎的Netty,JVM上有Typesafe的Akka,Node天生异步风,都不错。

    游戏服务器

游戏服务器我接触的并不多,但是要比Web服务器端做起来有意思多了。游戏服务器的消息定义一般分为几类:

1、请求/响应 - 像HTTP

2、通知 - 客户端只是向服务器端发送命令,不需后续任何处理

3、推送 - 服务器端主动向客户端发送命令

游戏服务器端都是使用长连接,大多数都是基于TCP,也有对UDP包装的很不错的案例。具体协议方面就不扯了,我也没那么懂。从应用层面上,游戏服务器端是有状态的,所以架构方面不会像Web服务器一样可水平扩展,还有一点特殊的就是游戏线上的各种数据一般都在内存中存储,有一定机制去同步到物理硬盘,这种做法是因为游戏的操作太频繁,可能你在游戏中走一步,需要推送的消息就有无数。

入门的话,学习TCP、UDP,找几个技术框架,如Photon(C#)、Mina、Netty、Pomelo(Node.js),C++的不太了解,应该有很多很多的历史架构都是基于C++的,各家都是有自己的游戏引擎,也或者都是自己写的Socket。首先学习消息处理方面,这样在服务器端也是一样的套路,各种逻辑校验,持久化,消息返回。至于怎样的架构是好的,怎样的代码结构是好的,这个仁者见仁了,没事儿上Github溜达溜达,总有适合你的!

 

© 著作权归作者所有

共有 人打赏支持
yaoqiangshmily
粉丝 0
博文 1
码字总数 1179
作品 0
东城
用 Python 快速实现 HTTP 和 FTP 服务器

用 Python 快速实现 HTTP 和 FTP 服务器 运维派2018-01-071 阅读 PythonftpHTTP服务器python 用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安 […]...

运维派
01/07
0
0
分布式系统的那些事儿(一)

巨石应用在如今互联网+时代逐渐淘汰,而分布式系统,集群,微服务可谓现在的流行趋势。那么近期花点时间来讲讲分布式系统吧。 什么是分布式系统,很多人一直不理解,只知道把系统分布式部署就...

风间影月
2017/05/18
0
0
密码学的那些事儿

密码密码学中的密码和我们日常生活中所说的密码不太一样,计算机术语『密码』是一种用于加密或者解密的算法,而我们日常所使用的『密码』是一种口令,它是用于认证用途的一组文本字符串。这里...

linuxCool
2016/11/25
41
0
MVP那些事儿(1) 用场景说话

目录 MVP那些事儿(1)……用场景说话 MVP那些事儿(2)……MVC架构初探 MVP那些事儿(3)……在Android中使用MVC(上) MVP那些事儿(4)……在Android中使用MVC(下) MVP那些事儿(5)……中介者模式...

叫我丹尼尔
2017/12/02
0
0
Spring4.3+Webscket 实现聊天、消息推送详解原创之websocket与web服务器之间的那些纠结的事儿(二)

我曾经听到不少人说过一句话,如果浏览器支持html5,那么他就一定支持websocket,其实,这句话没毛病,就是觉得别扭,如果我们看我们最终的要结果来说,他只能占据一半,因为制约的另一半因素...

寒冰蓝血
2016/09/12
51
0

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部