[ATT: POOL OPS] PoolServerJ - scalable java pool backend
Posted: Sun Jul 31, 2011 7:29 am
Please excuse the blatant copy and paste from the bitcoin forum. Everything I've said there is relevant to namecoid as well. I haven't had a chance to test with namecoind as yet but I don't think there's any reason PoolServerJ shouldn't be compatible...
As a necessary component to a larger project I've had to write a complete pool server in java. The rest of the project is still in progress but the pool server is ready to release into beta. The key problem I needed to solve and part of the reason I rolled my own rather than just using pushpoold is scalability. Pushpoold is great at what it does but the difference I needed was to get around the namecoind bottleneck. PoolServerJ solves that problem rather neatly by caching work and also allowing the pool operator to run as many namecoin daemons as they want to and feed them all into the poolserver.
A few of the features of PoolServerJ:
* Work caching – caches work from bitcoind to handle short term spikes in requests
* DoS resilience with QoS support to ensure workers who’ve submitted valid work are serviced with priority
* Capable of pulling work from multiple bitcoin daemons to get around the getwork bottleneck and also to provide some redundancy
* Notify of block change via HTTP to a user configurable URL to support event triggered share processing
* Cached database handling (optional) to reduce round trips.
* Supports Mysql, Postgresql, sqlite3 (JDBC based so others can be added easily – currently only tested on mysql)
* Runs as a Windows service
* Longpolling support
* Integrated block monitoring using all available bitcoin daemon work sources
* Dump shares to Database, log file or stdout
* Safe restart – shares issued to client this block are dumped to file on shutdown and reloaded on startup so your miners won’t get stale shares if you restart a live server
* Only dependency is a Java 6+ JDK.
Please give it a go, feel free to send me any feedback, rip into it if you like.
You can find it here
The webserver may be a bit slow, I'm testing out EC2 micros to see how they handle basic web server duties so sorry about that. Will have a test pool up and running soon (as soon as I finish the front end).
As a necessary component to a larger project I've had to write a complete pool server in java. The rest of the project is still in progress but the pool server is ready to release into beta. The key problem I needed to solve and part of the reason I rolled my own rather than just using pushpoold is scalability. Pushpoold is great at what it does but the difference I needed was to get around the namecoind bottleneck. PoolServerJ solves that problem rather neatly by caching work and also allowing the pool operator to run as many namecoin daemons as they want to and feed them all into the poolserver.
A few of the features of PoolServerJ:
* Work caching – caches work from bitcoind to handle short term spikes in requests
* DoS resilience with QoS support to ensure workers who’ve submitted valid work are serviced with priority
* Capable of pulling work from multiple bitcoin daemons to get around the getwork bottleneck and also to provide some redundancy
* Notify of block change via HTTP to a user configurable URL to support event triggered share processing
* Cached database handling (optional) to reduce round trips.
* Supports Mysql, Postgresql, sqlite3 (JDBC based so others can be added easily – currently only tested on mysql)
* Runs as a Windows service
* Longpolling support
* Integrated block monitoring using all available bitcoin daemon work sources
* Dump shares to Database, log file or stdout
* Safe restart – shares issued to client this block are dumped to file on shutdown and reloaded on startup so your miners won’t get stale shares if you restart a live server
* Only dependency is a Java 6+ JDK.
Please give it a go, feel free to send me any feedback, rip into it if you like.
You can find it here
The webserver may be a bit slow, I'm testing out EC2 micros to see how they handle basic web server duties so sorry about that. Will have a test pool up and running soon (as soon as I finish the front end).