zinx icon indicating copy to clipboard operation
zinx copied to clipboard

关于消息序列化的问题

Open lihaoCH opened this issue 6 years ago • 4 comments

worker池处理业务时是否会存在消息序列化的问题,如果一个玩家的多个消息需要按顺序处理,worker池好像不能保证先来的消息先处理完

lihaoCH avatar Jul 24 '19 03:07 lihaoCH

是可以的,因为每个worker和玩家业务的链接是一一对应的。 你可以理解为一个客户端的是绑定一个链接的。链接和worker是一一对应的,如果链接依次发消息,消息也是顺序的保存在对应的worker队列中,那么对于每个链接,实际上消息是不会发送给其他的worker上,这样的worker从队列另一头会一个一个消息取出,就会保证每个客户端的消息顺序问题。

aceld avatar Jul 24 '19 04:07 aceld

详细代码在zinx/znet/msghandler.go中,您可以仔细看看,再有问题,再讨论。

aceld avatar Jul 24 '19 04:07 aceld

好的看到了,谢谢,之前没有细看根据ConnID对WorkerPoolSize取余这个计算,其实同一链接这个值是个定值。随便问一下现在好像还没有加入数据库相关的操作,后续版本会加入吗?

lihaoCH avatar Jul 24 '19 04:07 lihaoCH

zinx应该不会链接数据库,zinx实际上是一个网络开发sdk,不会耦合到db层。

aceld avatar Apr 08 '23 15:04 aceld