Open jduarter opened 5 years ago
@jduarter I am willing to contribute. Please let me know.
This design is following some popular MMORPG server design, where lose some data when a crash is accepted. The right answer to this is something like WAL log system. I'm working on a proper exchange architecture, which is both high performance and persistence, and provide high availability guarantee. The early introduction is here.
In case matchengine quits unexpectedly (crash, SIGINIT, power issue... etc), application status is completely lost. State should be completely consistent to prevent critical data loss.
As an example case, consider MySQL connection is gone, some queries were pending to be committed to the database. If then the process unexpectedly quits, these pending MySQL statements will be lost.
This is a critical issue since queries will never be executed again when the process is restarted.
I'm working on a patch to store failed SQL queries in jobs so they can be re-executed again when the process restarts, causing the daemon to shutdown if any of the queries fail after restarting and successfully connecting to the database.
Any input/ideas are highly appreciated, I will try to publish the patch as soon as I've done testing.