[DiscordArchive] also splitting it is nice but would there be only 1 of each ?
[DiscordArchive] also splitting it is nice but would there be only 1 of each ?
Archived author: walkline • Posted: 2023-07-13T16:35:29.833000+00:00
Original source
Yes, I agree that there would be complexity and maintenance overhead associated with a microservice architecture. However, orchestration tools like k8s can help alleviate some of these challenges. My end goal is to provide a Helm chart package for this, which will further simplify deployment and management.
Regarding latency, there shouldn't be a significant difference between the semi-monolithic and microservice approach. At least, that's what I observe at the moment. Latency can increase if there is a long chain of requests between microservices. However, in this case, most of the microservices are independent, with small dependencies between them, such as the auction house relying on the mailing service. These dependencies are not latency-sensitive.
By the way, when I mention a microservice architecture, I don't mean rewriting the entire core with microservice architecture. The idea is to utilize microservice architecture only for the functionality that needs to be moved outside of the worldserver to achieve scalability.
Archived author: Rymercyble • Posted: 2023-07-13T16:37:44.815000+00:00
Original source
maybe im blind but how are instances handled in that schema ? is it meant to be worldserver lets say for map id 631 (ICC) ?
Archived author: walkline • Posted: 2023-07-13T16:38:43.358000+00:00
Original source
In my case all services at the moment are scalable, there could be some consistency issues but I guess game design would tolereit them. But I'm okey with idea that some of services can be unscalable.
Archived author: Rymercyble • Posted: 2023-07-13T16:40:01.004000+00:00
Original source
i dont rly care about scalability nobody in this community will ever run server that big and if yes blizz will shut him down anyway i meant it purely from that perspective of quality of life that in case of crash there is service to take over
Archived author: Rymercyble • Posted: 2023-07-13T16:41:29.034000+00:00
Original source
mainly for those small services like chat
Archived author: Rymercyble • Posted: 2023-07-13T16:42:00.075000+00:00
Original source
i dont think its very worth it to do that for world server and have multiple of them per map
Archived author: Foe • Posted: 2023-07-13T16:44:27.237000+00:00
Original source
I agree, in the end the "worldserver" should in essence only handle the map-related stuff in a semi-monolithic fashion, with designated/assigned maps, I would even go as far as renaming it the "Map" service
Archived author: Foe • Posted: 2023-07-13T16:44:43.566000+00:00
Original source
Everything else that happens in the world update loop could essentially be moved into separate services
Archived author: Foe • Posted: 2023-07-13T16:47:22.638000+00:00
Original source
But yes, in general there's a ton of leeway in the latency aspect with something like an mmo, all the precision really happens in the map update loop anyway. The server runs just fine on a 50ms internal latency vs a 1ms internal latency, so I don't think it's a massive issue
Archived author: walkline • Posted: 2023-07-13T17:45:57.763000+00:00
Original source
I can explain how this is implemented in ToCloud9 at the moment. Each worldserver needs to have information in its configuration about the maps it can theoretically handle. In most cases, this value would be set to include all maps. Upon startup, the worldservers register themselves with the servers-registry service and provides information about maps that it can handled. Using the knowledge of the worldservers and the maps they can handle, the servers-registry dynamically distributes all the maps among them, taking into account map weights (https://github.com/walkline/ToCloud9/blo...weights.go).
For example, if you have four servers, the maps should be distributed something like this:
Server 1 Map IDs: 0 (Eastern Kingdoms), 33, 34, and some other maps with medium amounts of low weight.
Server 2 Map IDs: 1 (Kalimdor), 209, 229, and some other maps with medium amounts of low weight.
Server 3 Map IDs: 530 (Outlands), 531, 532, and some other maps with a high amount of low weight.
Server 4 Map IDs: 571 (Northrend), 572, 574, and some other maps with a low amount of low weight.
In summary, the maps should be evenly distributed based on their weight.
However, if you specifically want to assign only one server to handle a particular map, you can start a worldserver and specify that it can theoretically handle that specific map. In your case, it would be map 631.