文档章节

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

yaoqiangshmily
 yaoqiangshmily
发布于 2015/08/16 21:23
字数 1179
阅读 95
收藏 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,但你又不想去安 […]...

运维派
2018/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

没有更多内容

加载失败,请刷新页面

加载更多

数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
2
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
3
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部