Dynmap-Forge/Fabric

Dynmap-Forge/Fabric

888k Downloads

Use multiple servers to render a map

Chklang opened this issue ยท 4 comments

commented

Feature Description: Use multiple servers to render a map

Like Jenkins with "jenkins agent", it would be great if we can use multiple servers to execute the render queue. I've 3 Intel Nuc and 1 Server, but i can use only the server which execute minecraft server.

I've begin to look your code, i think that maybe i can try a thing to do a pull request, but if you have some suggestions for modifications it would be great.

commented

This sounds cool but definitely outside the scope of what Dynmap is intended to do. I won't close this but it will be a low priority request for sure.

commented

An alternative system would be to use a shared folder through 1 of:

  • [single system] bind-mounting on NIX systems. Performance-wise the fastest, and not terribly hard to script, but typically requires root access.
  • [single system] folder symlinks on any system which support them (alternatively, folder junctions on Window$; typically Admin rights required in any case). Performance-wise the 2nd fastest, and typically doesn't require root access.
  • [multi-system] Network File System (NFS) or Common Internet File System aka Single Message Block (CIFS aka SMB, primarily with Window$) or Secure File Transfer Protocol (SFTP; best option) or FTPS (File Transfer Protocol with SSL/TLS encryption) share. Performance-wise the 4th fastest (slowest), especially in the case of the FTP-based ones.
  • [multi-system] a distributed filesystem. Performance-wise the 3rd fastest, I imagine.
commented

My current map size is around 158GB large, rendering this over the course of 3 servers without copying or corrupting the world by modifying the session.lock would be an absolute pain. I could see this easily working on a smaller scale, but my current understand of how Dynmap loads chunks and renders them can be improved upon instead, making features like this obsolete or difficult to setup for no particular good reason..

commented

If think that the best way is to create a new "server" implementation, which expose the real server implementation (bukkit, forge...) over tcp to load chunks.
Now i must to understand how dynmap "execute" the render to delegate the renderer with the tcp layer to render it on another computer. I've right?