如题 请大家讨论一下网游服务器端结构设计方面的问题。 希望大家畅所欲言,能说说细节更好。 还有关于网络游戏其他方面的问题也可以。 在此先摘篇文章 随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长。目前,(网游)网络游戏行业比较紧缺的是具有较深技术功底的“专家型”开发者,这主要包括两个方面:服务器端设计人员以及客户端设计人员。对于网络游戏而言,由于其主要的游戏逻辑计算是在服务器端完成的,数据同步与广播信息的传递也是通过服务器完成的,所以,是否拥有一个有经验的服务器端设计人员已经成为一款网游产品能否成功的关键之一。鉴于此,本文将试图就网游服务器设计的一系列问题展开讨论和总结,笔者将结合自己的开发经验和体会,将其中各方面内容逐一呈现。希望能够对以下三类人员有所帮助: 有一定网络编程基础、准备进入(网游)网络游戏行业作服务器端设计的人员; 正在从事网游服务器设计的人员; 网游项目的技术负责人。 由于网游服务器的设计牵涉到太多内容,比如:网络通信方面、人工智能、数据库设计等等,所以本文将重点从网络通信方面的内容展开论述。谈到网络通信,就不能不涉及如下五个问题: 1、 常见的网游服务通信器架构概述 2、 网游服务器设计的基本原则 3、 网游服务器通信架构设计所需的基本技术 4、 网游服务器通信架构的测试 5、 网游服务器通信架构设计的常见问题 下面我们就从第一个问题说起: 常见的网游服务器通信架构概述 目前,国内的网游市场中大体存在两种类型的网游游戏:MMORPG(如:魔兽世界)和休闲网游(如:QQ休闲游戏和联众游戏,而如泡泡堂一类的游戏与QQ休闲游戏有很多相同点,因此也归为此类)。由于二者在游戏风格上的截然不同,导致了他们在通信架构设计思路上的较大差别。下面笔者将分别描述这两种网游的通信架构。 1.MMORPG类网游的通信架构 网游的通信架构,通常是根据几个方面来确定的:游戏的功能组成、游戏的预计上线人数以及游戏的可扩展性。 目前比较通用的MMORPG游戏流程是这样的: a. 玩家到游戏官方网站注册用户名和密码。 b. 注册完成后,玩家选择在某一个区激活游戏账号。 c. 玩家在游戏客户端中登录进入已经被激活的游戏分区,建立游戏角色进行游戏。 通常,在这样的模式下,玩家的角色数据是不能跨区使用的,即:在A区建立的游戏角色在B区是无法使用的,各区之间的数据保持各自独立性。我们将这样独立的A区或B区称为一个独立的服务器组,一个独立的服务器组就是一个相对完整的游戏世界。而网游服务器的通信架构设计,则包括了基于服务器组之上的整个游戏世界的通信架构,以及在一个服务器组之内的服务器通信架构。 我们先来看看单独的服务器组内部的通信是如何设计的。 一个服务器组内的各服务器组成,要依据游戏功能进行划分。不同的游戏内容策划会对服务器的组成造成不同的影响。一般地,我们可以将一个组内的服务器简单地分成两类:场景相关的(如:行走、战斗等)以及场景不相关的(如:公会聊天、不受区域限制的贸易等)。为了保证游戏的流畅性,可以将这两类不同的功能分别交由不同的服务器去各自完成。另外,对于那些在服务器运行中进行的比较耗时的计算,一般也会将其单独提炼出来,交由单独的线程或单独的进程去完成。 各个网游项目会根据游戏特点的不同,而灵活选择自己的服务器组成方案。经常可以见到的一种方案是:场景服务器、非场景服务器、服务器管理器、AI服务器以及数据库代理服务器。 以上各服务器的主要功能是: 场景服务器:它负责完成主要的游戏逻辑,这些逻辑包括:角色在游戏场景中的进入与退出、角色的行走与跑动、角色战斗(包括打怪)、任务的认领等。场景服务器设计的好坏是整个游戏世界服务器性能差异的主要体现,它的设计难度不仅仅在于通信模型方面,更主要的是整个服务器的体系架构和同步机制的设计。 非场景服务器:它主要负责完成与游戏场景不相关的游戏逻辑,这些逻辑不依靠游戏的地图系统也能正常进行,比如公会聊天或世界聊天,之所以把它从场景服务器中独立出来,是为了节省场景服务器的CPU和带宽资源,让场景服务器能够尽可能快地处理那些对游戏流畅性影响较大的游戏逻辑。 服务器管理器:为了实现众多的场景服务器之间以及场景服务器与非场景服务器之间的数据同步,我们必须建立一个统一的管理者,这个管理者就是服务器组中的服务器管理器。它的任务主要是在各服务器之间作数据同步,比如玩家上下线信息的同步。其最主要的功能还是完成场景切换时的数据同步。当玩家需要从一个场景A切换到另一个场景B时,服务器管理器负责将玩家的数据从场景A转移到场景B,并通过协议通知这两个场景数据同步的开始与结束。所以,为了实现这些内容繁杂的数据同步任务,服务器管理器通常会与所有的场景服务器和非场景服务器保持socke
在这篇文章中,通过将 S7-1500 设置为具有专用服务器接口和用户身份验证的 OPC UA 服务器来学习如何使用 OPC UA 在两个 PLC 之间进行通信。
为什么要有 HTTPS?简单的回答是:“因为 HTTP 不安全”。HTTP 怎么不安全呢?
在现代互联网中,保护用户的数据安全和隐私至关重要。HTTPS(Hypertext Transfer Protocol Secure)是一种通过在HTTP基础上加密通信内容来确保安全性和完整性的协议。本文将深入探讨HTTPS协议的原理和工作流程,帮助你更好地理解和使用HTTPS来保护网站和应用程序的安全性。
SSL/TLS是世界上应用最广泛的密码通信协议,当我们上网页时会发现一些网址前面是”https”,这就说明这个页面是使用了SSL/TLS技术进行通信,这种方式在很大程度上可以保证通信内容的机密性。 TLS实际上是SSL的改进版本,分别是transport layer security 和 secure socket layer,人们一般将SSL和TLS作为一个整体来看待。 SSL/TLS可以承载HTTP和其他的一些协议,比如发送邮件时使用的SMTP(邮件传输协议)、POP3(邮局协议)。这样SSL就可以对传输的信息进行加密,从而保证机密性。 这种技术提供了一个通信的框架,里面用到了对称密码、公钥密码、数字签名、单向散列函数、伪随机数生成器、消息认证码等技术,如果哪一部分出现问题,我们可以灵活地替换该部分。
腾讯云上的Elasticsearch service已经开始为我们提供基于HTTPS协议访问的Elasticsearch集群了;Elastic Cloud的Elasticsearch服务则一直都是默认使用的HTTPS安全协议。而我们自建的Elasticsearch集群,从8.0版本开始,也默认地简化了安全功能,为用户自动配置:用户认证、基于角色的访问控制进行用户授权、使用 TLS 加密的节点到节点通信、使用 HTTPS 与 Elasticsearch API 进行加密通信。
这样,利用三元组(IP地址,协议、端口)就可以标识网络的进程,网络中的进程通信就可以利用这个标识与其他进程进通信。
HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
在HTTPS连接建立的过程中,SSL/TLS握手起到了至关重要的作用。它不仅是为了验证通信双方的身份,而且还要确立加密参数和会话密钥。以下是该过程的详细说明:
长连接是一种在网络通信中,客户端与服务器之间保持持久性连接的通信方式。在长连接中,一旦建立连接,客户端和服务器之间的通信通道将保持打开状态,直到其中一方显式关闭连接或发生通信异常。这与传统的短连接方式不同,传统的短连接在每次通信结束后都会关闭连接。
NAT(Network Address Translation)穿越是指在存在NAT设备的网络环境中,实现两个位于不同NAT网络之间的主机进行直接通信的技术。由于NAT的存在,私有IP地址在经过NAT设备时会被转换为公网IP地址,因此通常情况下,位于不同NAT网络的主机无法直接进行通信。然而,通过使用NAT穿越技术,可以绕过NAT的限制,实现跨越NAT网络的直接通信。
应用程序的通信成本 什么是通信 一个程序中两个以上功能相互传递信号或数据叫做通信。 什么是成本 这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。 都有哪些通信方式 全局变量 线程间通信 共享内存 共享文件 管道 Socket 硬件(串口,USB) 等等 全局变量 全局变量是成本最低通信方法,通过设置全局变量,在程序运行时过程中均可操作该变量,用户信号传递,数据传输。 线程间通信 线程间通信也是采用全局变量方式,通常线程库会提供一套完善的API供用户使用,它可以实现共
案例:张三要把自己考上传智专修学院的好消息写信告诉自己的好朋友李四。 其中: 通信的主体是:张三和李四; 通信的内容是:考上传智专修学院 通信的方式是:写信。
这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。
Swoole 是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员能够编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP 和 WebSocket 服务。Swoole 可广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网 (IOT)、车联网、智能家居等领域。使用 PHP+Swoole 作为网络通信框架,可以大大提高企业 IT R&D 团队的工作效率。
本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。
互联网的通信安全,建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。 一、作用
为什么要学HTTP? 我们绝大多数的Web应用都是基于HTTP来进行开发的。我们对Web的操作都是通过HTTP协议来进行传输数据的。 简单来说,HTTP协议就是客户端和服务器交互的一种通迅的格式。 HTTP的诞生主要是为了能够让文档之间相互关联,形成超文本可以互相传阅 可以说,Http就是Web通信的基础,这是我们必学的。 HTTP基础概念 我们学计算机网络的时候就知道,我们把计算机网络分层了5层,一般我们现在用的都是TCP/IP这么一个分层结构。 虽然官方的是ISO 提出的7层结构,但是仅仅是理论基础,在
最近swoole在php中越来越知名,很多人说swoole给与了php的新生,有swoole的php可以和node js,go等语言抗衡,那么,我们从技术角度来说,swoole到底实现了什么,如果没有
在现代网络应用中,实时性和高效性是核心要求。虽然HTTP协议在处理客户端和服务器之间的请求-响应交互方面表现出色,但在某些场景下,尤其是需要服务器主动向客户端推送数据的情况下,它的局限性变得明显。这里,WebSocket技术作为一种补充和替代方案,展现了其独特的优势。在本文中,我们将深入探讨WebSocket技术及其与传统HTTP通信方法的比较,并探索其在各种应用中的应用。
Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
最近在进行网络通信的学习时,突发奇想就想模仿微信做一个简单的网络聊天室,所以今天在这里记录一下开发过程。
DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址、DNS域名服务器地址等。一台电脑只要接上网,就可以通过DHCP协议获得相关配置,从而顺利的畅游网络。 网络配置 电脑刚刚
随着科技发展,人们需求越来越多,生活的方方面面都离不开一些实时信息。比如:疫情期间在家协同办公、疫情监控目标人的实时运动轨迹、社交中的实时消息、多玩家互动游戏、每秒瞬息万变的股市基金报价、体育实况播放、音视频聊天、视频会议、在线教育等等,都可以借用WebSocket TCP链接可以让数据飞起来。下面就聊一下WebSocket协议。
websocket作为用于双向通信的实用协议,在笔者最近做的全平台私信系统进行了应用。本次开发的私信系统与普遍理解的“发送-接受-发送”三个流程分开不一样,实现的是类似于QQ与微信的实时通信系统,需要做到收发消息实时化。
网络编程是现代软件开发中不可或缺的一部分,它使我们能够在不同的计算机之间实现数据传输和通信。Java作为一种强大的编程语言,提供了丰富的网络编程库,使开发者能够轻松地创建网络应用程序。本文将介绍Java网络编程的基础知识,面向初学者,详细讨论网络通信的概念、Socket编程、服务器和客户端编程等内容。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述。而web端的IM应用,由于浏览器的兼容性以及其固有的“客户端请求服务器处理并响应”的通信模型,造成了要在浏览器中实现一个兼容性较好的IM应用,其通信过程必然是诸多技术的组合,本文的目的就是要详细探讨这些技术并分析其原理和过程。 1.基于web的固有通信方式 浏览器本身作为一个瘦客户端,不具备直接通过系统调用来达
具体选择取决于系统的实际需求,包括实时性、安全性、可维护性以及云端和边缘设备的性能和可用性。
文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出!
握手协议是TLS握手协议的一部分,负载生成共享密钥以及交换证书。其中,生成共享密钥是为了进行密码通信,交换证书是为了通信双方相互进行认证。
UDP协议是不面向连接的不可靠协议,且没有对传输的报文段进行加密,不能保证通信双方的身份认证、消息传输过程中的按序接收、不丢失和加密传送。
在Java应用程序开发中,网络编程是一个广泛应用的领域。通过使用Socket技术,我们可以轻松地建立客户端和服务器端之间的通信,实现数据传输。本文将介绍如何使用Java中的Socket进行简单的网络通信,旨在为初学者提供易于理解的指导。
客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下:
Http 协议直接和TCP进行通信,而 Https 在 Http 和 Tcp 之间加了一层 SSL 实现加密传输 :
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。
使用 TIA STEP7 V16 软件,创建S7-1200 CPU版本为V4.4的站点,如图1所示。
A和B进行通信,要是双方都在同一个网段内,那么最高效的通信方式就是双方通过内网进行连接,要想让双方进行内网链接,首先需要解决的就是如何让A和B知道对方是在同一个内网中。
进程通信指的是进程间的信息交换 ,IPC(Inter-Process Communication,进程间通信)
前言: 网上聊 HTTPS 的文章已经数都数不过来了吧,厚着脸皮,整理下读书笔记,结合平常项目的实践,也来聊聊 HTTPS。
HTTP(Hypertext Transfer Protocol)作为互联网世界中最重要的协议之一,负责在客户端和服务器之间传输数据。而HTTP报文则是HTTP通信的基石,本文将深入解析HTTP报文的结构和功能,并通过一些实际应用场景展示其重要性。
不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。
领取专属 10元无门槛券
手把手带您无忧上云