Skip to content

请教 sharetable 的使用方式 #1429

Answered by tqing1128
tqing1128 asked this question in Q&A
Discussion options

You must be logged in to vote

感谢大家的建议,我总结了下:

配置表管理方式:
1、小表多 key
优点:使用灵活,服务按需求初始化使用,更新也比较轻量
缺点:因为一个进程中 sharetable 服务只有一个,如果使用动态启动和释放的服务(如每个玩家一个 agent),在并发启动时,服务数量越多,服务使用的配置表越多,启动的时间越久。

2、大表少 key(极端情况所有配置表一个 key)
优点:服务初始化配置表速度快。
缺点:不适合使用 sharetable.update 热更新

热更新方式:
1、使用 sharetable.query 热更新
优点:热更新到所有服务速度很快,不需要替换数据,也不会引起内存上涨
缺点:使用时要从配置表的 root 进行索引,不可引用到 local 变量使用

2、使用 sharetable.update 热更新
优点:使用更灵活,可以保存配置到 local 变量
缺点:配置中的 table 数量越多,内存上涨越大,替换数据的时间越长。内存上涨是 sharetable.update 中 replace_map 和 resolve_replace() 引起。10w+ table 每个服务上涨 5m 左右内存。如果有数量较多的服务使用一个配置,热更新该配置时,进程内存可能暴涨。

每个玩家一个 agent 代理引起的问题:
1、并发启动 agent 时,因 sharetable 服务中有一个,会形成单点问题
解决:使用 agent pool 提前加载

2、热更新慢
解决:使用小表多 key。因为 sharetable 服务的单点问题,agent 更新会排队,并不会造成进程 CP…

Replies: 14 comments 81 replies

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
3 replies
@tqing1128
Comment options

@sniper00
Comment options

@tqing1128
Comment options

Comment options

You must be logged in to vote
20 replies
@cloudwu
Comment options

@Gowa2017
Comment options

@tqing1128
Comment options

@Gowa2017
Comment options

@JieTrancender
Comment options

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
29 replies
@tqing1128
Comment options

@sniper00
Comment options

@tqing1128
Comment options

@sniper00
Comment options

@tqing1128
Comment options

Comment options

You must be logged in to vote
1 reply
@tqing1128
Comment options

Comment options

You must be logged in to vote
11 replies
@haoxianhan
Comment options

@sniper00
Comment options

@tqing1128
Comment options

@zhangshiqian1214
Comment options

@tqing1128
Comment options

Answer selected by tqing1128
Comment options

You must be logged in to vote
1 reply
@terry8210
Comment options

Comment options

You must be logged in to vote
4 replies
@tqing1128
Comment options

@ImSven
Comment options

@ImSven
Comment options

@tqing1128
Comment options

Comment options

You must be logged in to vote
4 replies
@sniper00
Comment options

@sniper00
Comment options

@hanxi
Comment options

@tqing1128
Comment options

Comment options

You must be logged in to vote
1 reply
@JieTrancender
Comment options

Comment options

You must be logged in to vote
1 reply
@ImSven
Comment options

Comment options

You must be logged in to vote
4 replies
@terry8210
Comment options

@zhangshiqian1214
Comment options

@terry8210
Comment options

@zhangshiqian1214
Comment options

Comment options

You must be logged in to vote
2 replies
@zhangshiqian1214
Comment options

@cloudwu
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet