huststore
is a open source high performance distributed database system. It not only provides key-value storage service with extremely high performance, up to 100 thousand QPS, but also supports data structures like hash
, set
, sorted set
, etc. Also, it can store binary data as value from a key-value pair, and thus can be used as an alternative of Redis.
In addtion, huststore
implements a distributed message queue by integrating a special HA
module, features including message Push Stream, and message Publish-SubScribe, these features can be used as replacements of the corresponding features in rabbitmq and gearman.
huststore
has two core components, hustdb
and HA
. hustdb
is a database engine developed by our own, in the fundamental architecture. HA
is implemented as a nginx
module. It is well-known that nginx
is a industry-proven high quality code base, thus by inheriting it huststore
gains the below advantages:
-
High Throughput
hustdb
uses libevhtp, a open source network library, as the inner network communication system, by incorporating it with high-performance storage engine,hustdb
achieves a extremely high performance, the benchmark shows thatQPS
hits 100 thousand and even more. -
High Concurrency
Please refer to concurrency report ofnginx
for more details. -
High Availability
huststore
architecture providesReplication
(master-master) andload balance
support. Therefore, the availability ofHA
is guaranteed bymaster-worker
design. When one ofworker
process is down, themaster
will load anotherworkder
process, since multipleworker
s work independently, theHA
is guaranteed to work steadily. The fundamental design architecture ofhuststore
guarantees the high availability, by usingmaster-master
architecture, when one of the storage node fails,HA
module will re-direct the request to another livingmaster
node. Also, when a node failure happens,HA
cluster will automatically re-balance the data distribution, thus avoid single point of failure. In addition,HA
cluster uses a distributed architecture design by incorporating LVS as the director, eachHA
node is separated and work independently. When one of theHA
node is down,LVS
will re-direct the request to other availableHA
node, thus avoidsHA
's failure on single point node. -
Language-free Interface
huststore
usehttp
as the communication protocol, therefore the client side implementation is not limited in any specific programming language. -
Persistence
You do not need to worry about the loss of data as most of interfaces will persist data to disk. -
Support Binary Key-Value
-
Support Version Clock
- Distributed KV storage : HA (hustdb ha) + DB (hustdb)
- Distributed Message Queue : HA (hustmq ha) + DB (hustdb)
Tested platforms so far:
Platform | Description |
---|---|
CentOS 6.x | kernel >= 2.6.32 (GCC 4.4.7) |
Read the Quick Start.
Above includes detailed documents of design, deployments, API
usage and test samples. You can refer quickly to common problems in FAQ
part.
CPU: Intel(R) Xeon(R) CPU E5-2630 @ 2.30GHz (6cores x2)
Memory: 64G
Disk: Intel SSD DC S3500 Series (300GB, 2.5in SATA 6Gb/s, 20nm, MLC), x4, RAID10(softraid), SAS Controller: LSI Logic SAS2008 PCI-Express Fusion-MPT SAS-2
Network Adapter: Intel I350
OS: CentOS release 6.8 x86_64 (2.6.32-642.4.2.el6.x86_64)
abbr | concurrency | value (bytes) |
---|---|---|
C1000-V256 | 1000 | 256 |
C1000-V512 | 1000 | 512 |
C1000-V1024 | 1000 | 1024 |
C2000-V256 | 2000 | 256 |
C2000-V512 | 2000 | 512 |
C2000-V1024 | 2000 | 1024 |
See more details in here
huststore
is licensed under New BSD License, a very flexible license to use.
- XuRuibo(hustxrb, [email protected])
- ChengZhuo(jobs, [email protected])
- Nginx module development kit - hustngx