million_game_server icon indicating copy to clipboard operation
million_game_server copied to clipboard

现在有出版消息了吗?顺便问一下有否设计事务相关内容

Open zengzizhao opened this issue 4 years ago • 11 comments

主要关心skynet下多 actor 协作的事务问题,因为消息发送机制多个 actor 需要协作时,能否有事务来保证一系列操作的过程中,状态不会被破坏,需要失败后的回退机制,这在网游手游的游戏逻辑中太普遍了,请问书中有涉及这块吗?

zengzizhao avatar Jan 09 '21 02:01 zengzizhao

按照skynet的设计,它默认单节点内的actor通信是安全的。更多的是在业务分割时把有事务需求的actor安排在一个节点内,这样可以避免因底层通信问题导致的事务不一致。

事务机制在数据库方面应用的比较多,游戏服务端业务逻辑上使用强事务机制的见到的似乎并不是很多。一方面是在一致性、吞吐量几个方面做取舍,和具体业务需求有关;另一方面是会使系统复杂度增加许多。遇到有事务需求,一般可以有三种替代方案。 其一是可以通过架构层面去规避,比如把强交互的actor放到同个节点,或者减少拆分。 其二是使用数据库的事务机制,通过数据库来做事务的中转。 其三是保留每一步的记录,万一出问题可以查询。比如充值系统每一步都会记录日志。

luopeiyu avatar Jan 10 '21 03:01 luopeiyu

举个例子,如果我需要买点东西,先从银行查询余额,然后从商店获取一个物品,然后去银行扣掉钱,再把物品加到背包里。这个过程会涉及多个 actor ,整个过程又需要是一个事务,不要在执行这个事务过程中,有任何涉及的 actor 状态改变。 按上面回复的意思,那这个需求中也不需要有商店、银行之类的actor了,是不是不需要多个actor了,就只存在一个“我“这个actor?就不存在强一致性了?貌似不会这么组织数据吧

zengzizhao avatar Jan 14 '21 06:01 zengzizhao

书稿中正好有个类似的例子,虽然不是说事务,但涉及到银行的例子。 算是通过业务逻辑去规避一些事务问题。

相关部分: aaa1 aaa2

luopeiyu avatar Jan 14 '21 14:01 luopeiyu

好的,期待

zengzizhao avatar Jan 18 '21 02:01 zengzizhao

书的上市时间确定了吗,期待在年前可以拜读大作

zengzizhao avatar Jan 18 '21 02:01 zengzizhao

也特别期待,刚刚问了下编辑,还在文学修改阶段。估计还要一小段时间

luopeiyu avatar Jan 24 '21 15:01 luopeiyu

罗老师这个新内容比 https://github.com/TrinityCore/TrinityCore 如何?你的unity网络第二版我终于快读完了,很好,学了很多东西。

zgbjmy2009 avatar Feb 07 '21 14:02 zgbjmy2009

具体上市时间现在是否确定了?

zengzizhao avatar Feb 24 '21 03:02 zengzizhao

具体上市时间现在是否确定了?

至少要年中了TAT

luopeiyu avatar Mar 01 '21 11:03 luopeiyu

有具体的出版时间了吗

zengzizhao avatar Apr 10 '21 03:04 zengzizhao

这几天网店陆续上架了^_^ 谢谢大家的等待

luopeiyu avatar Aug 31 '21 05:08 luopeiyu