分享好友 资讯首页 频道列表

springboot netty如何实现长连接 netty框架做游戏服务器怎么样?

2023-05-07 17:35530

netty框架做游戏服务器怎么样?

如果你指的是单机的话,不说Netty会怎么样,服务器都有可能直接崩溃掉,你的算一下,按平均每链接传输数据1K,100W链接大概数据量会在1G左右,G级服务器网卡也受不了的,我们在网络编程中对单机来讲,成功解决了C10K的问题,这种M级别的链接,可能暂时解决不了。对于如此大的并发,一般我们都是通过负载均衡的进行处理,如新浪微博,同时在线100W以上,通过约100多个节点处理,每个节点也就才10000并发左右。

交互游戏是怎么实现的?

(一)需要使用客户端与服务端建立长链接的进行通讯,目前使用Netty通讯,实现长链接。Netty自己开发一个server,根据入参数返回一个json字符串。

写好这个server需要了解:

(1)TCP协议:三次握手、四次挥手、tcp如何保证包的可靠性传输(ack,seq,超时重传),流量控制(滑动窗口,拥堵控制)等

(2)IO通信的几种,阻塞IO,非阻塞IO,多路复用IO,信号量IO通信,异步IO。目前tomcat支持阻塞IO,多路复用IO,Netty编程都支持,看程序员自己的实现

(3)非阻塞IO原始API比较复杂,后来出现REACTOR的NIO,目前Netty可以支持这种开发

(二)算法,paceman的算法就是最优路径,一般可以使用图的深度优先遍历算法

ghost使用动态规划的算法,计算下一步

(三)环境,可以使用docker进行打镜像使环境统一部署

长连接的实质是什么?用什么协议比较好?如何优化?

不管长短连接都是tcp层面的,而线程则是处理逻辑层面的事情,没有一一对应的关系。单线程通过io多路复用,比如epoll,select,iocp也可以同时维护几万个长连接。

首先说下,短连接是指的每次客户端有请求就和服务器建立一个tcp连接,服务器端处理完本次请求就立即关闭连接。短连接适合业务请求小且不频繁的逻辑,比如timeserver等,好处就是编程简单,服务器资源也不会被一批客户一直占用。

Tcp建立连接和释放连接都是需要时间以及资源消耗的,对于有些业务,比如游戏,客户端和服务器之间频繁的通信,如果每次都是临时建立请求,就非常浪费服务器资源且体验不好。所以就需要长连接,但是长连接带来的问题就是逻辑复杂。前后端都需要维护连接的状态,本身tcp底层是会维护心跳的,但是这个心跳频率是不确定的。为了实时掌握连接情况,大多数情况,业务层会自己写一套心跳逻辑,同时会维护一个session会话状态层。

反对 0
举报 0
收藏 0
打赏 0
评论 0
springboot获取项目访问地址 springboot用什么语言?
springboot用什么语言?Sprngboot使用java语言,这是敏捷开发互联网应用的基本框架。有了它,可以快速构建高质量、可扩展的互联网应用。它需要和数据库访问框架配合使用,如mybatis、

0评论2023-05-0757

spring boot小项目实例 ideaspringboot项目如何加载依赖?
首先,输入"方法有很多,http请求调用,也可以把控制器注入你的另一个控制器类,直接调用那个方法!不,SpringBoot整合了一个生态系统,就像每个人都能做的那样。;没有春天就。快捷的插件操作为整个

0评论2023-05-07129

docker安装redis配置文件在哪 实用docker容器推荐?
推荐MySQLRedisMongoDB等存储容器,对于本地开发和学习非常方便。此外,还有一系列类似于nacosgitlab可以学习跳羚,如果他没有t学过ssm。springboot是对ssm的简化,不

0评论2023-05-0750

nacosclient使用教程 子程序和主程序怎么编程举例说?
子程序和主程序怎么编程举例说?题目一开始就很暧昧。什么是主程序,什么是子程序,没有明确的定义。我来说说我个人的理解。以JAVA为例。首先,主流的应用开发都是基于后端架构,基本采用微服务的形式,辅以各种

0评论2023-05-0752

springboot中有哪些核心注解 springboot2可以用来干什么?
springboot2可以用来干什么?SpringBoot对开发者来说最大的好处就是可以自动配置Spring应用。SpringBoot将根据应用程序中声明的第三方依赖项自动配置Spring框架,而无需

0评论2023-05-0745

idea怎么导入springboot项目 有哪些比较适合Java初学者学习的资源?
有哪些比较适合Java初学者学习的资源?主要分为入门、高级程序员、攻城狮思维三个阶段,每个阶段推荐相关书籍:java入门书籍推荐:初学者需要静下心来系统的学习知识,但同时也有很多重要的问题可能与Jav

0评论2023-05-0747

springboot监控和健康检查 springboot怎么启动测试?
springboot怎么启动测试?包裹进口导入org.junit.T请教,如何springboot里动态读取配置文件?这和springmvc是一样的。首先,查看您的spring-mvc.xml是否配置

0评论2023-05-0658

nginx 转发隐藏请求地址配置方法 没学过ssm能直接学习springboot吗?
没学过ssm能直接学习springboot吗?简单地看"是否可以直接学习SpringBoot",答案是"没问题"但是当你学习SpringBoot的时候,你会发现只学习SpringBoot是没有用的,你

0评论2023-05-0644

springboot如何设置登录访问权限 springboot如何进行热部署?
springboot如何进行热部署?热部署(Hotdeployment)热部署在应用程序运行的同时升级软件或修改部分代码和配置文件,使得升级后的软件和修改后的代码和配置文件无需重启应用程序即可生效。该

0评论2023-05-0642

springboot 商品管理 Tomcat部署Springboot项目404怎么办?
Tomcat部署Springboot项目404怎么办?本地部署可以访问项目,但是它一移动到服务器就报告404。什么?;这是怎么回事?如果是网络问题,看防火墙是否关闭。如果防火墙已启动,请打开8080端

0评论2023-05-0652