<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sharedata on KK的博客</title><link>https://spin6lock.github.io/tags/sharedata/</link><description>Recent content in Sharedata on KK的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 07 Jan 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://spin6lock.github.io/tags/sharedata/feed.xml" rel="self" type="application/rss+xml"/><item><title>关于 sharedata 的使用</title><link>https://spin6lock.github.io/2026/01/07/%E5%85%B3%E4%BA%8Esharedata%E7%9A%84%E4%BD%BF%E7%94%A8.html</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0800</pubDate><guid>https://spin6lock.github.io/2026/01/07/%E5%85%B3%E4%BA%8Esharedata%E7%9A%84%E4%BD%BF%E7%94%A8.html</guid><description>&lt;p&gt;最近上了全节点热更配置表。起因是有一次热更配置表时没有覆盖全节点，导致数据不一致而 traceback，中断了一个重要流程。由于读表服务和目标服务的相关性比较隐蔽，热更 review 时没能发现这个问题，于是决定后续所有配置表都采用全节点热更。&lt;/p&gt;</description></item><item><title>当lua_sharedata碰上上限</title><link>https://spin6lock.github.io/2024/10/14/%E5%BD%93lua_sharedata%E7%A2%B0%E4%B8%8A%E4%B8%8A%E9%99%90.html</link><pubDate>Mon, 14 Oct 2024 00:00:00 +0800</pubDate><guid>https://spin6lock.github.io/2024/10/14/%E5%BD%93lua_sharedata%E7%A2%B0%E4%B8%8A%E4%B8%8A%E9%99%90.html</guid><description>&lt;p&gt;最近在使用sharedata共享配置表的时候遇到了问题，报了stack overflow，&lt;a href="https://github.com/cloudwu/skynet/issues/1981"&gt;最小复现的例子贴在这里了&lt;/a&gt;。之前因为忙，没有细读过sharedata 的代码，这次事故正好临急抱佛脚读一遍，匆忙记点笔记，以后好回忆起来。sharedata是为了不同服务之间共享配置表而诞生的，通过sharedata接口拿到的是一个 c 的代理对象，并不直接持有配置表本身。正是通过这个代理，实现了配置表的无感热更，以及服务之间的配置内存共享。对于字符串来说，这个C代理持有的并不是字符串本身，而是一个索引，指向lua栈上的一个位置，真正需要的时候，再去lua栈上去拿这个字符串。在初始化的时候，会用一个 table来做字符串的去重，如果是一个新的字符串，则推到栈上并将栈的位置记录下来。以后这个字符串再次出现，也只会用同一个索引来代表，有点类似lua本身的短字符串共享。&lt;/p&gt;</description></item></channel></rss>