SkillAgentSearch skills...

Bitalostored

Bitalostored is a high-performance distributed storage system, core engine based on bitalosdb(self-developed), compatible with Redis protocol.

Install / Use

/learn @zuoyebang/Bitalostored
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

bitalos

Bitalostored is a high-performance distributed storage system, compatible with Redis protocol. 中文版

Introduction

  • Bitalostored is a high-performance distributed storage system, core engine based on bitalosdb, compatible with Redis protocol. As an alternative to Redis, it stores data with low-cost hard disk instead of expensive memory, takes full advantage of multi-core and provides excellent single-core performance, which can significantly reduce service costs.

  • Bitalostored contains three main projects: dashboard (visual management platform), stored (storage service), and proxy (proxy service). Current open-source version is stable, and provides a complete industrial grade solution.

Main Creator

  • Author: Xu Ruibo(hustxurb@163.com), joined Zuoyebang in December 2018 (working till now), is responsible for live class middle platform and Zuoyebang platform, and leads the storage technology team to develop Bitalos from 0 to 1.

  • Contributors: Xing Fu(wzxingfu@gmail.com), Lu Wenwei(422213023@qq.com), Liu Fang(killcode13@sina.com), Li Jingchen(cokin.lee@outlook.com)

Practice (Zuoyebang)

  • Application: supports Zuoyebang's online & offline KV storage

  • Peak traffic: QPS(30 Million), Network(8000Gbps)

  • Storage data: 1PB

  • Average reading time: 100μs, average writing time: 150μs

  • Availability: 99.999%

  • Stability: Since V1.0 was released in 2019, there have been zero online incidents

Key Technology

  • Compatible with Redis protocol, low integration cost. Supports most commands, including LUA, distributed transactions.

  • Efficient horizontal scaling, supporting up to 1024 shards and enabling shard expansion in seconds.

  • Multi-cloud disaster recovery, supporting multi-data room or multi-cloud deployment & management, with a complete downgrade and disaster recovery solution.

  • Multi-master architecture (supported in Enterprise Edition), based on CRDT, optimized data synchronization and consistency strategies, ensuring adaptive conflict resolution during multi-master writes and achieving eventual consistency.

  • High-performance data consistency architecture, based on Bitalos-Raft, with deeply optimized Raft protocol, which greatly improves write performance, and features more stable election strategy and data synchronization process.

    • High-performance log engine: bitaloslog, featuring log indexing based on bitalostree, supporting high-throughput write operations.
  • High-performance kernel equipped with self-developed KV engine: bitalosdb.

    • High-performance compressed indexing technology: bitalostree, a B+ tree based on ultra-large pages, featuring innovative index compression that eliminates write amplification in B+ trees and maximizes read performance.

    • High-performance KV index, vector computation implemented based on ASM assembly, with significantly improved performance.

    • High-performance K-KV index, multi-level vector index based on bitalostree, balancing index compression ratio and retrieval performance.

    • High-performance KV separation technology: bithash, based on a compact index structure, with O(1) retrieval efficiency and capable of independent GC.

    • High-performance storage structure that compresses Redis composite data types, significantly reducing I/O costs and improving system throughput.

Quick deployment

  • Applicable scenarios: Deploy a test cluster on a single machine(machine needs to be connected to the Internet), experience the functions of all components(dashboard, proxy, and stored), and cluster operation and maintenance

  • Deployment script: install.sh, follow the prompts to enter the number of shards (group), the number of slave nodes (slave), and the number of witness nodes (witness); the default number: proxy * 1, group * 2 (master * 2, slave * 2 , witness * 2)

  • Admin web: 127.0.0.1:8080, both of default user&password are demo

  • Service address: 127.0.0.1:8790, use command: redis-cli -h 127.0.0.1 -p 8790

  • Uninstall script: uninstall.sh

Performance

  • Currently, there are several well-known open-source storage systems (Redis-compatible) that serve as alternatives to Redis. We have selected two high-performance products (t*d* and *i*a) for performance comparison.

Hardware

CPU:    Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
Memory: 384GB
Disk:   2*3.5TB NVMe SSD

Program

  • Benchmark: memtier_benchmark (redis official tool)

  • NoSQL Program: thread number(8), cgroup cpu(8 core)

  • Command args: 2 data spec

--data-size=1024 --key-maximum=40672038 -t 16 -c 32 -n 81920
--data-size=128 --key-maximum=335544320 -t 16 -c 32 -n 655360
  • Command (e.g., --data-size=1024)
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="set __key__ __data__" --key-prefix="performance_test_key_prefix_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="get __key__" --key-prefix="performance_test_key_prefix_" --key-minimum=1 --key-maximum=40672038 --test-time=300
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="incr __key__" --key-prefix="int_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="lpush __key__ __data__" --key-prefix="list_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="sadd __key__ __data__" --key-prefix="set_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="zadd __key__ __key__ __data__" --key-prefix="" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="hset __key__ __data__ __key__" --key-prefix="hash_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 81920

incr is irrelevant to data size, only needs to be tested once.

Data

  • Total data size:40GB

  • Comparison dimensions: comand(SET、GET、LPUSH、SADD、ZADD、HSET) x value-size&count(1KB & 40,672,000、128B & 335,544,320), INCR

Config

  • t*d* & *i*a
Threads:8
Memtable:1GB
WAL:disable
Binlog:disable
Cache:40GB

Other parameters are set as same as the official recommended benchmark configuration
  • bitalostored
Threads:8
Memtable:1GB
WAL:disable
Raftlog:disable

Result

  • QPS

benchmark

Document

Technical architecture and documentation, refer to the official website: bitalos.zuoyebang.com

Technology accumulation(bitalosearch)

  • High performance distributed search & analysis engine, SQL protocol, focusing on AP scenarios, and has certain TP capabilities. It is being practiced internally, and the open source plan is to be determined

  • Compared to elasticsearch, bitalosearch has significant cost advantages. Hard disk consumption is saved 30%; data writing performance is improved by 25%; for complex analysis logic, query performance is improved by 20% to 500%

View on GitHub
GitHub Stars2.2k
CategoryData
Updated1d ago
Forks153

Languages

Go

Security Score

100/100

Audited on Apr 3, 2026

No findings