当前位置: 首页 > news >正文

skynet——sharetable学习

概念

进程内多 Lua VM 之间的数据共享机制

解决问题

skynet 每个服务是独立 Lua VM,如果 100 个服务各 load 一份 500KB 的配置表,就是 50MB 浪费。

演进过程

sharedata(老方案,云风早期设计)

实现思路

  1. 由一个 sharedatad服务把 table 序列化成 C 层的 lightuserdata​ 存起来

  2. 其他 VM 通过 sharedata.query(name)拿到这个指针

  3. 每个 VM 用 metatable 代理​ 从 lightuserdata 里查字段,并建 proxy 缓存已查过的 key

    配置表 → C 层 lightuserdata ←→ 各 VM 通过 metatable+proxy 访问

优点:惰性展开,初次 query 快,热更后旧数据易回收

缺点:每次访问要走 metatable → C → 回 Lua,proxy 随服务数膨胀,访问慢、内存占用随服务数涨

sharetable(2019 年后新方案)

直接改了 Lua VM 的实现,允许多个 VM 共享只读的原生 Lua table,且不参与 GC

优点:等价于访问本地 Lua table,无 metatable、无 proxy、不进 GC,实测比 sharedata 快 5~25 倍

缺点:热更麻烦——旧 table 要等所有引用服务退出才能释放;C 层内存占用更大

选型口诀

💡 不常更新的大配置用 sharetable,常更新的小配置用 sharedata

  • 数值表、道具表、技能表 → sharetable(一次加载反复读)

  • 运营活动配置、开关类 → sharedata(热更友好)

http://www.jsqmd.com/news/1141922/

相关文章:

  • 如何快速备份QQ空间历史数据:GetQzonehistory完整指南
  • WSEN-ISDS IMU与PIC18微控制器的运动感知系统设计
  • KKManager:Illusion游戏模组管理终极解决方案
  • 2026年实测12款论文AI智能降重工具,效果最稳的竟然是它!
  • 融资担保比例:杠杆博弈中的“安全砝码”
  • 2026年天水塑料颗粒回收:揭秘环保新趋势,哪家厂家更靠谱?
  • MC6470与R7FA4M3AF3CFB144的高精度运动控制方案
  • 嵌入式系统2x2键盘矩阵优化设计与实现
  • ICM-42605与PIC18F87J10实现高精度6DOF运动追踪
  • ADS127L11与STM32F401RE高精度数据采集方案详解
  • 揭秘伪装备份钓鱼攻击:如何保护你的密码管理器安全
  • 刚学 Java 集合框架的时候,我被这几个基础问题卡了很久
  • Parsec VDD虚拟显示器终极指南:如何实现完美游戏串流体验
  • 想靠计算机拿高薪?2026 热门赚钱技能大盘点,各赛道前景与收入一目了然
  • MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第二节:WHERE 条件查询
  • GWAS数据整合的终极指南:如何用gwasglue连接不同分析工具
  • 华硕笔记本性能管家:GHelper轻量级控制工具完全指南
  • 番茄小说下载器:5分钟学会免费下载番茄小说的终极指南 [特殊字符]
  • 5分钟快速上手:Buzz本地离线语音转录工具终极指南
  • 百考通「降重+降AI」来帮你用更自然的方式重新组织论文
  • GTA5线上小助手:解锁洛圣都无限可能的终极工具集
  • PE不饱和聚酯木器漆基础知识
  • 百考通「降重+降AI」帮你避开那些莫名其妙的技术误判
  • 基于PIC32的高效数字电源设计与实现
  • SpringBoot 全局异常处理与日志记录——统一规范实战
  • 2026最新8款团队编程协作平替工具权威实测合集
  • 如何快速掌握BS-RoFormer:音乐分离深度学习模型实战问题解决方案指南
  • 基于TPAFE0808与PIC24的多通道信号采集系统设计
  • 华硕笔记本性能控制终极指南:G-Helper轻量级工具完整教程
  • Python 多重比较 5 种校正方法实战:Bonferroni vs FDR vs Holm vs Sidak vs Tukey