add “special_duration” for special cases
English
huststore 是一个高性能的分布式存储服务,不但提供了 数十万 QPS 级别的 kv 存储的功能,还提供了 hash、set、sort set 等一系列数据结构的支持,并且支持 二进制 的 kv 存储,可以替代 Redis 相关的功能。此外,huststore 还结合特有的 HA 模块实现了分布式消息队列的功能,包括消息的流式推送,以及消息的 发布-订阅 等功能。
huststore
数十万 QPS
kv
hash
set
sort set
Redis
HA
发布-订阅
huststore 分为 hustdb 以及 HA 模块两大部分。hustdb是自主研发的存储引擎。HA 以 nginx 模块的方式开发。nginx 是工业级的 http server 标准,得益于此,huststore 具备以下特性:
hustdb
nginx
http server
QPS
Replication
load balance
master-worker
worker
master
master-master
http
key-value
Version Clock
目前测试通过的平台包括:
请查看这里。
以上包含了 huststore 从设计、部署、API 到测试样例的详细文档,并提供了 FAQ 对常见问题进行快速检索。
API
FAQ
CPU: Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz (2socket*16cores) 内存: 192G 磁盘: Intel SSD DC S3520 Series (800GB, 2.5in SATA 6Gb/s, 3D1, MLC) 网卡: Intel Ethernet 10G 2P X520 Adapter 系统: CentOS Linux release 7.2.1511 (3.10.0-327.el7.x86_64)
测试 hustdb 在不同 worker 线程数量下,其 QPS 上限。
storage capacity : 512GB
concurrent connection : 1000
value : 1KB
md5db cache : 禁用
data compression : 禁用
CPU 未绑定
CPU
说明:横轴代表 hustdb 线程数,纵轴代表 QPS,value为1KB。
从以上测试图可以看出,hustdb 的 worker 线程数设置为36-40比较划算。
测试在最佳 worker 线程数(36)下,hustdb 的 RTT 表现。
RTT
concurrent connection : 200
# GET Thread Stats Avg Stdev Max +/- Stdev Latency 238.94us 95.42us 9.33ms 81.03% Req/Sec 31.44k 1.09k 36.30k 63.68% Latency Distribution 50% 220.00us 75% 288.00us 90% 343.00us 99% 482.00us 11333230 requests in 15.10s, 11.10GB read Requests/sec: 750635.81 Transfer/sec: 752.65MB -------------------------------------------------- [Latency Distribution] 0.01% 0.07ms [Latency Distribution] 0.1% 0.07ms [Latency Distribution] 0.5% 0.09ms [Latency Distribution] 1% 0.09ms [Latency Distribution] 3% 0.12ms [Latency Distribution] 5% 0.13ms [Latency Distribution] 10% 0.15ms [Latency Distribution] 20% 0.17ms [Latency Distribution] 30% 0.19ms [Latency Distribution] 40% 0.20ms [Latency Distribution] 50% 0.22ms [Latency Distribution] 60% 0.25ms [Latency Distribution] 70% 0.28ms [Latency Distribution] 80% 0.30ms [Latency Distribution] 90% 0.34ms [Latency Distribution] 91% 0.35ms [Latency Distribution] 92% 0.36ms [Latency Distribution] 93% 0.37ms [Latency Distribution] 93.5% 0.37ms [Latency Distribution] 94% 0.38ms [Latency Distribution] 94.5% 0.38ms [Latency Distribution] 95% 0.39ms [Latency Distribution] 95.5% 0.39ms [Latency Distribution] 96% 0.40ms [Latency Distribution] 96.5% 0.40ms [Latency Distribution] 97% 0.41ms [Latency Distribution] 97.5% 0.42ms [Latency Distribution] 98% 0.43ms [Latency Distribution] 98.5% 0.45ms [Latency Distribution] 99% 0.48ms [Latency Distribution] 99.1% 0.49ms [Latency Distribution] 99.2% 0.50ms [Latency Distribution] 99.3% 0.51ms [Latency Distribution] 99.4% 0.52ms [Latency Distribution] 99.5% 0.53ms [Latency Distribution] 99.6% 0.56ms [Latency Distribution] 99.7% 0.59ms [Latency Distribution] 99.8% 0.64ms [Latency Distribution] 99.9% 0.76ms [Latency Distribution] 99.99% 1.85ms [Latency Distribution] 99.999% 4.07ms # PUT Thread Stats Avg Stdev Max +/- Stdev Latency 495.13us 393.71us 21.29ms 93.06% Req/Sec 16.37k 1.33k 23.72k 74.26% Latency Distribution 50% 447.00us 75% 623.00us 90% 815.00us 99% 1.28ms 17628712 requests in 45.10s, 1.53GB read Requests/sec: 390880.11 Transfer/sec: 34.67MB -------------------------------------------------- [Latency Distribution] 0.01% 0.09ms [Latency Distribution] 0.1% 0.10ms [Latency Distribution] 0.5% 0.12ms [Latency Distribution] 1% 0.12ms [Latency Distribution] 3% 0.14ms [Latency Distribution] 5% 0.17ms [Latency Distribution] 10% 0.20ms [Latency Distribution] 20% 0.26ms [Latency Distribution] 30% 0.33ms [Latency Distribution] 40% 0.39ms [Latency Distribution] 50% 0.45ms [Latency Distribution] 60% 0.51ms [Latency Distribution] 70% 0.58ms [Latency Distribution] 80% 0.67ms [Latency Distribution] 90% 0.81ms [Latency Distribution] 91% 0.84ms [Latency Distribution] 92% 0.86ms [Latency Distribution] 93% 0.89ms [Latency Distribution] 93.5% 0.90ms [Latency Distribution] 94% 0.92ms [Latency Distribution] 94.5% 0.93ms [Latency Distribution] 95% 0.95ms [Latency Distribution] 95.5% 0.97ms [Latency Distribution] 96% 0.99ms [Latency Distribution] 96.5% 1.02ms [Latency Distribution] 97% 1.05ms [Latency Distribution] 97.5% 1.08ms [Latency Distribution] 98% 1.13ms [Latency Distribution] 98.5% 1.19ms [Latency Distribution] 99% 1.28ms [Latency Distribution] 99.1% 1.30ms [Latency Distribution] 99.2% 1.33ms [Latency Distribution] 99.3% 1.37ms [Latency Distribution] 99.4% 1.41ms [Latency Distribution] 99.5% 1.47ms [Latency Distribution] 99.6% 1.56ms [Latency Distribution] 99.7% 1.73ms [Latency Distribution] 99.8% 2.24ms [Latency Distribution] 99.9% 4.23ms [Latency Distribution] 99.99% 7.22ms [Latency Distribution] 99.999% 9.62ms
详情请参考这里
huststore is licensed under LGPL-3.0, a very flexible license to use.
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
English
huststore - 高性能分布式存储服务
huststore是一个高性能的分布式存储服务,不但提供了数十万 QPS级别的kv存储的功能,还提供了hash、set、sort set等一系列数据结构的支持,并且支持 二进制 的 kv 存储,可以替代Redis相关的功能。此外,huststore还结合特有的HA模块实现了分布式消息队列的功能,包括消息的流式推送,以及消息的发布-订阅等功能。特性
huststore分为hustdb以及HA模块两大部分。hustdb是自主研发的存储引擎。HA以nginx模块的方式开发。nginx是工业级的http server标准,得益于此,huststore具备以下特性:hustdb的网络层采用了开源的 libevhtp 来实现,结合自主研发的高性能存储引擎,性能测试QPS在 数十万 以上。参考
nginx的并发能力。huststore整体架构支持Replication(master-master),支持load balance。HA的可用性由nginx的master-worker架构所保证。当某一个worker意外挂掉时,master会自动再启动一个worker进程,而且多个worker之间是相互独立的,从而保证了HA的高可用性。huststore的高可用性由其整体架构特点保证。由于hustdb的存储节点采用了master-master的结构,当某一个存储节点挂掉时,HA会自动将请求打到另外一台master;同时HA会自动进行负载均衡,将数据分散存储在多个hustdb节点上,因此存储引擎不存在单点限制。同时
HA集群本身也是分布式的设计,而且每个HA节点都是独立的,当某一台HA挂掉时, LVS 会自动将请求打到其他可用的HA节点,从而解决了HA得单点限制。huststore使用http作为通用协议,因此客户端的实现不限制于语言。几乎所有的接口都会将数据持久化到硬盘,因此 你不用再担心数据的丢失。
key-valueVersion Clock运维
架构
部署
存储引擎
平台
目前测试通过的平台包括:
依赖
快速入门
请查看这里。
文档
以上包含了
huststore从设计、部署、API到测试样例的详细文档,并提供了FAQ对常见问题进行快速检索。性能
测试环境
测试场景 1 - Worker
测试目的
测试
hustdb在不同worker线程数量下,其QPS上限。测试条件
storage capacity : 512GB
concurrent connection : 1000
value : 1KB
md5db cache : 禁用
data compression : 禁用
CPU未绑定测试结果
说明:横轴代表
hustdb线程数,纵轴代表QPS,value为1KB。结论
从以上测试图可以看出,
hustdb的worker线程数设置为36-40比较划算。测试场景 2 - RTT
测试目的
测试在最佳
worker线程数(36)下,hustdb的RTT表现。测试条件
storage capacity : 512GB
concurrent connection : 200
value : 1KB
md5db cache : 禁用
data compression : 禁用
CPU未绑定测试结果
测试场景 3 - vs Redis
版本
测试工具
测试条件
storage capacity : 512GB
md5db cache : 禁用
data compression : 禁用
CPU未绑定参数说明
PUT
GET
详情请参考这里
LICENSE
huststoreis licensed under LGPL-3.0, a very flexible license to use.Authors
更多