服务器
文章平均质量分 82
长三月
长期分享游戏服务器/游戏开发/Java干货文章;
长期造各种轮子,分享造轮子心得;
十年以上游戏服务端主程经验,曾担任月流水过亿项目技术负责人
展开
-
用Java实现Actor模型(模仿Skynet)
Actor模型是一种常见的并发模型,与最常见的并发模型——共享内存(同步锁)不同,它将程序分为许多独立的计算单元——Actor,每个Actor独立管理自己的资源,不同Actor之间通过消息传递来交互。它的好处是全异步执行,不会造成线程阻塞,从而提升CPU使用率,另外由于线程之间是异步交互,所以也不用考虑加锁和线程同步的问题。Actor模型在业界有许多应用,例如游戏服务器框架Skynet、编程语言Erlang。因为历史原因,Java下的Actor模型应用较少,知名的只有基于Scala的Akka。原创 2023-05-03 13:53:53 · 1729 阅读 · 5 评论 -
Redis使用心得
1.Redis适合做什么,不适合做什么?2. 架构选型3. 是否需要代理4. 持久化方式选择5. 避免大key出现6. 批量操作请用pipeline7. Redis版本选择原创 2021-05-09 23:48:01 · 230 阅读 · 1 评论 -
从一条阿里编码规范谈线程池的使用
最近在看阿里Java编程规范,有一条引起了我的注意:【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors 返回的线程池对象的弊端如下:FixedThreadPool 和 SingleThreadPool: 允许的请求队列长度为Intege...原创 2020-03-25 17:13:33 · 1224 阅读 · 0 评论 -
记一次服务端定时器问题的解决
最近遇到了一次服务端定时器性能瓶颈的问题,把解决过程在此记录一下,作为备忘。首先是前一段线上项目连续导人,平均在线千人左右,随之服务器慢接口(>100ms)越来越多,一天能达到五位数。观察内存占用情况,不高,没有频繁old gc的情况。观察cpu占用率,达70%-90%。这个数据是比较高的,比一般同等人数在线的游戏高出不少。这说明出现这种情况不太正常,并不是单纯在线高需要分服务器的问题,可...原创 2020-03-05 11:48:01 · 396 阅读 · 1 评论 -
记一个腾讯信鸽引发的线程卡死问题
一天公司的游戏有大量玩家报自动战斗、种植等操作无法进行,第一时间想到可能是因为玩家的定时任务线程卡死了。用jstack查看线程堆栈日志,发现都卡在了一个http read的地方。公司使用腾讯信鸽做手游的系统推送,卡住的地方就是调用信鸽的服务端sdk向信鸽服务器发送http请求,并等待回应的时候。因为是调用第三方jar包,所以无法直接设置读超时。在网上搜索到一种方法是通过系统变量设置超时时间: Sys原创 2017-07-22 19:12:36 · 649 阅读 · 0 评论 -
全球同服游戏服务端设计
现在越来越多的游戏,像皇室战争一样,会做成全球同服,统一入口。这种方案带来的用户体验和以前的滚服游戏很不一样。这里就全球服的游戏谈谈架构设计。首先,所谓的全球同服只是给玩家的感觉是只有一个服,而非真的只有一台服务器。否则像皇室战争这样火爆的游戏性能上是不可能扛得住的。一般底层做成分布式的结构,主要划分成:login:负责注册和登录,注册时通过负载均衡选到合适的game服,然后返回game...原创 2018-04-10 22:39:28 · 4934 阅读 · 0 评论