26-07-2019, 04:43 PM
Effectivement j'ai pensé au push en écrivant mon message.
Pour la granularité plus fine, je pensais à quelque chose de transactionnel. Par exemple tu veux modéliser du commerce entre deux entités. Mais tu as genre 100K joueurs sur un serveur unique (et pas une "partie") donc tu n'as pas tout dans le même state – forcément. Tu peux donc envoyer une commande à deux states de joueurs, l'une qui sera traitée en vendeur (parce que command.vendor_id === player.id) et l'autre en acheteur. Ensuite tu génères deux events qui vont, pour l'un, augmenter sa thune et diminuer son stock d'herbes magiques, l'autre l'inverse.
Si un des deux events est rejetté mais pas l'autre, le state global et morcelé de ton jeu n'est plus cohérent.
D'après ce que j'ai lu, CQRS sert a améliorer perf et scalabilité mais à condition de pouvoir toujours modifier de façon unitaire chaque élément. Est-ce que tu connais une solution fréquemment utilisée pour ça ?
Perso j'ai fait un système de queue tout simple qui gère ça, et je modifie mon state selon le principe suivant : d'abord je check que tout est bon, et si oui alors j'écris sans gestion d'erreurs puisque ça passe. Mais il n'est pas question de ségrégation des queries.
Pour la granularité plus fine, je pensais à quelque chose de transactionnel. Par exemple tu veux modéliser du commerce entre deux entités. Mais tu as genre 100K joueurs sur un serveur unique (et pas une "partie") donc tu n'as pas tout dans le même state – forcément. Tu peux donc envoyer une commande à deux states de joueurs, l'une qui sera traitée en vendeur (parce que command.vendor_id === player.id) et l'autre en acheteur. Ensuite tu génères deux events qui vont, pour l'un, augmenter sa thune et diminuer son stock d'herbes magiques, l'autre l'inverse.
Si un des deux events est rejetté mais pas l'autre, le state global et morcelé de ton jeu n'est plus cohérent.
D'après ce que j'ai lu, CQRS sert a améliorer perf et scalabilité mais à condition de pouvoir toujours modifier de façon unitaire chaque élément. Est-ce que tu connais une solution fréquemment utilisée pour ça ?
Perso j'ai fait un système de queue tout simple qui gère ça, et je modifie mon state selon le principe suivant : d'abord je check que tout est bon, et si oui alors j'écris sans gestion d'erreurs puisque ça passe. Mais il n'est pas question de ségrégation des queries.