1.特色
游戏服务器:
交互频频
单次交互数据量小
实时要求超高,不能接受1s以上的推迟
玩家要能看到其他玩家的状况
有谈天,帮会,组团,相互损伤等及时消息
排行榜及时改变
有独立的客户端能够保存玩家数据
网站服务器:
交互不频频
单次交互数据量大,常常有文件上传下载、图片上传下载,大段文章,许多图片列表
能接受1s以上的推迟
大部分数据要求恳求时刻点的状况即可,不需求时时推送
浏览器作为客户端,安卓和ios客户端也是在模仿浏览器的功能
2.TCP衔接 vs HTTP衔接 完结原理
(1)TCP衔接
树立一个TCP衔接需求通过“三次握手“
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状况,等候服务器承认;
第2次握手:服务器收到syn包,有必要承认客户的SYN(ack=j+1),一起自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状况;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送承认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状况,完结三次握手。
握手进程中传送的包里不包括数据,三次握手完毕后,客户端与服务器才正式开端传送数据。理想状况下,TCP衔接一旦树立,在通讯双方中的任何一方自动关闭连 接之前,TCP 衔接都将被一直坚持下去。断开衔接时服务器和客户端均能够自动建议断开TCP衔接的恳求,断开进程需求通过“四次握手”
(2)HTTP衔接
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是树立在TCP协议之上的一种使用。
HTTP衔接最明显的特色是客户端发送的每次恳求都需求服务器回送响应,在恳求完毕后,会自动开释衔接。从树立衔接到关闭衔接的进程称为“一次衔接”。
1)在HTTP 1.0中,客户端的每次恳求都要求树立一次独自的衔接,在处理完本次恳求后,就自动开释衔接。
2)在HTTP 1.1中则能够在一次衔接中处理多个恳求,并且多个恳求能够重叠进行,不需求等候一个恳求完毕后再发送下一个恳求。
因为HTTP在每次恳求完毕后都会自动开释衔接,因此HTTP衔接是一种“短衔接”,要坚持客户端程序的在线状况,需求不断地向服务器建议衔接恳求。通常的 做法是即时不需求取得任何数据,客户端也坚持每隔一段固定的时刻向服务器发送一次“坚持衔接”的恳求,服务器在收到该恳求后对客户端进行回复,标明知道客 户端“在线”。若服务器长时刻无法收到客户端的恳求,则认为客户端“下线”,若客户端长时刻无法收到服务器的回复,则认为网络现已断开。
3.游戏服务器事务需求
关于游戏服务器,各种各样的玩法(兵器特点,战斗特点,升星,强化,帮会...),数据修正频频,而每一次数据的修正都要与服务器进行交互,这每一次数据交互所传输的数据量一般比较小。玩家自己的一件兵器晋级,一个宝宝升星,一个宝石镶嵌...只要把对应的道具和要做的操作告知服务器即可,当操作完结,服务器再把修正好的数据同步到客户端。
游戏客户端一般分为pc端,pc微端,Android端,ios端,网页端。网页端又分为js网页端、unity网页端、flash网页端... 现在市面上盛行的稍大型或许稍复杂的游戏客户端js和flash现已很少了,至少也要是一个游戏客户端会存储许多的(一个玩家悉数的个人数据)玩家数据。在玩家只是单纯的切换页面查看自己的道具或其他游戏元素时,客户端和服务器是不会进行交互的,只需求把客户端本地的数据展现出来即可。、
当玩家之间进行交互时,比如一个玩家对另一个玩家形成损伤,一个玩家抢了另一个玩家的物品,这时要让被损伤或许被抢的玩家知道。这就需求服务器告诉这个玩家,你被**玩家揍了,要报仇啊;你被**玩家抢了,要记得抢回来...假如该玩家被打或许被抢的玩家没有在线,还要做离线处理,或许在规划功能时,特意的避开离线玩家。
4.网站服务器事务需求
关于网站平台服务器,一般用来展现一个文章列表, 一篇文章,一个图片列表,一张高清图片,一个视频列表,一个视频。一个用户进入到某个页面会看到大段的文章或许许多图片,会留在该页面一定的时长,这种交互节奏相对游戏事务就少了许多。
关于浏览器来说,是对缓存和本地存储都有许多约束,因此在浏览器本地是不会存储许多数据的。因为客户端的推迟,用户的恳求节奏慢,服务器又无法给客户端推送服务器最新的数据等客观因素,客户端的数据很可能现已与服务器的数据有了很大出入,每次页面的切换、改写都要从服务器恳求许多的数据,同步最新的服务器数据。