- 博客(170)
- 资源 (1)
- 收藏
- 关注
原创 基于 Agent 的统一运维平台实现
本文设计并实现了一套基于Java中控+Python Agent的统一运维平台,适用于大规模游戏服务器集群。采用代理架构,支持服务器节点管理、远程日志浏览、数据库备份/清库及机器性能指标上报。相较SSH无代理方案,该架构在交互性、大文件传输与安全隔离方面更具优势。平台通过权限校验、路径沙箱、二次确认和审计日志等机制保障安全性,结合ClickHouse高效存储时序数据,满足高频、高可靠运维需求。
2026-10-25 20:28:17
123
原创 轻量级游戏服务器运营日志平台实战
本文构建了一套轻量级游戏运营日志统一平台,采用Filebeat+Kafka+ClickHouse架构,替代笨重的Hadoop方案。通过filestream+ndjson实现日志采集与JSON解析,保障多节点日志稳定、实时入库;利用Kafka削峰容错,ClickHouse列式存储支持毫秒级查询与自动TTL清理。核心创新在于动态ext字段设计,结合Java层灵活过滤,实现业务扩展无须改表。整套方案部署简单、运维高效,适用于中小规模游戏集群的实时日志检索与分析需求。
2026-09-26 21:26:21
330
原创 Go:实现游戏服务器网关
本文基于 Go 语言实现了一套轻量化、高可用、可落地的游戏网关服务。通过连接池自愈、异步消息缓存、预判式协议转发、双模式服务发现四大核心设计,完美解决了传统游戏架构连接复杂、迭代困难、消息易丢失、业务与IO耦合的痛点。
2026-05-23 10:44:54
565
原创 Go 手动挡元编程:go:generate 实战解析
本文探讨了Go语言中手动挡元编程的实现方式及其应用场景。文章指出Go通过go:generate机制实现了"代码生成代码"的元编程能力。重点解析了go:generate的核心机制:它作为触发器而非执行者,通过串行执行命令实现代码生成,特别适合游戏服务器开发中的协议注册和路由分发场景。并对比了Java基于注解+反射的实现方式。
2026-05-11 10:24:53
577
原创 Go异步持久化如何防止炸服
本文探讨了Go语言游戏服务器开发中异步持久化导致的map并发读写崩溃问题。文章分析了Go与Java在处理map并发时的设计哲学差异:Go直接终止进程避免脏数据,而Java通过异常提醒允许继续运行。针对玩家私有数据,提出了两种解决方案:1)将持久化任务投递到玩家业务协程执行;2)使用JSON深拷贝生成数据快照进行异步持久化。对于公共数据,推荐采用分片锁+细粒度读写锁的方案。最终建议分场景施策:玩家数据采用无锁快照方案,公共数据使用分片锁,严格避免直接遍历原map,从根本上规避并发风险。这些方案兼顾性能与安全性
2026-04-18 10:04:20
471
原创 游戏背包的两种设计方案
本文探讨了游戏背包系统的两种服务器设计方案:继承方式和组合方式。继承方式通过定义基础Item类和各类子类(装备、符文等),使用字典结构存储物品,支持JSON序列化/反序列化。组合方式则采用Go语言实现,将所有可能属性统一到Item结构体中,通过接口实现不同配置提供器。两种方案各有利弊:继承方式更符合OOP思想但依赖语言特性,组合方式更灵活但需要处理更多细节。设计选择应考虑编程语言特性和团队偏好,核心目标都是实现可扩展、高效管理的背包系统。
2026-02-14 11:15:00
913
原创 go结构体扫描
文章探讨了Java和Go语言中类/结构体扫描工具的使用场景与实现方法。在Java中,类扫描器常用于框架开发(如Spring),通过注解自动注册类实例;而在Go中,由于缺乏运行时反射机制,作者采用AST解析源代码的方式实现结构体自动扫描。文章详细介绍了使用Go的ast工具库解析结构体元数据的方法,并解决生产环境无法获取源代码的问题
2026-01-03 16:34:18
797
原创 游戏服务器使用actor模型
Actor模型是一种解决并发问题的分布式计算模型,通过独立计算实体(Actor)和异步消息传递消除共享状态和锁竞争。相比传统线程模型,Actor能均衡线程负载,减少分类和切换开销。实现上,Actor包含邮箱(二级队列)和消息处理逻辑,由线程池(一级队列)调度执行。关键优势在于任务均衡分配、避免线程冷热不均,并通过消息传递保证线程安全。典型应用场景包括高并发服务器,能有效提升系统吞吐量和稳定性。
2025-09-13 17:08:29
1132
原创 基于CSP模型实现的游戏排行榜
游戏排行榜作为游戏生态中的核心功能,不仅展示玩家实力,还促进社交互动和用户留存。然而,其技术实现面临并发访问控制和高效数据结构设计两大挑战。Java和Go分别通过ConcurrentSkipListMap和CSP模型(基于Channel的并发设计)实现排行榜容器,前者依赖共享内存和锁机制,后者通过消息传递避免锁竞争,但可能在高并发场景下成为性能瓶颈。
2025-05-24 16:49:14
1108
原创 游戏服务器之聊天频道设计
本文设计了一套简单通用的网络游戏聊天框架,旨在通过统一的API处理所有聊天频道。框架支持私聊、世界、公会、队伍等多种聊天频道,并考虑了消息的存储与推送机制。
2025-05-18 18:55:48
1189
原创 Go基于plugin的热更新初体验
对于一个部署在生产环境的项目来说,我们希望当代码出现bug的时候,可以不用重启进程。使用java可以非常方便的进行代码热更新。但,如果采用go呢?
2025-05-10 10:39:14
1544
2
原创 使用MVC模式开发cocos游戏功能
MVC是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),其核心思想是将数据处理、用户界面展示和业务逻辑分离,本文演示cocos如何使用该模式来开发业务功能。
2025-04-12 16:04:33
1353
原创 cocos与游戏服务器如何通信
在 Cocos Creator 中与游戏服务器进行通信,常见的方式有 WebSocket、HTTP/HTTPS,本文主要讲述如何使用websocket方式与服务器进行通信。通过实际代码阐释请求-响应模式,服务器推送模式的逻辑实现。
2025-03-29 12:15:00
1228
原创 分布服注册socket节点
聊天客户端通过http进行账号密码验证之后,需要绑定到某一个socket节点,之后,大部分聊天消息+推送消息可以通过该socket链接实时推送给客户端。本文讲述如何将socket节点注册到nacos服务,以便于聊天客户端通过http接口获得socket连接信息。
2025-03-08 18:45:00
589
原创 聊天服务器分布式改造
目前的聊天室是单节点的,无论是http接口还是socket接口都在同一个进程,无法承受太多人同时在线,容灾性也非常差。本文讲述如何对该聊天室进行分布式改造的目标和实现方式。
2025-03-08 01:00:00
2292
原创 游戏服务器任务系统设计
游戏任务系统是游戏中引导玩家进行游戏、增加游戏趣味性和玩家粘性的重要组成部分,本文介绍如何设计一套通用易于拓展的任务系统,兼容主线任务,每日任务以及其他类型。
2025-02-22 10:45:00
981
原创 websocket实现多人协作
多人协作是指两个或以上的个体共同参与并完成某项任务或项目。在技术上,可以使用websocket来提高开发与通信效率。本文介绍如何使用springboot的websocket实现多人协作通信,特别地,当服务器采用多节点部署,如何保证所有客户端都能接收到广播消息。
2025-02-16 14:30:00
1628
原创 使用jforgame快速部署游戏服务器
jforgame,是一个用java编写的轻量级高性能手游服务端框架。本文介绍如何使用该框架快速一个游戏服务器工程,即使是刚接触游戏开发的人员,也可以快速上手。
2025-02-15 12:15:00
1706
2
原创 go读取excel游戏配置
游戏服务器,配置数据一般采用csv/excel来作为载体,这种方式,策划同学配置方便,服务器解析也方便。本文讲述如何使用xcel配置格式来加载策划配置。
2025-01-19 16:30:00
1003
原创 聊天客户端本地数据库
在使用微信这一类聊天软件,如果客户端选择桌面版或者移动版,是可以访问之前的本地记录的。本文介绍如何使用嵌入式数据库使用这一目标。
2024-12-21 11:39:57
1387
2
原创 异步持久化策略对比
游戏服务器一般采用异步持久化方案,对玩家的数据保存作异步处理,减轻频繁读写数据库的压力。本文详细阐述不同的异步策略,并给予代码演示。
2024-12-15 15:34:06
507
原创 聊天在线与离线传输文件
微信只支持一种文件发送方式,就是发送方把文件发到文件存储服务,然后接收方从文件服务器进行下载。然而,在古老的QQ软件,是支持在线传输和离线传输(微信模式)。
2024-11-30 22:43:52
1814
原创 php日志系统
服务器日志是服务器运行过程中记录的各种信息的集合,它们对于系统管理员和开发人员来说具有重要的意义。例如, 调试,监控,行为分析等等。php自带一个log库,但不如第三方monolog功能齐全。本文通过monolog实现一个分类比较合理的日志工具。
2024-11-24 09:38:05
1262
原创 聊天适配多种消息格式
即时聊天软件有非常多的聊天内容格式,比如常用的文本,表情,文件,语音,视频,位置等等。对于这么多种格式,软件是如何传输消息,保存消息,以及客户端展示的呢。本文将介绍聊天各种格式的综合处理。
2024-11-23 12:19:54
930
原创 php消息路由
web刚开始发展的时候,没有专门的前端工程师, web开发人员经常是服务端,客户端开发一把梭。那时候,不管是业务逻辑,还是界面交互,都喜欢把某个业务的前后端代码放在同一个文件。例如,jsp,asp,php均是这种模式。例如,下面的订单管理页面,主要负责订单的增删查改这种模式,虽然界面写起来可能不是很漂亮(毕竟术业有专攻),但开发效率还是非常高的。因为服务端客户端都是同一个开发,接口联调如丝般柔顺,减少了沟通的成本。
2024-11-17 11:37:57
784
原创 php开发小游戏缓存持久化方案
如今,微信小游戏,H5小游戏非常火爆,这种休闲小游戏大部分都非常轻量级。用MMORPG,SLG那种架构模式来开发这种游戏,无疑是大材小用。对于这类小游戏,PHP不失为一种高效的开发语言。在实际操作中,为了减少数据库压力,考虑增设redis作为缓存中间件。本文介绍php如何结合使用redis以及mysql。
2024-11-17 10:05:49
1472
原创 云对象存储进阶
云对象存储在web开发非常常见,本文讲述云对象存储比较高级的知识,包括sdk兼容策略,客户端临时上传路径,cdn加速访问,资源防盗等。
2024-10-26 16:43:22
1816
原创 Go基本数据结构
JDK提供了如此多的数据结果,程序员只需了解每种数据结果的特点,即可应付大部分日常开发。而Go以简洁著称,只提供数组、切片以及映射3种基本数据结构。
2024-10-07 22:16:50
1457
原创 springboot的调度服务与异步服务实操
调度任务、异步任务,均为软件应用的常见功能。本文讲述如何使用springboot创建调度线程池与异步执行线程池,重点演示线程池参数以及DIY线程池方法。
2024-10-01 22:49:58
1628
原创 go项目多环境配置
Spring Boot 提供了一套灵活且强大的机制来加载配置文件,使得开发者能够根据不同的环境和需求轻松地管理配置。本文演示如何使用Go来实现同样的目标,支持多环境配置。
2024-09-22 16:15:00
1276
原创 Go语言设计的一些优点及缺陷
Go 语言的设计哲学强调简洁和效率。部分特性从代码工程最终的结果来看(静态),确实简洁舒服,然而,从开发过程(动态)来看,难道不会加大开发成本吗?本文尝试列举一些Go语言的优点和缺点,仅代表个人意见。
2024-09-22 10:45:00
1538
原创 Go缓存系统
缓存用于提高数据访问速度和系统性能。它通过在快速的存储介质中保存数据的副本,使得数据可以被更快地检索。本文尝试使用bigcache以及原生map,实现一套高效的缓存系统。
2024-09-16 18:34:32
1413
原创 Go搭建TcpSocket服务器
不可否认,go在网络服务开发有强大的优势。net库是一个功能强大的网络编程库,它提供了构建TCP、UDP和HTTP服务器和客户端所需的所有基础工具。java创建tcp服务器,需要引入netty,或者mina,学习成本比较大。而go只需要寥寥几十行代码,也可实现一个高性能的网络服务器。
2024-09-16 12:49:58
1457
原创 Go日志系统
服务器日志是服务器运行过程中记录的各种信息的集合,它们对于系统管理员和开发人员来说具有重要的意义。例如, 调试,监控,行为分析等等。本文介绍如何使用logrus库创建系统以及运营两大类日志工具。
2024-09-08 20:15:00
1555
原创 初识云函数
云函数(SCF)是一种无服务器(Serverless)计算服务,它允许开发者在不管理服务器的情况下运行代码。本文使用腾讯云演示云函数与层的使用,同时记录选择java构建层问题的疑难杂症。
2024-09-08 14:30:00
2917
原创 优雅的创建对象——类Builder模式
在软件工程中,建造者模式(Builder Pattern)是一种设计模式,用于构建复杂对象。这种模式将对象的构建过程与对象的表示分离,使得同样的构建过程可以创建不同的表示。本文分别对Java与Go如何构造复杂对象
2024-09-01 15:30:00
697
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