BunnyRedis是什么?
BunnyRedis is based on Redis and Kafka.
It is Distributed-Redis with storage and consistency.
BunnyRedis(OpenSource, 免费无限制使用)是在Redis的源码上改的,并用到了Kafka,它为了实现下面几个目的:
1. Distributed: 可以多机运行形成集群,这样,万一性能不够,可以scale-out,同时提高了HA -- High Availability。而且,不像Redis Cluster或者Redis Replication,发生任何意外(只要有后1台Kafka broker活着),它都不会丢失数据
2. Storage: 支持磁盘存储,使得可用的dataset超越内存的限制,可以有超过内存十倍或百倍的数据
3. Consistency: 它是强一致,即集群里的各个机器的数据都是完全一样的,即使多个Redis clients同时向几个bunny-redis服务器发出write的命令
4. Compatibility: 所有的Redis的数据结构(String, Bitmap, Geo, HyperLogLog, Hash, List, Set, Sorted Set or ZSet, Stream)都得以保留,并且绝大部分的Redis命令都是可以使用(包括Pipeline、Transaction、Pub/Sub、ACL、Admin),这样你前端的Redis客户软件几乎不用更改就具备了集群和存储能力;如果访问模式是典型互联网访问模型即有冷热数据之分的话,性能和原生的Redis基本一样;当前不兼容的特性有:TTL,Block operation,Lua script、Module;而Redis Replication, Sentinel, Cluster,AOF/RDB不支持也无需支持(BunnyRedis的功能已经替代)
5. Cost: 首先是磁盘替代内存,节省了大量的费用,以前用20个Redis Cluster机器所支持的集群,现在2台机器即可;其次是不用master/slave模式,避免浪费一半的机器,bunny-redis是master/master模式,即任何一个node都自由读写且所有node的数据一致;后是不用云存储,从而节省后端的机器开销和相应的网络开销,因为云存储也是成本,需要很多机器,而且一般是多个机器来支持一份数据的多个copy
6. Simplicity: 启停服务非常简单,运行执行文件或者ctrl-c or kill进程即可。但毕竟是分布式系统,还是比单机Redis要复杂很多,但比Redis Cluster要简单,你需要学习和熟悉后端Kafka的搭建,但一般而言,Kafka系统搭建成功,就很稳定以及很少改动,这时可以任意scale-out前面的bunny-redis而且操作极其简单
7. Multi-Pattern: 你可以用一台Linux机器就搭建整个系统;机器配置不需要很高配置,一般几个G内存和几十个G磁盘即可;也可以让一台机器作为Kafka后端,然后启动多个bunny-redis进程从而实现简单的集群;后,如果想达到高的HA理想境界,可以搭建Kafka多机集群(含Zookeeper多机集群),即没有任何一个组件是单点故障(Single Point of Failure),让运维安心睡觉
8. Extensibility: 可以附加Envoy Proxy实现整个服务的自动故障监测和自动故障转移,即客户端的Auto Failover;可以再用Proxy实现分片(shard)集群,即多个BunnyRedis集群再形成一个更大的集群向外统一服务,从而拥有无限的读写能力;可以用Kubernete实现自动扩容或缩容;可以支持多机房和异地多活;可以对接其他异性系统(如MySQL、ElasticSearch等)
根据你的需要,请访问下面的连接,或者点击右边的Wiki目录菜单
- [Why BunnyRedis: 为什么要开发BunnyRedis](https://github.com/szstonelee/bunnyredis/wiki/Why-redis-limited-to-mem)
- [Quick Start: 快速下载和运行BunnyRedis](https://github.com/szstonelee/bunnyredis/wiki/Quick-start)
- [Performance: 性能测试和对比](https://github.com/szstonelee/bunnyredis/wiki/One-node-benchmark)
- [Manual: 操作手册](https://github.com/szstonelee/bunnyredis/wiki/How-config-kafka)
- [如何优化BunnyRedis的运行](https://github.com/szstonelee/bunnyredis/wiki/Prevent-oom)
- [杂记:其他相关资料](https://github.com/szstonelee/bunnyredis/wiki/Debug-tools)