关于网关的那些事儿,你知道多少?(上)

关于网关的那些事儿,你知道多少?(上)

通俗地说技能特效,网关是消息到达服务器的第一层。它负责与客户端建立连接游戏网关开发,接收客户端发送的消息,并对消息进行验证和分发。不同业务系统网关负责的功能可能会有些不同。但本质是一样的。

一、网关的作用

1.1 与客户端建立连接

这应该是网关最基本的网络功能。服务充当网关,来自客户端的所有消息必须首先到达这里。客户端和网关可以是长连接,比如socket,也可以是短连接,比如http。

1.2 消息过滤

客户端可以向服务器发送任何合法或非法的消息。网关隔离业务服务。当消息到达网关时,网关对消息进行解密和解包,对消息的有效性进行统计验证,过滤掉非法请求,减少业务服务不必要的处理请求。量,减轻企业服务压力。

html5游戏开发开发哪个_游戏网关开发_游戏网关开发

1.3 消息转发、负载均衡

网关收到消息后,根据消息的路由原理,将消息分发给不同的业务服务进行处理,控制各个业务服务处理的流量。并且您可以部署多个网关来分散过多客户端的压力。

1.4 业务服务动态扩展

网关是业务服务消息的转发中心。当一个服务的消息量太大时,可以增加一个新的服务器来处理这些消息。新服务只需要注册到网关。相反,当消息量减少时,您可以动态停止服务并取消注册。

html5游戏开发开发哪个_游戏网关开发_游戏网关开发

1.5 确保玩家在线,切换服务器时无需重新建立连接

如果游戏服务器框架采用分线等方式,当玩家跳转到场景或逻辑服务器时游戏网关开发,无需断开与网关服务器的连接。玩家数据在不同游戏服务器之间的切换是一次内网切换,切换工作瞬间完成。,玩家几乎察觉不到,保证了游戏的流畅性和良好的用户体验。

1.6 保持心跳

网关服务器可以定时向连接的客户端发送心跳包,保证客户端与网关的连接。如果客户端断线,网关会通知各个服务器做播放器的离线处理逻辑。这样就避免了逻辑服务器出现n个相同角色的bug,一定程度上缓解了逻辑服务器的压力。

游戏网关开发_html5游戏开发开发哪个_游戏网关开发

2. 网关实现中使用的第三方技术

1.与客户端建立连接

由于网关需要与客户端建立大量连接,因此需要承载高并发、高性能的任务。对于长连接网关,我们使用netty作为IO通信的框架。netty的优势大家一定很清楚。不明白的可以自行百度。

2.与业务服务通信游戏动态,分发消息包

游戏网关开发_html5游戏开发开发哪个_游戏网关开发

原则上,我们也可以使用netty进行客户端和服务器端的通信开发,但是做一个高性能的网络通信组件是一个很大的挑战。而且消息不仅仅是简单的转发,还有订单、发布、通知等。我觉得我们可以使用消息队列来解决这个问题,比如kfka、rabbitmq、activemq等流行的消息队列。它们本身都提供了异步通信机制,支持单条消息的发送、分发、订阅等,我们只需要对应用程序进行打包即可。

三、网关功能实现

1. 服务器设置

2、消息解析

html5游戏开发开发哪个_游戏网关开发_游戏网关开发

3.消息解密

4.消息转发

5.业务服务向网关注册

6、消息序列化

7.消息加密

8.心跳连接

我们还可以在网关上做很多扩展,比如用户身份检测、ip列表过滤等。