自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 收藏
  • 关注

原创 mongodb的复制集整理

数据冗余:防止数据丢失高可用性:自动故障转移读扩展:支持从节点读取1. 使用副本集:请务必使用副本集(Replica Set)而非过时的 Master-Slave 架构2. 规划节点数:确保副本集中拥有投票权的成员(包括仲裁节点)总数为奇数3. 生产环境配置:对于重要的生产环境,更推荐的稳健配置是1个主节点 + 2个从节点,这样可以同时提供数据冗余和读扩展能力。

2025-10-31 10:36:45 654

原创 redis-哨兵模式配置整理

Redis 哨兵(Sentinel)是 Redis 官方提供的高可用性解决方案,用于管理 Redis主从架构,实现自动故障检测和故障转移。

2025-10-27 18:25:18 711

原创 redis-RDB/AOF-主从复制整理

RDB(Redis Database)是 Redis 的快照式持久化方式,通过在指定时间间隔内将内存中的数据生成二进制快照文件(dump.rdb)保存到磁盘AOF(Append Only File)通过记录所有写操作命令来持久化数据,以文本格式记录操作日志Redis 主从复制允许将一台 Redis 服务器的数据复制到多台从服务器,实现数据冗余和读写分离。

2025-10-24 14:48:56 1032

原创 游戏登录方案中常见的设计模式整理

模式类型适用场景优点缺点账号密码传统MMO、端游用户习惯成熟、控制力强密码管理负担、安全性依赖用户Token认证现代手游、Web游戏无状态、扩展性好Token管理复杂、过期处理OAuth2.0社交游戏、快速登录用户体验好、免注册依赖第三方、数据获取受限设备登录休闲手游极简体验、自动注册设备丢失问题、多设备冲突混合模式大型商业游戏覆盖广泛、灵活切换系统复杂度高、维护成本大。

2025-10-20 10:52:55 635

原创 基于skynet框架的一种游戏服登录模块设计

核心逻辑依赖2个服务模块,中心服务(center)和登录服务(login)

2025-10-17 20:05:58 909

原创 lua对象池管理工具剖析

一个高效的对象池实现,通过来减少内存分配和垃圾回收压力,特别适合频繁创建销毁对象的场景。

2025-10-17 11:36:53 570

原创 skynet.newservice接口分析

执行流程:在 launcher.lua 中:这是一个空的启动函数,即launcher 服务启动后立即进入消息循环状态,等待处理命令NORET 是一个特殊标记,表示这个命令不会立即返回结果skynet.launch 的底层实现skynet.launch 是 C 函数,在 skynet_server.c 中实现:它调用底层的 skynet_command 函数,命令为 “LAUNCH”关键点: 服务启动是异步的!时序图:服务初始化完成的通知当新服务初始化完成后,会通过文本协议通知 launch

2025-10-11 15:37:39 369

原创 常见的版本发布模式整理

【代码】常见的版本发布模式整理。

2025-10-10 19:26:46 748

原创 skynet debug_console控制台中debug指令使用

在skynet的debug会话中,

2025-10-10 16:09:14 372

原创 skynet-socket.lua源码分析

Skynet定义了7种socket消息类型。可以把socket.lua想象成一个。

2025-09-30 10:50:06 1047

原创 基于skynet框架业务中的gateway实现分析

这是最底层的网关服务器实现,封装了Skynet的socket操作,提供TCP连接管理的基础框架,其内部注册了"socket"类型的协议,通过gate将gate中的"socket"类型调用到gateserver中的对于指令。业务级别网关服务实例,增加了业务逻辑,如用户认证、超时检查等,启动网关服务时每个节点只需要启动一个就行,因为网络线程只有一个,启动后可以调用"lua"类型消息open,开启网关服务。主要分2类,一类是处理socket类型消息,一类是lua类型消息。

2025-09-30 09:34:26 981

原创 skynet.dispatch与skynet.register_protocol

register_protocol 关心的是“消息是什么”——如何编码、解码,这是全局的、通用的定义dispatch 关心的是“收到消息后怎么办”——业务逻辑,这是每个服务私有的、特定的行为这种设计极大地提高了灵活性,可以定义一种通用的序列化格式(如 Protobuf),然后不同的服务可以根据自己的需求用不同的方式处理同一种格式的消息消息的格式和处理逻辑被完全分开了,网络层或消息队列只负责传递二进制数据。

2025-09-19 12:51:09 896

原创 基于skynet的配置加载-共享-热更分析

1. 启动配置管理服务 (constloader) 首先启动它立即调用 initial(),将所有配置文件通过 sharetable.loadfile 加载到共享内存服务完成初始化,等待接收消息2. 订阅其他需要关注配置变化的服务(如游戏逻辑服务)启动后,会调用 constloader 的 watch 方法进行订阅,constloader 将这些服务的地址记录下来3. 热更新。

