简述WEB系统的架构原理

简述WEB系统的架构原理,第1张

这个话题太大了。

一般来说,WEB系统,主要是指后端,前端就是各种浏览器了。

那么简单来讲,只要是能与浏览器通过网络交互的系统,都可以算是WEB系统。最简洁的就是用NODEJS写一个echo,就是客户端发什么内容,就回什么内容。

而在实际应用中,WEB系统的架构,一般有这么几个部分:负载均衡、授权验证(可选)、静态内容服务、动态内容服务(业务逻辑)、数据库、运维后台。

1)负载均衡是为了改善用户体验、充分利用服务器资源,主要功能是将新的请求转发到不那么忙的服务器进行处理。

2)授权验证,是在对浏览器发起的请求进行授权校验,如果不是合法的请求,就予以拒绝或者重定向至登录页面。

3)静态内容服务,是指图片、CSS等不会根据不同用户而变化的静态内容,将其直接返回给用户。因为不需要进行逻辑判断,性能主要取决于I/O读写,响应可以非常快。超大型网站,也会把一部分动态内容,例如对访问量大的新闻页,做静态处理,以提升响应速度。静态内容服务的典型是CDN。

4)动态内容服务,是根据用户请求的不同,而进行响应的业务逻辑处理。比如对用户数据的CRUD(增删查改)。这是绝大多数WEB系统的核心所在,一般会调用数据库和数据缓存。具体实现会根据业务需要而变化,也可以变得非常复杂。

5)数据库,是数据所在,既有经典的关系型传统数据库系统,也有为了提升访问性能、减轻的内存数据库。

6)运维后台,是为了方便监控运行状态、升级维护系统,不直接参与对外服务。

先写这么多吧。有具体的问题了,可以再问。

1-技术有什么区别

首先通信上目前的主流是HTTP协议和SOCKET这两种(HTML5提供了一种新的协议,WebScoket,对此了解并不多,因此不做评论,以免误导)。

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

(注:在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。)

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

以J2SDK-1.3为例,Socket和ServerSocket类库位于http://java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。(摘自百科)

在WEB服务器中,一般情况是只需要使用HTTP协议的。因为它不太需要去与浏览器进行主动推送,只需要响应浏览器的访问就足够了

而在游戏服务器,这样的连接方式肯定是不够用的。很多时候游戏服务器是需要主动推送消息,如系统广播。

2-思维有什么区别

WEB服务器并不需要高频即时通讯,对响应速度要求不高。而游戏服务器,大多数是需要很及时的响应速度(暂不讨论弱联网游戏)。如DOTA,这种竞技类型的游戏,1秒就能发生很多事。

因此,在思考方向上,WEB服务器应该考虑是的多平台的兼容,大量用户访问的高并发。

而游戏服务器应该考虑的是高频通讯,高并发。

3-架构的侧重点有什么区别

在架构上面,一般访问量不是很大的网站是只有一台服务器的,访问量高的才会进行分布式设计或者集群设计。

而大部分游戏服务器都是需要分布式设计的。

在现有的网络游戏服务器端架构中,多是以功能和场景来划分服务器结构的。具体的划分是根据项目的需求进行的,并没有一个十分通用的架构。

以上是比较常见的结构,客户端登录的时候,连接GateServer,然后由GateServer去连接LoginServer进行登录。登录后通过CenterServer转发到GameServer(GameServer即是服务器大区)。

而其中的DCServer,主要的功能是缓存玩家角色数据,保证角色数据能快速的读取和保存。

LogServer便是保存日志的了。

4-本质有无区别

本质上,两者并无区别,只是需求不同,侧重点不同罢了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/93933.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存