Assign a workder to each link, avoid interactions when multiple links are processed by the same worker (为每个链接分配一个workder,避免同一worker处理多个链接时的互相影响)#231
Conversation
…ed and packaged during massive online player interaction from N^2 to N (优化广播消息,将大规模在线玩家互动时消息序列化与打包的次数从N^2降到N)
… are processed by the same worker (为每个链接分配一个workder,避免同一worker处理多个链接时的互相影响)
… are processed by the same worker (为每个链接分配一个workder,避免同一worker处理多个链接时的互相影响)
|
Assign a workder to each link, avoid interactions when multiple links are processed by the same worker |
… are processed by the same worker (为每个链接分配一个workder,避免同一worker处理多个链接时的互相影响)
|
The implementation idea is to set the workerPoolSize to MaxConn when starting up, and create a FreeWorkerIDMap that contains all worker IDs. (实现的思路是,启动时将workerPoolSize设为MaxConn, 并创建一个包含所有workerID的FreeWorkerIDMap。 |
0be5939 to
37b1fe5
Compare
# Conflicts: # zinx_app_demo/mmo_game/core/player.go # znet/msghandler.go
|
@LI-GUOJIE nice, 今天详细看了PR,感觉思路很棒。 |
|
@LI-GUOJIE 我有几个疑问,希望给一些解答哈: 1,从workerID 分配制的, 和之前轮询的会有什么本质的区别,比如适合解决哪些场景的调度,其优势突出的地方希望能提示下。 感谢啦 |
感谢作者的肯定 :D |
之前的轮询方式 新版分配机制 适用场景: |
|
了解了,我看修改的部分是兼容之前的逻辑的,只不过需要在配置中增加 还有几点小建议,辛苦 @LI-GUOJIE 看看是否可以修正,重新提交下。 1) 2)另外在内部进行对 3)该功能为非对外接口功能,类似 辛苦再简单修正下,重新commit下哈。 再次感谢提交PR!辛苦!
|
|
1)OneWorkerEachConn的确太冗长了,就改成Bind吧。如果WorkerMode不存在,或配置为""或“Hash",都用之前的取余分配。 |
…case of exception. (优化工作模式名称,优化异常情况下worker的分配。)
There was a problem hiding this comment.
其他都review哈,没问题 👍🏻! 但是这个decode的转换还不确定。
There was a problem hiding this comment.
这里删除了类型转换,是因为变量本身就是int64类型:
frameLength := d.getUnadjustedFrameLength
然后,.golangci.yaml中有一行:
unconvert // 禁止冗余的类型转换
这导致PR无法通过GIthub的自动检测。
作者辛苦了😄
No description provided.