You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a simple and efficient Reed-Solomon implementation in Java,
which was originally built at Backblaze.
There is an overview of how the algorithm works in my blog
post.
The ReedSolomon class does the encoding and decoding, and is supported
by Matrix, which does matrix arithmetic, and Galois, which is a finite
field over 8-bit values.
For examples of how to use ReedSolomon, take a look at SampleEncoder
and SampleDecoder. They show, in a very simple way, how to break a
file into shards and encode parity, and then how to take a subset of
the shards and reconstruct the original file.
There is a Gradle build file to make a jar and run the tests. Running
it is simple. Just type: gradle build
We would like to send out a special thanks to James Plank at the
University of Tennessee at Knoxville for his useful papers on erasure
coding. If you'd like an intro into how it all works, take a look at
this introductory paper.
Performance Notes
The performance of the inner loop depends on the specific processor
you're running on. There are twelve different permutations of the
loop in this library, and the ReedSolomonBenchmark class will tell
you which one is faster for your particular application. The number
of parity and data shards in the benchmark, as well as the buffer
sizes, match the usage at Backblaze. You can set the parameters of
the benchmark to match your specific use before choosing a loop
implementation.
These are the speeds I got running the benchmark on a Backblaze
storage pod: