I have a great deal of experience with Aerospike in high throughput, low-latency environments, and have come to love it, although I have a new need now that doesn’t seem to be the focus of any popular NoSQL solutions, so I am setting forth on a mission to accomplish this using Aerospike.
The goal is to create a widely dispersed cluster (across data centers and continents) of application servers that can each independently carry out their work without a dependency on any other servers. Each application server has everything it needs to complete its work, however there is shared data that needs to be synchronized between all servers in near real-time, which I hope to accomplish using Aerospike. This solution therefore necessitates that every node have a complete copy of the data.
The data set is small ( < 10,000 records), and has low transactions per minute ( ~ 1 ). The code will run on the same physical server as the Aerospike daemon, so the client will read and write to Aerospike using the localhost IP of 127.0.0.1 exclusively. The end solution achieves redundancy by having multiple application servers, so if any local dependency on the server fails, then that entire application server is to be considered down.
My questions are:
- Is this viable using Aerospike?
- How can I configure the data to exist on every node; simply set “replication-factor” to the total number of nodes?
- This solution isn’t using XDR, although nodes exist across the Internet, so my plan is to use SSH tunnels to securely mesh all servers. This raises a problem however, which is, how do I configure Aerospike to cope with this unusually high latency between nodes?
I will attempt to update this thread with my progress and findings over time, as well as with any future questions or challenges that I encounter along the way.