2025-09-16 10:47:58 948

原创 基于跳跃表的zset实现解析(lua版)

zset是指有序集合,这是redis中的一种数据结构,可以存储成员和对应的分数,并且按照分数排序,原理是基于跳跃表实现。

2025-09-12 11:16:14 1246

原创 Skynet火焰图swt搭建

SWT 是一个用于 Skynet 的火焰图和调试工具,可以在运行时随时启停性能分析器,方便调试线上问题最近尝试接入swt,用于监控skynet节点服务状态以及debug,以下是接入时的一些心得,特此记录,仅供参考。

2025-09-11 14:49:02 619

原创 CentOS7下的ElasticSearch部署

选择 Java 11 对应的编号(通常为 /usr/lib/jvm/java-11-openjdk-*/bin/java)修改后需重启服务:sudo systemctl restart elasticsearch。应返回包含用户信息的 JSON 响应。按提示交互式设置新密码。

2025-07-18 19:29:59 820

原创 curl命令使用

输出目标 URL 的内容到终端2. 保存文件到本地HTTP 请求方法1. GET 请求(默认)2. POST 请求3. PUT 请求4. DELETE 请求5. GET 请求处理 HTTP 头部1. 添加自定义请求头2. 查看响应头文件上传与下载1. 上传文件2. 断点续传主要目的是从指定的 URL 下载文件。当下载过程因各种原因(如网络中断、系统崩溃等)中断后,再次使用该命令时,-C - 选项可以让 curl 尝试从上次中断的位置继续下载文件,实现断点

2025-07-15 19:31:56 570

原创 lua中检查静态常量是否正确引用

因在项目开发中会出现引用了不存在的常量,为了方便检查这种情况,所以想着添加针对性脚本check。

2025-07-11 10:57:47 310

原创 基于vmstat和ps的进程cpu-mem指标分析脚本

最近因项目中,需要对集群服务进行进程级别的压测,所以添加了基于vmstat和ps -aux指令的进程性能指标分析脚本,支持设置监测的起始时间戳与持续时长,以及监测频次,其中基于ps的监控脚本可支持设置目标进程,可进行常见场景下的压测,用于分析性能瓶颈15990324 K total memory 系统物理内存总量8829904 K used memory 已使用的物理内存11871544 K active memory 活跃内存2284688 K inactive memory 非活跃内存。

2025-06-27 14:50:58 841

原创 skynet源码学习-socket_server相关模块

主要分析文件:socket_buffer.h、socket_epoll.h、socket_info.h、socket_kqueue.h、socket_poll.h、socket_server.h、socket_server.c。

2025-06-23 10:58:57 814

原创 skynet源码学习-skynet_server服务管理模块

【代码】skynet源码学习-skynet_server服务管理模块。

2025-06-19 10:53:06 1243

原创 skynet源码学习-skynet_main入口

【代码】skynet源码学习-skynet_main入口。

2025-06-18 12:22:08 444

原创 skynet源码学习-skynet_env守护进程

的全局配置存储,支持在C层和Lua层之间共享配置信息。功能:初始化环境变量系统。功能:获取环境变量值。

2025-06-17 19:47:21 920

原创 skynet源码学习-skynet_daemon守护进程

参数:pidfile - PID文件路径。功能:写入并锁定PID文件。功能:初始化守护进程。

2025-06-17 18:07:38 707

原创 skynet源码学习-skynet_monitor监控

检测服务间消息处理是否陷入死循环或长时间阻塞。

2025-06-16 19:48:15 1070

原创 skynet源码学习-skynet_malloc/malloc_hook内存分配模块

skynet的内存分配模块,它主要由三部分文件组成:malloc_hook.c、malloc_hook.h和skynet_malloc.h。这个模块的主要功能是提供内存分配函数,并跟踪每个服务(由handle标识)的内存使用情况。同时,它集成了jemalloc来提升内存分配性能。

2025-06-16 17:56:06 1142

原创 skynet源码学习-skynet_mq队列

设计要点:全局队列是服务队列的链表。参数:handle - 服务句柄。功能:将服务队列加入全局队列。功能:创建服务私有消息队列。

2025-06-13 11:03:41 1138

原创 skynet源码学习-skynet_handle服务句柄管理

1. handle_name 结构2. handle_storage 结构(核心管理结构)1. void skynet_handle_init(int harbor)2. uint32_t skynet_handle_register(struct skynet_context *ctx)3. int skynet_handle_retire(uint32_t handle)4. void skynet_handle_retireall()

2025-06-12 11:15:38 807

原创 skynet源码学习-skynet_timer定时器

时间轮分为5个数组:- near: 一个大小为256的数组,表示最近256个单位时间(10ms)内将要触发的定时器1. skynet_timer_init()2. skynet_timeout(handle, time, session)3. timer_add(T, arg, sz, time)4. add_node(T, arg, sz, time)5. timer_shift(T)6. timer_execute(T)7. dispatch_list(current)

2025-06-10 14:03:25 783

原创 shell中与>和<相关的数据流重定向操作符整理

在Shell中,< 和 > 相关的操作符主要用于输入输出重定向,输出重定向操作符 > 作用:将命令的标准输出覆盖写入到指定文件中,如果文件不存在,则创建该文件;如果文件已存在,则会清空文件内容后再写入(错误信息不会输入进去)>>>2>2>>&> 或 >&&>><<<<<<2> /dev/null

2025-05-30 18:20:06 916

原创 docker安装部署学习

Docker 是一种开源的容器化平台,用于将应用程序及其依赖打包成轻量级、可移植的容器,容器是一种标准化的软件单元,可以在任何支持 Docker 的环境中快速部署和运行,简单来说,Docker 解决了开发、测试和部署过程中 “环境不一致” 的难题。

2025-03-18 11:56:09 1268

原创 什么是session与token

Session是服务器为每个用户创建的临时身份凭证,用于跟踪用户在服务器端的活动状态,例如玩家登录后,服务器生成唯一Session ID(如a1b2c3d4),并在服务端存储对应的玩家数据(如用户ID、登录时间、角色属性等)

2025-03-13 12:24:51 1169

原创 TCP连接过程图解

TCP(传输控制协议)是一种面向连接、可靠传输的通信协议,属于互联网协议套件(TCP/IP)的核心协议之一,工作于传输层

2025-03-11 16:05:06 392

原创 linux下的网络抓包(tcpdump)介绍

抓包原理抓包工具通过将网络接口设置为混杂模式(Promiscuous Mode)来工作,在混杂模式下,网络接口会接收所有经过它的数据包,而不仅仅是目标地址为本机的数据包,抓包工具会捕获这些数据包,并将其存储或显示出来,以便后续分析数据包结构数据包通常由头部和数据两部分组成,头部包含了源地址、目的地址、协议类型、端口号等信息,而数据部分则是实际传输的内容,不同的协议有不同的头部结构,了解这些结构有助于分析数据包协议分析常见的网络协议如。

2025-03-11 12:33:08 1890

原创 centos中使用svn整理

上述命令会将 svn://localhost/svnrepo 仓库中的内容检出到 ~/myproject 目录。-m 参数用于添加提交说明,描述本次提交所做的更改。

2025-03-07 10:58:44 1000

原创 MongoDB Compass 使用说明

功能:顾名思义,用于新增一个MongoDB的连接My Queries 通常是数据库管理工具(如 MongoDB Compass)中的一个功能模块,可保存、管理和复用自定义的查询语句,通过将常用的查询保存到 My Queries 中,用户可以避免每次使用相同查询时都重新输入,提高查询效率,同时也方便对查询进行组织和管理: 新增一个数据库refresh:刷新view:切换视图展示方式Sort by: 设置数据库/集合以什么方式排序↑/↓:设置正序或倒序(存储大小),(集合数量),indexes。

2025-03-06 12:13:09 4604

原创 MongoDB Compass中MONGOSH常用查询整理

MongoDB Compass 是一款可视化的 MongoDB 数据库管理工具,其中的 MongoSH(MongoDB Shell)提供了丰富的指令用于查找数据。

2025-02-28 19:41:01 1594

原创 linux命令行操作mongo整理

如果集合中的文档数量非常多,一次性显示所有文档可能不太方便,可以使用 skip() 和 limit() 方法进行分页查看。在 MongoDB 中,没有“表”的概念,与之对应的是“集合(collection)”,例如 global.users 中 global。若 MongoDB 启用了身份验证,需要在执行查询操作之前先进行身份验证。表明 MongoDB 启用了身份验证机制,而当前的会话没有提供有效的身份凭证,因此没有权限执行查询操作。若身份验证成功,db.auth() 方法会返回 1;

2025-02-28 17:44:40 1755

原创 DeepSeek本地化部署-windows版

Ollama 是一个开源的 AI 聊天机器人框架,它是一个通用、可扩展和灵活的平台,允许开发者构建复杂且高度定制化的智能系统主要特点通用性:Ollama 可以被集成到各种应用场景中,从简单的对话服务到复杂的 AI 应用可扩展性:开发者可以根据需求添加各种功能和模块,支持多种语言的交互灵活性:支持多种数据源(如文本、图像、音频等),能够生成多样的内容主要用途自然语言处理 (NLP) 应用编程自动化工具智能客服系统内容生成工具数据分析和预测官网地址。

2025-02-05 14:53:06 1276

原创 rust学习-rust中的保留字

保留字是语言中预定义的标识符,不能用作变量名、函数名或其他自定义标识符,Rust的保留字大致可以分为两类:已使用的保留字和未来可能使用的保留字。

2025-01-24 10:19:42 695

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除